Regressão e Mínimos quadrados Renato Assunção DCC-UFMG Nem sempre queremos interpolar Relação entre duas quantidades x e y Relação não é perfeita devido a: – Erros de medição – Ignorância sobre o fenômeno – Impossibilidade de obter todas as informações necessárias Fontes de imprecisão Relação é perfeita teoricamente mas existem erros de medição. A lei de OHM diz respeito à relação entre corrente, tensão e resistência: RI=V onde: – I é a corrente em ampéres – V é a tensão em volts – R é a resistência em ohms Fixe um resistência R e faça algumas medições de I e V. Elas não seguem a relação acima PERFEITAMENTE. Ignorância e falta de informação Não sabemos exatamente o que faz com que Y varie mas parece ser x. Taxa de desemprego e Inflação: relação inversa (curva de Phillips) Um gráfico de Y versus x mostra que existe uma relação, talvez não causal, entre y e x. Qual o mecanismo extao que relaciona x e y? Falta de informação Acreditamos que exista uma relacao perfeita entre x e y Mas não conseguimos medir x: caro, impossível, ou muito demorada, ou destrutiva do material... Medimos apenas um indicador grosseiro de x, uma quantidade z. A relação entre y e z não é perfeita. Relação entre x e y Mede-se n pares de pontos x e y Fazemos uma tabela com os pontos. Processo químico X = temperatura da reação Y = Produção (yield) 25 medições em diferentes níveis de temperatura do processo Gráfico dos 25 pontos Relação entre x e y Não é uma reta perfeita. Mas podemos ver que existe um reta α + βx subjacente tal que Y ≈ α + βx Como encontrar esta reta? Dados de mortalidade Y = Número de pessoas mortas, por faixa etária, dentre os membros do fundo de pensão do Banco do Brasil. Dados a partir de 20 anos e por idade simples: – 20 anos = 1 morte – 21 anos = 4 mortes – 22 anos = 3 mortes, etc. Número de mortes (Y) versus idade (X) Relação entre y e x? Morte está associada a idade. Maior idade maior chance de morrer num dado ano Queremos estimar a probabilidade de morte entre idades x e x+1 dado que está vivo à idade x Seja qx = Prob(Morte em [x, x+1) | vivo em x) Como qx está associado com x? Esperamos que qx cresça com x. Onde está essa relação no gráfico anterior? O que está faltando? Falta levar em conta mais um fator Precisamos saber o número de pessoas que estavam vivas no início do ano em cada faixa etária. Este número é o número Pop de EXPOSTOS AO RISCO de morte. Y é claramente associado com Pop. Se Pop = 5, Y não pode maior que 5! Duas faixas com probabilidade de morte iguais (digamos 0.01): – uma com Pop=100 esperamos contar 1 morte – Outra com Pop=10000 esperamos 100 mortes Y x idade (esq) e Pop x idade (dir) Plot de Y versus Pop=expostos Não é o que queremos ver... O que precisamos ver? Precisamos ver como a probabilidade de morte varia com idade. Divida o número de mortes Y pelo número de expostos Pop em cada idade Isto dá a proporção daqueles vivos em cada idade que acabaram falecendo durante o ano. Esta proporção deve estar associada com qx = probabilidade de morte por faixa etária. Plotar esta proporção versus idade. Não está bom ainda... O que falta? Ah…o que um logaritmo faz… Relação parece linear, não? Regressão LINEAR de log(y/exp) versus idade Parâmetros da regressão linear Como interpretar os parâmetros de uma regressão linear? Considere a relação teórica/postulada entre o valor esperado de Y quando x esta fixado num certo valor. Seja x = 0 + 1 x este valor esperado de Y quando x esta fixo y x = 0 + 1 x Incremento em x ao passar de x para x+1 é 1 0 x x+1 O incremento é o MESMO VALOR 1 QUALQUER QUE SEJA o x de onde se parte. Parâmetros da regressão linear - 2 Isto é, se x=20 e mudamos para x=21, o valor esperado de Y muda: ele varia da quantidade 1 Este incremento não depende do nível x de onde começamos: se x=45 e mudamos para x=46, o impacto no valor esperado de Y continua sendo o mesmo valor 1 Isto é uma forma muito simples de descrever o impacto em μx da ação de variar x em uma unidade. É um resumo muito simples de entender: mude x em uma unidade e você estará mudando o valor esperado de Y em 1 Interpretação dos parâmetros em GLM Como interpretar os parâmetros da regressão quando usamos log(Y)? Como antes, considere a relação teórica/postulada entre o valor esperado de Y (isto e’, x) e o valor de x – log(Yx/Expx) ≈ a + b*x ou seja Yx/Expx = qx ≈ exp(a + b*x) Temos qx = exp(a) * exp(b*x) = exp(a) * [ exp(b) ]x Ou seja qx = A * Bx – onde A = exp(a) e B=exp(b) Se mudamos da idade x para a idade x+1, a probabilidade de morte passa de qx = A * Bx para qx+1 = A * Bx+1 A razão entre estas duas probabilidades é igual a – qx+1/qx = ( A * Bx+1) / (A * Bx) = B Isto é, qx+1 = B qx E ISTO VALE PARA TODO x O que o parâmetro mede? Temos qx+1 = B qx onde B=exp() Pelo ajuste, 0.06 B exp(0.06) = 1.062 Isto é, a mortalidade aumenta em aprox 6,2% a cada ano adicional. Ao passar de 30 para 31 anos de idade, a chance de morrer em um ano aumenta em 6.2% Ao passar de 80 para 81 anos, a chance também aumenta nos mesmos 6.2% Modelos estatísticos Compare a situação de conhecimento atual com aquela com a qual começamos. Poucos cálculos depois e sabemos agora que, a cada ano de idade, a mortalidade aumenta em 6.2% aproximadamente. Podemos até mesmo obter um intervalo que diz quão boa (ou quão ruim) é essa aproximação. Um intervalo de 95% de confiança para 1 é dado por 0.060 +- 1.96 * 0.004 = (0.053, 0.068) – onde 0.04 0.003839 é o standard error da estimativa (ver saída do R) O I.C. de 95% para B=exp(1) é – (exp(0.053), exp(0.068)) = (1.054, 1.070) Modelos estatísticos Quanta economia de explicação, quanta concisão para explicar um fenômeno complexo. A cada ano adicional de idade aumentamos em aproximadamente 6.2% a chance de morrer em um ano. Com grande confiança podemos dizer que esse aumento está entre 5.4% e 7.0% Este é o poder, a beleza, a importância dos modelos estatísticos. Extrair toda a informação possível de um grande conjunto de dados. Informação é uma descrição sintética do mecanismo que está gerando os dados. E outros grupos? Os dados anteriores eram para homens não-fumantes. O quadro é outro para mulheres nãofumantes. E também outro para fumantes. Podemos rodar um modelo separado para cada conjunto de dados. Ajustes separados Masculino Não Fumante ˆ0 9,36440 Feminino ˆ0 8,67990 ˆ 0,03756 ˆ1 0,06007 1 Exp( 1 ) 1,0619 Exp( 1 ) 1,03827 Fumante ˆ0 10,06363 ˆ0 9,08423 ˆ1 0,08214 ˆ1 0,06498 Exp( 1 ) 1,08561 Exp( 1 ) 1,06713 Modelo único com covariáveis Modelo único com duas covariáveis: sexo e idade. y 0 1Idade 2 Sexo 3 Fumo 4 IdadeSexo 5 IdadeFumo Estimate Std. Error z value Pr(>|z|) (Intercept) -9.37176 0.18815 -49.80892 0.00000 idadetot 0.05967 0.00380 15.69628 0.00000 sexo 0.64565 0.32488 1.98738 0.04688 fumo -0.57489 0.35975 -1.59803 0.11004 idadetot:sexo -0.01949 0.00674 -2.89215 0.00383 idadetot:fumo 0.02183 0.00702 3.10992 0.00187 Ajuste CONJUNTO Masculino Não Fumante ˆ1 0.05967 Exp( ˆ ) 1,06149 1 Fumante ˆ2 ˆ3 ˆ6 0,49339 Exp( ˆ2 ˆ3 ˆ6 ) 0,61055 Feminino ˆ2 ˆ3 ˆ5 0,68583 Exp( ˆ2 ˆ3 ˆ5 ) 1,98541 ˆ2 ˆ3 ˆ4 ˆ5 ˆ6 0,13276 Exp( ˆ2 ˆ3 ˆ4 ˆ5 ˆ6 ) 1,14198 Graficos: The landmark Doll and Peto study (1976) on smoking and heart attack deaths. • Doll and Peto collected data on thousands of British doctors, many of whom smoked, and many did not. • The unit of analysis was the number of person-years, of which over 180,000 were collected. • The outcome of interest was death due to coronary thrombosis. • The explanatory variables of interest were smoking and age (because heart attack deaths increase with age). Data for the Doll and Peto study agecat smoker died person_y 1 1 1 32 2 1 1 104 3 1 1 206 4 1 1 186 5 1 1 102 1 0 1 2 2 0 1 12 3 0 1 28 4 0 1 28 5 0 1 31 1 1 0 52375 2 1 0 43144 3 1 0 28406 4 1 0 12477 5 1 0 5215 1 0 0 18788 2 0 0 10661 3 0 0 5682 4 0 0 2557 5 0 0 1431 * agecat = 1 for 35-44, 2 for 45-54, 3 for 55-64, 4 for 65-74, 5 for 75-84 * smoker = 1 for yes, 2 for no * deaths = deaths in group due to coronary thrombosis * person_y = total person-years of exposure for group Regression-style poisson model . poisson deaths smoker age1 age2 age3 age4, exposure(person_y) Poisson regression Number of obs = 10 LR chi2(5) = 922.93 Prob > chi2 = 0.0000 Log likelihood = -33.600153 Pseudo R2 = 0.9321 -----------------------------------------------------------------------------deaths | Coef. Std. Err. z P>|z| [95% Conf. Interval] ---------+-------------------------------------------------------------------smoker | .3545356 .1073741 3.302 0.001 .1440862 .564985 age1 | -3.700096 .1922195 -19.249 0.000 -4.07684 -3.323353 age2 | -2.216089 .1270503 -17.443 0.000 -2.465104 -1.967075 age3 | -1.072591 .1086726 -9.870 0.000 -1.285586 -.8595969 age4 | -.3496037 .1104853 -3.164 0.002 -.5661509 -.1330565 _cons | -4.219229 .1249837 -33.758 0.000 -4.464193 -3.974266 person_y | (exposure) ------------------------------------------------------------------------------ Predição de preços imobiliários Qual o valor de um imóvel? Existem softwares para fazer esta predição de forma automática a partir de varias características do imóvel. Menos subjetivo, mais rápido, primeira avaliação Como um software desses pode ser construído? Preços de imóveis Coletamos precos de 1500 imoveis a venda no mercado de BH Alguns sao caros, outros sao baratos. O que faz com que os precos dos imoveis variem? As três coisas mais importantes que afetam o valor de um imóvel... Localização Localização: – dividir a cidade em pequenos áreas Outra abordagem mais simples: – localização e’ status socio-economico; – status e’ mensurados por renda. – Renda e’ medida pelo IBGE em 2000 pequenas áreas da cidade. – Renda do “chefe do domicilio” Então: “localização” = renda media da região onde esta o imóvel. Outras características do imóvel Ano da construção Área total do imóvel Numero de quartos Numero de suítes Quantos aptos por andar? possui salão de festas? 0 ou 1 Possui piscina? 0 ou 1 ETC... Ao todo, 30 características numéricas para cada um dos 1500 imóveis. Visão matricial Organizar os dados como vetores e matrizes. preços: um vetor Y de dimensão 1500 As características: matriz 1500 x 30 – Cada linha = um imóvel – 1ª. coluna = renda media da regiao – 2ª. coluna = ano da construção – 3ª. coluna = área total – Etc. Visão matricial y1 y 2 Y y1499 y1500 renda1 renda 2 X renda1499 renda1500 Precos de 1500 imoveis Vetor de dimensao 1500 area1 area2 area1499 area1500 salao1 salao2 salao1499 salao1500 30 caracteristicas de 1500 imoveis Matriz X de dimensao 1500 x 30 Preco e’ uma soma ponderada Procuramos um modelo matematico simples que possa explicar, a partir das características, porque alguns imóveis são caros e outros são baratos. Área total: quanto maior o imóvel, maior o preço. Influencia de área Vamos fazer uma primeira aproximação, talvez muito grosseira e sujeita a revisões. Mas será um ponto de partida. Vamos imaginar que, APROXIMADAMENTE, o preço aumenta linearmente com a área do imóvel . Isto e’, que o preço Y ≈ a + b * area Um gráfico com 150 imóveis Rodrigo, usei o seguinte: area <- runif(150, 50, 500) y <- abs(50 + 2 * area + rnorm(150, 0, 100)) plot(area, y, ylim=c(0, max(y))) Deixe comentado no arquivo .tex para eu modificar mais tarde se necessario. Cada ponto e’ um imovel O eixo vertical tem os precos (em milhares de reais) O eixo horizontal tem as areas (em metros quadrados) Parece que o preco e’, grosseiramente, uma funcao linear da area Isto e’, Y ≈ a + b*area Um gráfico com 150 imoveis area <- runif(150, 50, 500) y <- abs(50 + 2 * area + rnorm(150, 0, 10 plot(area, y, ylim=c(0, max(y))) abline(50, 2) Reta no grafico corresponde a esta equacao: Preco Y ≈ 50 + 2*area Área não e’ tudo Dois imóveis com praticamente a mesma area possuem preços diferentes. O que causa a diferença? Idade do imóvel? Dois imóveis, com áreas iguais: se um for mais velho, provavelmente será mais barato. Ampliando o modelo inicial Podemos entao imaginar que a idade traz um impacto adicional ao nosso modelo de preco. Neste momento, temos Y ≈ a + b*area Já vimos ate mesmo que a ≈50 e b ≈ 2 Podemos agora acrescentar o impacto de idade imaginando que: – Y ≈ a + b*area + c*idade Como maior idade reduz o preço, devemos ter c < 0 Um modelo ainda mais complexo Mas o preço não depende apenas de area e idade. Dois imóveis com mesma área e mesma idade podem ter preços bem diferentes dependendo de: – Sua localizacao (renda da sua regiao) – Numero de suites – Numero de vagas na garagem – Etc. Cada fator pode ser acrescido ao modelo inicial de forma linear Modelo mais complexo Vamos considerar um modelo que, a partir das 30 características do imóvel, fornece uma predição do preço da seguinte forma: Y e’ aproximadamente igual a a + b*area + c*idade + d*localizacao + ETC... O problema e’: – como encontrar os valores de a, b, c, etc. que tornem a aproximação a melhor possível? O problema de forma matemática Queremos que cada um desses 1500 valores seja aproximadamente igual a uma combinação linear das 30 características (mais a constante a) y1 a b * area1 c * idade1 ... y2 a b * area2 c * idade2 ... y1500 a b * area1500 c * idade1500 ... Podemos escrever isto de forma matricial O problema de forma matemática Para facilitar a notação no futuro, vamos escrever os pesos que multiplicam cada característica como b0 (para a constante), b1 (para area), b2 (para idade),..., b30 para a presenca ou não de salão de festas y1 b0 b1 * area1 b2 * idade1 ... b30 * salao1 y2 b0 b1 * area2 b2 * idade2 ... b30 * salao2 y1500 b0 b1 * area1500 b2 * idade1500 ... b30 * salao1500 O problema de forma matricial y1 b0 b1 * area1 b2 * idade1 ... b30 * salao1 y2 b0 b1 * area2 b2 * idade2 ... b30 * salao2 y1500 b0 b1 * area1500 b2 * idade1500 ... b30 * salao1500 Coloque estes valores como um vetor de dimensão 1500 area1 idade1 salao1 1 area idade salao 1 2 2 2 b0 b1 b2 ... b30 area idade salao 1 4 4 4 area5 idade5 salao5 1 Forma vetorial y1 area1 idade1 salao1 1 y area idade salao 1 2 2 2 2 Y b0 b1 b2 ... b30 y4 area4 idade4 salao4 1 y5 area5 idade5 salao5 1 Y e’ um vetor de dimensão 1500 escrito como combinação linear de 31 vetores, cada um deles de dimensão 1500. Problema: encontrar os coeficientes b0, b1, ..., b30 que tornem a aproximação acima a melhor possível. A solução do problema Veremos com detalhes mais tarde no curso como resolver este problema. Neste momento, basta dizer que nosso problema fica reduzido a um sistema de equações lineares Ou ainda, a um problema de inverter uma certa matriz quadrada. A matriz de desenho X Seja X a matriz 1500 x 31 abaixo (note que ela tem uma coluna composta apenas de 1’s): 1 1 X 1 1 renda1 area1 renda2 area2 renda1499 area1499 renda1500 area1500 salao1 salao2 salao1499 salao1500 Solução: uma sistema linear A solução b=(b0, b1, ..., b30)t de nosso problema e’ dada pelo vetor 30 x 1 que e’ a solução desta equação matricial: XtX . b = Xt . Y Ou ainda, b = (XtX)-1 Xt . Y A matriz XtX ‘e de dimensão 31 x 31 Como vamos inverte-la? A geometria dos mínimos quadrados Explicar ...