class: center, middle, inverse, title-slide .title[ # Introdução aos Modelos Lineares ] .subtitle[ ## com códigos em R ] .author[ ###
] .date[ ### março de 2024 ] --- # Agenda .pull-left[ - O que é e quando usar - Parâmetro vs estimador - Teste de Hipóteses e valor-p - Interpretação dos parâmetros - Regressão Linear Múltipla - Preditores Categóricos - Transformações Não Lineares dos Preditores ] --- ## Referências - [Aprendizagem de Máquinas: Uma Abordagem Estatística (Rafael Izbicki e Thiago Mendonça, 2020)](http://www.rizbicki.ufscar.br/AME.pdf) - [Introduction to Statistical Learning (Hastie, et al)](https://hastie.su.domains/ISLR2/ISLRv2_website.pdf) - [Ciência de Dados: Fundamentos e Aplicações](https://curso-r.github.io/main-regressao-linear/referencias/Ci%C3%AAncia%20de%20Dados.%20Fundamentos%20e%20Aplica%C3%A7%C3%B5es.%20Vers%C3%A3o%20parcial%20preliminar.%20maio%20Pedro%20A.%20Morettin%20Julio%20M.%20Singer.pdf) --- class: middle, center, inverse # Introdução --- # Motivação Somos consultores e fomos contratados para dar conselhos para uma empresa aumentar as suas vendas. Obtivemos o seguinte banco de dados <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-2-1.png" style="display: block; margin: auto;" /> * PERGUNTA: Jornal tem mais retorno do que as demais mídias? Quantas vendas terão se eu investir X em jornais? --- # Motivação Somos consultores e fomos contratados para dar conselhos para uma empresa aumentar as suas vendas. Obtivemos o seguinte banco de dados <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-3-1.png" style="display: block; margin: auto;" /> * PERGUNTA: Jornal tem mais retorno do que as demais mídias? Quantas vendas terão se eu investir X em jornais? --- # Modo - Regressão e Classificação Existem dois principais tipos de problemas em modelagem estatística: .pull-left[ ## Regressão __Y__ é uma variável quantitativa contínua - Volume de vendas - Peso - Temperatura - Valor de Ações ] .pull-right[ ## Classificação __Y__ é uma variável qualitativa discreta. - Fraude/Não Fraude - Pegou em dia/Não pagou - Cancelou assinatura/Não cancelou - Gato/Cachorro/Cavalo/Outro ] --- # Exemplo de reta de regressão <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-5-1.png" style="display: block; margin: auto;" /> --- # Definições e Nomenclaturas ### A tabela por trás (do excel, do sql, etc.) <table> <thead> <tr> <th style="text-align:left;"> midia </th> <th style="text-align:right;"> investimento </th> <th style="text-align:right;"> vendas </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> TV </td> <td style="text-align:right;"> 220.3 </td> <td style="text-align:right;"> 24.7 </td> </tr> <tr> <td style="text-align:left;"> newspaper </td> <td style="text-align:right;"> 25.6 </td> <td style="text-align:right;"> 5.3 </td> </tr> <tr> <td style="text-align:left;"> newspaper </td> <td style="text-align:right;"> 38.7 </td> <td style="text-align:right;"> 18.3 </td> </tr> <tr> <td style="text-align:left;"> radio </td> <td style="text-align:right;"> 42.3 </td> <td style="text-align:right;"> 25.4 </td> </tr> <tr> <td style="text-align:left;"> radio </td> <td style="text-align:right;"> 43.9 </td> <td style="text-align:right;"> 22.3 </td> </tr> <tr> <td style="text-align:left;"> TV </td> <td style="text-align:right;"> 139.5 </td> <td style="text-align:right;"> 10.3 </td> </tr> <tr> <td style="text-align:left;"> radio </td> <td style="text-align:right;"> 11.0 </td> <td style="text-align:right;"> 7.2 </td> </tr> <tr> <td style="text-align:left;"> radio </td> <td style="text-align:right;"> 1.6 </td> <td style="text-align:right;"> 6.9 </td> </tr> </tbody> </table> --- # Definições e Nomenclaturas * `\(X_1\)`, `\(X_2\)`, ..., `\(X_p\)`: variáveis explicativas (ou variáveis independentes ou *features* ou preditores). - `\(\boldsymbol{X} = {X_1, X_2, \dots, X_p}\)`: conjunto de todas as *features*. * __Y__: variável resposta (ou variável dependente ou *target*). * __Ŷ__: valor **esperado** (ou predição ou estimado ou *fitted*). * `\(f(X)\)` também é conhecida também como "Modelo" ou "Hipótese". ## No exemplo: - `\(X_1\)`: `midia` - indicadador de se a propaganda é para jornal, rádio, ou TV. - `\(X_2\)`: `investimento` - valor do orçamento * __Y__: `vendas` - qtd vendida --- # Definições e Nomenclaturas ### **Observado** *versus* **Esperado** - __Y__ é um valor **observado** (ou verdade ou *truth*) - __Ŷ__ é um valor **esperado** (ou predição ou estimado ou *fitted*). - __Y__ - __Ŷ__ é o resíduo (ou erro) Por definição, `\(\hat{Y} = f(x)\)` que é o valor que a função `\(f\)` retorna. <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-7-1.png" width="750" style="display: block; margin: auto;" /> --- # Definições e Nomenclaturas ### A tabela por trás depois das predições <table> <thead> <tr> <th style="text-align:left;"> midia </th> <th style="text-align:right;"> investimento </th> <th style="text-align:right;"> vendas </th> <th style="text-align:right;"> regressao_linear </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> TV </td> <td style="text-align:right;"> 220.3 </td> <td style="text-align:right;"> 24.7 </td> <td style="text-align:right;font-weight: bold;color: purple !important;"> 17.8 </td> </tr> <tr> <td style="text-align:left;"> newspaper </td> <td style="text-align:right;"> 25.6 </td> <td style="text-align:right;"> 5.3 </td> <td style="text-align:right;font-weight: bold;color: purple !important;"> 13.8 </td> </tr> <tr> <td style="text-align:left;"> newspaper </td> <td style="text-align:right;"> 38.7 </td> <td style="text-align:right;"> 18.3 </td> <td style="text-align:right;font-weight: bold;color: purple !important;"> 14.4 </td> </tr> <tr> <td style="text-align:left;"> radio </td> <td style="text-align:right;"> 42.3 </td> <td style="text-align:right;"> 25.4 </td> <td style="text-align:right;font-weight: bold;color: purple !important;"> 15.0 </td> </tr> <tr> <td style="text-align:left;"> radio </td> <td style="text-align:right;"> 43.9 </td> <td style="text-align:right;"> 22.3 </td> <td style="text-align:right;font-weight: bold;color: purple !important;"> 15.1 </td> </tr> <tr> <td style="text-align:left;"> TV </td> <td style="text-align:right;"> 139.5 </td> <td style="text-align:right;"> 10.3 </td> <td style="text-align:right;font-weight: bold;color: purple !important;"> 13.6 </td> </tr> <tr> <td style="text-align:left;"> radio </td> <td style="text-align:right;"> 11.0 </td> <td style="text-align:right;"> 7.2 </td> <td style="text-align:right;font-weight: bold;color: purple !important;"> 13.4 </td> </tr> <tr> <td style="text-align:left;"> radio </td> <td style="text-align:right;"> 1.6 </td> <td style="text-align:right;"> 6.9 </td> <td style="text-align:right;font-weight: bold;color: purple !important;"> 12.9 </td> </tr> </tbody> </table> --- # Por que ajustar uma f? * Predição * Inferência ## Predição Em muitas situações X está disponível facilmente mas, Y não é fácil de descobrir. (Ou mesmo não é possível descobrí-lo). Queremos que `\(\hat{Y} = \hat{f}(X)\)` seja uma boa estimativa (preveja bem o futuro). Neste caso não estamos interessados em como é a estrutura `\(\hat{f}\)` desde que ela apresente predições boas para `\(Y\)`. Por exemplo: * Meu cliente vai atrasar a fatura no mês que vem? --- # Por que ajustar uma f? * Predição * Inferência ## Inferência Em inferência estamos mais interessados em entender a relação entre as variáveis explicativas `\(X\)` e a variável resposta `\(Y\)`. Por exemplo: * A droga é eficaz para o tratamento da doença X? * **Quanto que é** o impacto nas vendas para cada real investido em TV? Neste material focaremos em **inferência**. --- # Por que ajustar uma f? <img src="static/img/usos_do_ml.png" style="display: block; margin-left: auto; margin-right: auto;" width=80%></img> --- class: letra ## O que é e quando usar .pull-left[ ### Regressão Linear Simples $$ y = \beta_0 + \beta_1x $$ ### Exemplo: $$ dist = \beta_0 + \beta_1speed $$ ] .pull-right[ <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-9-1.png" style="display: block; margin: auto;" /> ] .footnote[ Ver [ISL](https://www.ime.unicamp.br/~dias/Intoduction%20to%20Statistical%20Learning.pdf) página 61 (Simple Linear Regression). ] --- ## O que é e quando usar .pull-left[ ### Regressão Linear Simples $$ y = \beta_0 + \beta_1x $$ ### Exemplo: $$ dist = \beta_0 + \beta_1speed $$ ] .pull-right[ <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-10-1.png" style="display: block; margin: auto;" /> ] .footnote[ Ver [ISL](https://www.ime.unicamp.br/~dias/Intoduction%20to%20Statistical%20Learning.pdf) página 61 (Simple Linear Regression). ] --- ## O que é e quando usar .pull-left[ ### Regressão Linear Simples $$ y = \beta_0 + \beta_1x $$ ### Exemplo: $$ dist = \beta_0 + \beta_1speed $$ ] .pull-right[ <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-11-1.png" style="display: block; margin: auto;" /> ] --- ## O que é e quando usar .pull-left[ ### Regressão Linear Simples $$ y = \beta_0 + \beta_1x $$ ] .pull-right[ ] ```r # ajuste de uma regressão linear simples no R *melhor_reta <- lm(dist ~ speed, data = cars) melhor_reta ``` ``` ## ## Call: ## lm(formula = dist ~ speed, data = cars) ## ## Coefficients: ## (Intercept) speed ## -17.579 3.932 ``` --- ## Métricas - "Melhor reta" segundo o quê? Queremos a reta que **erre menos**. Exemplo de medida de erro: **R**oot **M**ean **S**quared **E**rror. $$ RMSE = \sqrt{\frac{1}{N}\sum(y_i - \hat{y_i})^2} $$ <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-13-1.png" style="display: block; margin: auto;" /> --- ## Métricas - "Melhor reta" segundo o quê? Queremos a reta que **erre menos**. Exemplo de medida de erro: **R**oot **M**ean **S**quared **E**rror. $$ RMSE = \sqrt{\frac{1}{N}\sum(y_i - (\hat{\beta_0} + \hat{\beta_1}x))^2} $$ Ou seja, nosso **objetivo** é ## Encontrar `\(\hat{\beta}_0\)` e `\(\hat{\beta}_1\)` que nos retorne o ~menor~ RMSE. --- ## Qual o valor ótimo para `\(\beta_0\)` e `\(\beta_1\)`? No nosso exemplo, a nossa **HIPÓTESE** é de que $$ dist = \beta_0 + \beta_1speed $$ Então podemos escrever o Erro Quadrático Médio como $$ EQM = \frac{1}{N}\sum(y_i - \hat{y_i})^2 = \frac{1}{N}\sum(y_i - \color{red}{(\hat{\beta}_0 + \hat{\beta}_1speed)})^2 $$ Com ajuda do Cálculo é possível mostrar que os valores ótimos para `\(\beta_0\)` e `\(\beta_1\)` são `\(\hat{\beta}_1 = \frac{\sum(x_i - \bar{x})(y_i - \bar{y})}{\sum(x_i - \bar{x})^2}\)` `\(\hat{\beta}_0 = \bar{y} - \hat{\beta}_1\bar{x}\)` .letrinha[ Já que vieram do EQM, eles são chamados de **Estimadores de Mínimos Quadrados**. ```r # lembrete: exercício 2 do script! ``` ] --- class: letra ## Depois de estimar... $$ \hat{y} = \hat{\beta}_0 + \hat{\beta}_1x $$ ### Exemplo: $$ \hat{dist} = \hat{\beta}_0 + \hat{\beta}_1speed $$ Colocamos um `\(\hat{}\)` em cima dos termos para representar "estimativas". Ou seja, `\(\hat{y}_i\)` é uma estimativa de `\(y_i\)`. .letrinha[ No nosso exemplo, - `\(\hat{\beta}_0\)` é uma estimativa de `\(\beta_0\)` e vale `-17.579`. - `\(\hat{\beta}_1\)` é uma estimativa de `\(\beta_1\)` e vale `3.932`. - `\(\hat{dist}\)` é uma estimativa de `\(dist\)` e vale `-17.579 + 3.932 x speed`. ```r # Exercício: se speed for 15 m/h, quanto que # seria a distância dist esperada? ``` ] --- class: letra ## Curiosidade - Método numérico Podemos encontrar a reta que **erre menos** por meio de algoritmos numéricos. Exemplo: Modelo de regressão linear `\(f(x) = \beta_0 + \beta_1 x\)`. <img src="static/img/0_D7zG46WrdKx54pbU.gif" style="position: fixed; width: 60%; "> .footnote[ Fonte: [https://alykhantejani.github.io/images/gradient_descent_line_graph.gif](https://alykhantejani.github.io/images/gradient_descent_line_graph.gif) ] --- ## Teste de Hipóteses e valor-p Exemplo: relação entre População Urbana e Assassinatos. .pull-left[ <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-16-1.png" style="display: block; margin: auto;" /> Modelo proposto: `$$y = \beta_0 + \beta_1 x$$` ] .pull-right-letrinha[ Hipótese do pesquisador: > "Assassinatos não estão relacionados com a proporção de população urbana de uma cidade." Tradução da hipótese em termos matemáticos: $$ H_0: \beta_1 = 0 \space\space\space\space\space vs \space\space\space\space H_a: \beta_1 \neq 0 $$ Se a hipótese for verdade, então o `\(\beta_1\)` deveria ser zero. Porém, os dados disseram que `\(\hat{\beta}_1 = 0.02\)`. #### 0.02 é diferente de 0.00? ] --- class: letrinha ## 0.02 é diferente de 0.00? Saída do R .letrinha[ ``` ## ## Call: ## lm(formula = Murder ~ UrbanPop, data = USArrests) ## ## Residuals: ## Min 1Q Median 3Q Max ## -6.537 -3.736 -0.779 3.332 9.728 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 6.41594 2.90669 2.207 0.0321 * *## UrbanPop 0.02093 0.04333 0.483 0.6312 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 4.39 on 48 degrees of freedom ## Multiple R-squared: 0.00484, Adjusted R-squared: -0.01589 ## F-statistic: 0.2335 on 1 and 48 DF, p-value: 0.6312 ``` ] --- class: letra ## 0.02 é diferente de 0.00? Conceito importante: Os estimadores ( `\(\hat{\beta}_0\)` e `\(\hat{\beta}_1\)` no nosso caso) têm distribuições de probabilidade. ### Simulação de 1000 retas (ajustadas com dados diferentes).  --- ## 0.02 é diferente de 0.00? Conceito importante: Os estimadores ( `\(\hat{\beta}_0\)` e `\(\hat{\beta}_1\)` no nosso caso) têm distribuições de probabilidade. ### A Teoria Assintótica nos fornece o seguinte resultado: .pull-left[ `\(t = \frac{\hat{\beta_1} - \beta_1}{\hat{\sigma}_{\beta_1}} \overset{\text{a}}{\sim} t(N - 2)\)` #### Em que `\(\hat{\sigma}_{\beta_1} = \sqrt{\frac{EQM}{\sum(x_i - \bar{x})^2}}\)` Usamos essas distribuições assintóticas para testar as hipóteses. ] .pull-right[ <div style="width:200px; height:100px"> <img src="static/img/dnorm_params.png"> </div> ] --- ## 0.02 é diferente de 0.00? Conceito importante: Os estimadores ( `\(\hat{\beta}_0\)` e `\(\hat{\beta}_1\)` no nosso caso) têm distribuições de probabilidade. ### A Teoria Assintótica nos fornece o seguinte resultado: .pull-left[ `\(t = \frac{\hat{\beta_1} - \beta_1}{\hat{\sigma}_{\beta_1}} \overset{\text{a}}{\sim} t(N - 2)\)` #### Em que `\(\hat{\sigma}_{\beta_1} = \sqrt{\frac{EQM}{\sum(x_i - \bar{x})^2}}\)` Usamos essas distribuições assintóticas para testar as hipóteses. ] .pull-right[ No nosso exemplo, a hipótese é `\(H_0: \beta_1 = 0\)`, então `$$t = \frac{0.02 - 0}{0.04} = 0.48$$` <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-18-1.png" style="display: block; margin: auto;" /> ] --- ## 0.02 é diferente de 0.00? .letrinha[ Então agora podemos tomar decisão! Se a estimativa cair muito distante da distribuição t da hipótese 0, decidimos por **rejeitá-la**. Caso contrário, decidimos por **não rejeitá-la** como verdade. ]  .letrinha[ ``` ## NO R: ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 6.41594 2.90669 2.207 0.0321 * ## UrbanPop 0.02093 0.04333 0.483 0.6312 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ``` ] --- ## Interpretação dos parâmetros .pull-left[ <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-20-1.png" style="display: block; margin: auto;" /> $$ y = \color{darkgblue}{\beta_0} + \color{darkgreen}{\beta_1}x $$ ] .pull-right-letrinha[ ### Interpretações matemáticas `\(\color{darkgblue}{\beta_0}\)` é o lugar em que a reta cruza o eixo Y. `\(\color{darkgreen}{\beta_1}\)` é a derivada de Y em relação ao X. É quanto Y varia quando X varia em 1 unidade. ### Interpretações estatísticas `\(\color{darkgblue}{\beta_0}\)` é a distância percorrida esperada quando o carro está parado (X = 0). `\(\color{darkgreen}{\beta_1}\)` é o efeito médio na distância por variar 1 ml/h na velocidade do carro. ] --- ## Teste de Hipóteses e valor-p ### Exercício 3 do script: No R, use a função `summary(melhor_reta)` (ver slide 9) para decidir se `speed` está associado com `dist`. Descubra o valor-p associado. lembrete: o banco de dados se chama `cars`. ### Exercício 4 do script: Interprete o parâmetro `\(\beta_1\)`. --- ## Intervalo de confiança para `\(\beta_1\)` #### Intervalo de 95% `$$[\hat{\beta} - 1,96 * \hat{\sigma}_{\beta_1}, \hat{\beta} + 1,96 * \hat{\sigma}_{\beta_1}]$$` #### Intervalo de 90% `$$[\hat{\beta} - 1,64 * \hat{\sigma}_{\beta_1}, \hat{\beta} + 1,64 * \hat{\sigma}_{\beta_1}]$$` #### Intervalo de 1 - `\(\alpha\)`% `$$[\hat{\beta}_1 - q_{\alpha} * \hat{\sigma}_{\beta_1}, \hat{\beta} + q_{\alpha} * \hat{\sigma}_{\beta_1}]$$` em que `\(q_\alpha\)` é o quantil da `\(Normal(0, 1)\)`. .letrinha[ Ver [ISL](https://www.ime.unicamp.br/~dias/Intoduction%20to%20Statistical%20Learning.pdf) página 66 (Assessing the Accuracy of the Model). ] --- ## O modelo está bom? ### EQM e EPR ERP significa *E*rro *P*adrão dos *R*esíduos e é definido como $$ EPR = \frac{\sum(y_i - \hat{y_i})^2}{N - 2} = \frac{SQR}{N - 2} $$ O **2** no denominador decorre do fato de termos **2 parâmetros** para estimar no modelo. - Se `\(y_i = \hat{y}_i \space\space\space \rightarrow \color{green}{EPR = 0 \downarrow}\)` - Se `\(y_i >> \hat{y}_i \rightarrow \color{red}{EPR = alto \uparrow}\)` - Se `\(y_i << \hat{y}_i \rightarrow \color{red}{EPR = alto \uparrow}\)` Problema: Como sabemos se o EPR é grande ou pequeno? .letrinha[ Ver [ISL](https://www.ime.unicamp.br/~dias/Intoduction%20to%20Statistical%20Learning.pdf) página 68 (Assessing the Accuracy of the Model). ] --- ## O modelo está bom? ### R-quadrado ( `\(R^2\)` ) $$ R^2 = 1 - \frac{\sum(y_i - \color{salmon}{\hat{y_i}})^2}{\sum(y_i - \color{royalblue}{\bar{y}})^2} = 1 - \frac{\color{salmon}{SQR}}{\color{royalblue}{SQT}} $$ .pull-left[ <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-21-1.png" style="display: block; margin: auto;" /> ] .pull-right[ `\(R^2 \approx 1 \rightarrow \color{salmon}{SQR} << \color{royalblue}{SQT}\)`. `\(R^2 \approx 0 \rightarrow \color{salmon}{reta} \text{ em cima da } \color{royalblue}{reta}\)`. Problema do `\(R^2\)` é que ele sempre aumenta conforme novos preditores vão sendo incluídos. ] .letrinha[ Ver [ISL](https://www.ime.unicamp.br/~dias/Intoduction%20to%20Statistical%20Learning.pdf) página 68 (Assessing the Accuracy of the Model). ] --- ## O modelo está bom? ### R-quadrado ajustado $$ R^2 = 1 - \frac{\color{salmon}{SQR}}{\color{royalblue}{SQT}}\frac{\color{royalblue}{N-1}}{\color{salmon}{N-p}} $$ Em que `\(p\)` é o número de parâmetros do modelo (no caso da regressão linear simples, `\(p = 2\)`). ```r # lembrete: exercícios 5 e 6 do script! ``` --- class: letra # Regressão Linear Múltipla .pull-left[ ### Regressão Linear Simples $$ y = \beta_0 + \beta_1x $$ ### Exemplo: $$ dist = \beta_0 + \beta_1speed $$ ```r ### No R: lm(dist ~ speed, data=cars) ``` ] .pull-right[ <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-24-1.png" style="display: block; margin: auto;" /> .letrinha[ Ver [ISL](https://www.ime.unicamp.br/~dias/Intoduction%20to%20Statistical%20Learning.pdf) página 61 (Simple Linear Regression). ] ] --- class: letra # Regressão Linear Múltipla .pull-left[ ### Regressão Linear Múltipla $$ y = \beta_0 + \beta_1x_1 + \dots + \beta_px_p $$ ### Exemplo: $$ mpg = \beta_0 + \beta_1wt + \beta_2disp $$ ```r ### No R: lm(mpg ~ wt + disp, data=mtcars) ``` ] .pull-right[
] --- class: letra ## Regressão Linear Múltipla ### Regressão Linear Simples $$ y = \beta_0 + \beta_1x $$ ### Regressão Linear Múltipla $$ y = \beta_0 + \beta_1x_1 + \beta_2x_2 + \dots + \beta_px_p $$ ```r # ajuste de uma regressão linear múltipla no R *modelo_boston <- lm(medv ~ lstat + age, data = Boston) summary(modelo_boston) # Estimate Std.Error t value Pr(>|t|) # (Intercept) 33.22 0.73 45.4 < 2e-16 *** # lstat -1.03 0.04 -21.4 < 2e-16 *** # age 0.03 0.01 2.8 0.00491 ** ``` --- ## Preditores Categóricos ### Preditor com apenas 2 categorias Tamanho das nadadeiras de pinguins são diferentes entre os sexos? <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-28-1.png" style="display: block; margin: auto;" /> ```r summary(lm(flipper_length_mm ~ sex, data = penguins)) # Coefficients: # Estimate Std. Error t value Pr(>|t|) # (Intercept) 197.364 1.057 186.792 < 2e-16 *** # sexmale 7.142 1.488 4.801 2.39e-06 *** ``` --- ## Preditores Categóricos ### Preditor com apenas 2 categorias Tamanho das nadadeiras de pinguins são diferentes entre os sexos? <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-30-1.png" style="display: block; margin: auto;" /> $$ y_i = \beta_0 + \beta_1x_i \space\space\space\space\space\space \text{em que}\space\space\space\space\space\space x_i = \Bigg\\{\begin{array}{ll}1&\text{se a i-ésimo animal for }\texttt{female}\\\\ 0&\text{se a i-ésimo animal for } \texttt{male}\end{array} $$ .letrinha[ ```r # lembrete: exercícios 8, 9 e 10 do script! ``` Ver [ISL](https://www.ime.unicamp.br/~dias/Intoduction%20to%20Statistical%20Learning.pdf) página 84 (Predictors with Only Two Levels). ] --- ## Preditores Categóricos ### Preditor com 3 ou mais categorias .pull-left-letrinha[ <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-32-1.png" style="display: block; margin: auto;" /> ```r summary(lm(flipper_length_mm ~ species, data = penguins)) # Estimate Std. Error t value Pr(>|t|) # (Intercept) 189.9536 0.5405 351.454 < 2e-16 *** # speciesChinstrap 5.8699 0.9699 6.052 3.79e-09 *** # speciesGentoo 27.2333 0.8067 33.760 < 2e-16 *** ``` ] .pull-right[ Modelo `$$y_i = \beta_0 + \beta_1x_{1i} + \beta_2x_{2i}$$` Em que `\(x_{1i} = \Bigg \{ \begin{array}{ll} 1 & \text{se for }\texttt{Chinstrap}\\0&\text{caso contrário}\end{array}\)` `\(x_{2i} = \Bigg \{ \begin{array}{ll} 1 & \text{se for }\texttt{Gentoo}\\0&\text{caso contrário}\end{array}\)` ] --- ## Preditores Categóricos ### Preditor com 3 ou mais categorias "One hot enconding" ou "Dummies" ou "Indicadores". <table> <thead> <tr> <th style="text-align:left;"> species </th> <th style="text-align:right;"> (Intercept) </th> <th style="text-align:right;"> speciesChinstrap </th> <th style="text-align:right;"> speciesGentoo </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> Adelie </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:left;"> Chinstrap </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:left;"> Gentoo </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:left;"> Adelie </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:left;"> Gentoo </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:right;"> 1 </td> </tr> <tr> <td style="text-align:left;"> Adelie </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:left;"> Adelie </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:left;"> Chinstrap </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 0 </td> </tr> </tbody> </table> --- ## Preditores Categóricos ### Preditor com 3 ou mais categorias Interpretação dos parâmetros: `\(y_{i} = \left\{ \begin{array}{ll} \beta_0 & \text{se for }\texttt{Adelie}\\ \beta_0 + \beta_1&\text{se for } \texttt{Chinstrap}\\ \beta_0 + \beta_2&\text{se for } \texttt{Gentoo}\end{array}\right.\)` ```r # interprete cada um dos três parâmetros individualmente. # lembrete: exercício 11 do script! ``` --- ## Transformações Não Lineares dos Preditores ### Exemplo: log .pull-left[ Modelo real: `\(y = 10 + 0.5log(x)\)` ] .pull-right[ Modelo proposto: `\(\small y = \beta_0 + \beta_1log(x)\)` ] <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-37-1.png" style="display: block; margin: auto;" /> Outras transformações comuns: raíz quadrada, polinômios, Box-Cox, ... .letrinha[ ```r # lembrete: exercício 13 do script! ``` ] --- ## Transformações Não Lineares dos Preditores ### Exemplo: log .pull-left[ Modelo real: `\(y = 10 + 0.5log(x)\)` ] .pull-right[ Modelo proposto: `\(\small y = \beta_0 + \beta_1log(x)\)` ] <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-39-1.png" style="display: block; margin: auto;" /> Outras transformações comuns: raíz quadrada, polinômios, Box-Cox, ... ```r # lembrete: exercício 13 do script! ``` --- ## Transformações Não Lineares dos Preditores ### Gráfico de Resíduos <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-41-1.png" style="display: block; margin: auto;" /> --- ## Transformações Não Lineares dos Preditores ### Exemplo: Regressão Polinomial .pull-left-letrinha[ Modelo real: `\(y = 500 + 0.4(x-10)^3\)` <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-42-1.png" style="display: block; margin: auto;" /> ] .pull-right-letrinha[ Modelo proposto: `\(y = \beta_0 + \beta_1x + \beta_2x^2 + \beta_3x^3\)` <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-43-1.png" style="display: block; margin: auto;" /> ] .letrinha[ ```r # lembrete: exercício 14 do script! ``` ] --- ## Transformações Não Lineares dos Preditores ### Exemplo: Regressão Polinomial .pull-left-letrinha[ Modelo real: `\(y = 500 + 0.4(x-10)^3\)` <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-45-1.png" style="display: block; margin: auto;" /> ] .pull-right-letrinha[ Modelo proposto: `\(y = \beta_0 + \beta_1x + \beta_2x^2 + \beta_3x^3\)` <table class="table" style="font-size: 16px; margin-left: auto; margin-right: auto;"> <thead> <tr> <th style="text-align:right;"> y </th> <th style="text-align:right;"> x </th> <th style="text-align:right;"> x2 </th> <th style="text-align:right;"> x3 </th> </tr> </thead> <tbody> <tr> <td style="text-align:right;"> 456.5 </td> <td style="text-align:right;"> 5.3 </td> <td style="text-align:right;"> 28.2 </td> <td style="text-align:right;"> 149.7 </td> </tr> <tr> <td style="text-align:right;"> 492.5 </td> <td style="text-align:right;"> 7.4 </td> <td style="text-align:right;"> 55.4 </td> <td style="text-align:right;"> 412.2 </td> </tr> <tr> <td style="text-align:right;"> 548.4 </td> <td style="text-align:right;"> 11.5 </td> <td style="text-align:right;"> 131.3 </td> <td style="text-align:right;"> 1503.9 </td> </tr> <tr> <td style="text-align:right;"> 758.7 </td> <td style="text-align:right;"> 18.2 </td> <td style="text-align:right;"> 329.9 </td> <td style="text-align:right;"> 5993.0 </td> </tr> <tr> <td style="text-align:right;"> 444.7 </td> <td style="text-align:right;"> 4.0 </td> <td style="text-align:right;"> 16.3 </td> <td style="text-align:right;"> 65.6 </td> </tr> <tr> <td style="text-align:right;"> 748.3 </td> <td style="text-align:right;"> 18.0 </td> <td style="text-align:right;"> 322.8 </td> <td style="text-align:right;"> 5800.8 </td> </tr> <tr> <td style="text-align:right;"> 820.5 </td> <td style="text-align:right;"> 18.9 </td> <td style="text-align:right;"> 357.0 </td> <td style="text-align:right;"> 6744.3 </td> </tr> </tbody> </table> ] .letrinha[ ```r # lembrete: exercício 14 do script! ``` ] --- ## Transformações Não Lineares dos Preditores ### Gráfico de Resíduos <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-48-1.png" style="display: block; margin: auto;" /> --- ## Interações Interação entre duas variáveis explicativas: `Species` e `Sepal.Length` <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-49-1.png" height="330" style="display: block; margin: auto;" /> --- ## Interações Modelo proposto (Matemático): Seja `y = Sepal.Width` e `x = Sepal.Length`, `$$\small \begin{array}{l} y = \beta_0 + \beta_1x\end{array}$$` <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-50-1.png" height="260" style="display: block; margin: auto;" /> Modelo proposto (em R): `Sepal.Width ~ Sepal.Length` ```r # lembrete: exercícios 14 ao 17 do script! ``` --- ## Interações Modelo proposto (Matemático): Seja `y = Sepal.Width` e `x = Sepal.Length`, `$$\small \begin{array}{l} y = \beta_0 + \beta_1x + \beta_2I_{versicolor} + \beta_3I_{virginica}\end{array}$$` <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-52-1.png" height="260" style="display: block; margin: auto;" /> Modelo proposto (em R): `Sepal.Width ~ Sepal.Length + Species` ```r # lembrete: exercícios 14 ao 17 do script! ``` --- ## Interações Modelo proposto (Matemático): Seja `y = Sepal.Width` e `x = Sepal.Length`, `$$\small \begin{array}{l} y = \beta_0 + \beta_1x + \beta_2I_{versicolor} + \beta_3I_{virginica} + \beta_4\color{red}{xI_{versicolor}} + \beta_5\color{red}{xI_{virginica}}\end{array}$$` <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-54-1.png" height="260" style="display: block; margin: auto;" /> Modelo proposto (em R): `Sepal.Width ~ Sepal.Length * Species` ```r # lembrete: exercícios 14 ao 17 do script! ``` --- ## Heterocedasticidade <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-56-1.png" style="display: block; margin: auto;" /> --- ## Heterocedasticidade <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-57-1.png" style="display: block; margin: auto;" /> --- ## Heterocedasticidade <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-58-1.png" style="display: block; margin: auto;" /> --- ## Heterocedasticidade ### Problema - O estimador `\(\hat{\sigma}_{\beta_1} = \sqrt{\frac{EQM}{\sum(x_i - \bar{x})^2}}\)` deixa de ter as melhores propriedades. Poderíamos ter conclusões estranhas para `\(\beta_1\)`. ### Diagnóstico - Visualização dos resíduos; - Testes formais (Breuch-Pagan, White, etc) ### Tratamentos - Transformações na variável resposta. log(y), sqrt(y), 1/y, etc; - Mínimos Quadrados Ponderados/Generalizados --- ## Multicolinearidade .pull-left[ <img src="02-intro-regressao-linear_files/figure-html/unnamed-chunk-59-1.png" style="display: block; margin: auto;" /> ] .pull-right[ Modelo 1: sem colineares <table class="table" style="font-size: 13px; margin-left: auto; margin-right: auto;"> <thead> <tr> <th style="text-align:left;"> term </th> <th style="text-align:right;"> estimate </th> <th style="text-align:left;"> std.error </th> <th style="text-align:right;"> statistic </th> <th style="text-align:right;"> p.value </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> (Intercept) </td> <td style="text-align:right;"> -173.41 </td> <td style="text-align:left;"> <span style=" color: black !important;padding-right: 4px; padding-left: 4px; background-color: white !important;text-align: r;">43.83</span> </td> <td style="text-align:right;"> -3.96 </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:left;"> Limit </td> <td style="text-align:right;"> 0.17 </td> <td style="text-align:left;"> <span style=" color: white !important;padding-right: 4px; padding-left: 4px; background-color: darkred !important;text-align: r;">0.01</span> </td> <td style="text-align:right;"> 34.50 </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:left;"> Age </td> <td style="text-align:right;"> -2.29 </td> <td style="text-align:left;"> <span style=" color: black !important;padding-right: 4px; padding-left: 4px; background-color: white !important;text-align: r;">0.67</span> </td> <td style="text-align:right;"> -3.41 </td> <td style="text-align:right;"> 0 </td> </tr> </tbody> </table> Modelo 2: com colineares <table class="table" style="font-size: 13px; margin-left: auto; margin-right: auto;"> <thead> <tr> <th style="text-align:left;"> term </th> <th style="text-align:right;"> estimate </th> <th style="text-align:left;"> std.error </th> <th style="text-align:right;"> statistic </th> <th style="text-align:right;"> p.value </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> (Intercept) </td> <td style="text-align:right;"> -377.54 </td> <td style="text-align:left;"> <span style=" color: black !important;padding-right: 4px; padding-left: 4px; background-color: white !important;text-align: r;">45.25</span> </td> <td style="text-align:right;"> -8.34 </td> <td style="text-align:right;"> 0.00 </td> </tr> <tr> <td style="text-align:left;"> Limit </td> <td style="text-align:right;"> 0.02 </td> <td style="text-align:left;"> <span style=" color: white !important;padding-right: 4px; padding-left: 4px; background-color: darkred !important;text-align: r;">0.06</span> </td> <td style="text-align:right;"> 0.38 </td> <td style="text-align:right;"> 0.70 </td> </tr> <tr> <td style="text-align:left;"> Rating </td> <td style="text-align:right;"> 2.20 </td> <td style="text-align:left;"> <span style=" color: black !important;padding-right: 4px; padding-left: 4px; background-color: white !important;text-align: r;">0.95</span> </td> <td style="text-align:right;"> 2.31 </td> <td style="text-align:right;"> 0.02 </td> </tr> </tbody> </table> ] Problema: Instabilidade numérica, desvios padrão inflados e interpretação comprometida. Soluções: eliminar uma das variáveis muito correlacionadas ou Consultar o VIF (Variance Inflation Factor) --- ## Multicolinearidade ### VIF (Variance Inflation Factor) Detecta preditores que são combinações lineares de outros preditores. **Procedimento:** Para cada preditor `\(X_j\)`, 1) Ajusta regressão linear com as demais: `lm(X_j ~ X_1 + ... + X_p)`. 2) Calcula-se o R-quadrado dessa regressão e aplica a fórmula abaixo `$$\small VIF(\hat{\beta}_j) = \frac{1}{1 - R^2_{X_j|X_{-j}}}$$` 3) Remova o preditor se VIF maior que 5 (regra de bolso). ```r # lembrete: exercícios 18 do script! ``` .footnote[ Ver [ISL](https://www.ime.unicamp.br/~dias/Intoduction%20to%20Statistical%20Learning.pdf) página 101. ] --- ## Limitações da Regressão Linear - Variável resposta Não Normal - Variável resposta Positiva - Variável resposta com mais de duas categorias - Relação funcional não linear entre X e Y - Muitas variáveis disponíveis - Muitas interações para testar entre as preditoras