Monitoria 2 de Econometria I - Regressão Linear Simples
Introdução
Definição
O modelo de regressão linear é dado por
\[Y_i = \beta_0 + \beta_1 X_i + u_i\] onde,
- o índice \(i\) percorre as observações, \(i=1,\dots,n\)
- \(Y_i\) é a variável dependente
- \(X_i\) é a variável independente
- \(Y_i = \beta_0 + \beta_1 X\) é a função de regressão populacional
- \(\beta_0\) é o intercepto da linha de regressão populacional
- \(\beta_1\) é a inclinação da linha de regressão populacional
- \(u_i\) é o termo de erro (ou)
Na regressão linear, o objetivo é modelar a relação entre uma variável dependente \(Y\) e uma ou mais variáveis explicativas denotadas por \(X_1, X_2, \dots, X_k\). Por enquanto focaremos no conceito de regressão linear simples, no qual existe apenas uma variável explicativa \(X_1\).
Na prática, o intercepto e a inclinação da reta de regressão populacional são desconhecidas. Portanto, devemos empregar dados para estimar ambos os parâmetros desconhecidos.
Contextualização e preparação da base de dados
A seguir, um exemplo do mundo real será utilizado. Queremos relacionar os resultados dos testes, \(score\), com a proporção aluno-professor, \(STR\) (student-teacher ratio), medida nas escolas californianas. A pontuação do teste é a média distrital de pontuações em leitura e matemática para alunos da quinta série.
Os dados vêm do conjunto de dados da California School
(CASchools
), do pacote AER
, sigla para
Applied Econometrics with R (Christian Kleiber e Zeileis
2022).
Depois de instalar o pacote com install.packages("AER")
e anexá-lo com library(AER)
o conjunto de dados pode ser
carregado usando a função data()
.
# instala o pacote AER (apenas uma vez)
## install.packages("AER")
## carrega o pacote AER
library(AER)
# carrega o dataset para seu environment
data(CASchools)
Podemos observar as 6 primeiras observações do dataset com a função
head
## district school county grades students teachers
## 1 75119 Sunol Glen Unified Alameda KK-08 195 10.90
## 2 61499 Manzanita Elementary Butte KK-08 240 11.15
## 3 61549 Thermalito Union Elementary Butte KK-08 1550 82.90
## 4 61457 Golden Feather Union Elementary Butte KK-08 243 14.00
## 5 61523 Palermo Union Elementary Butte KK-08 1335 71.50
## 6 62042 Burrel Union Elementary Fresno KK-08 137 6.40
## calworks lunch computer expenditure income english read math
## 1 0.5102 2.0408 67 6384.911 22.690001 0.000000 691.6 690.0
## 2 15.4167 47.9167 101 5099.381 9.824000 4.583333 660.5 661.9
## 3 55.0323 76.3226 169 5501.955 8.978000 30.000002 636.3 650.9
## 4 36.4754 77.0492 85 7101.831 8.978000 0.000000 651.9 643.5
## 5 33.1086 78.4270 171 5235.988 9.080333 13.857677 641.8 639.9
## 6 12.3188 86.9565 25 5580.147 10.415000 12.408759 605.7 605.4
Análise Exploratória dos Dados
str()
## 'data.frame': 420 obs. of 14 variables:
## $ district : chr "75119" "61499" "61549" "61457" ...
## $ school : chr "Sunol Glen Unified" "Manzanita Elementary" "Thermalito Union Elementary" "Golden Feather Union Elementary" ...
## $ county : Factor w/ 45 levels "Alameda","Butte",..: 1 2 2 2 2 6 29 11 6 25 ...
## $ grades : Factor w/ 2 levels "KK-06","KK-08": 2 2 2 2 2 2 2 2 2 1 ...
## $ students : num 195 240 1550 243 1335 ...
## $ teachers : num 10.9 11.1 82.9 14 71.5 ...
## $ calworks : num 0.51 15.42 55.03 36.48 33.11 ...
## $ lunch : num 2.04 47.92 76.32 77.05 78.43 ...
## $ computer : num 67 101 169 85 171 25 28 66 35 0 ...
## $ expenditure: num 6385 5099 5502 7102 5236 ...
## $ income : num 22.69 9.82 8.98 8.98 9.08 ...
## $ english : num 0 4.58 30 0 13.86 ...
## $ read : num 692 660 636 652 642 ...
## $ math : num 690 662 651 644 640 ...
summary()
## district school county grades
## Length:420 Length:420 Sonoma : 29 KK-06: 61
## Class :character Class :character Kern : 27 KK-08:359
## Mode :character Mode :character Los Angeles: 27
## Tulare : 24
## San Diego : 21
## Santa Clara: 20
## (Other) :272
## students teachers calworks lunch
## Min. : 81.0 Min. : 4.85 Min. : 0.000 Min. : 0.00
## 1st Qu.: 379.0 1st Qu.: 19.66 1st Qu.: 4.395 1st Qu.: 23.28
## Median : 950.5 Median : 48.56 Median :10.520 Median : 41.75
## Mean : 2628.8 Mean : 129.07 Mean :13.246 Mean : 44.71
## 3rd Qu.: 3008.0 3rd Qu.: 146.35 3rd Qu.:18.981 3rd Qu.: 66.86
## Max. :27176.0 Max. :1429.00 Max. :78.994 Max. :100.00
##
## computer expenditure income english
## Min. : 0.0 Min. :3926 Min. : 5.335 Min. : 0.000
## 1st Qu.: 46.0 1st Qu.:4906 1st Qu.:10.639 1st Qu.: 1.941
## Median : 117.5 Median :5215 Median :13.728 Median : 8.778
## Mean : 303.4 Mean :5312 Mean :15.317 Mean :15.768
## 3rd Qu.: 375.2 3rd Qu.:5601 3rd Qu.:17.629 3rd Qu.:22.970
## Max. :3324.0 Max. :7712 Max. :55.328 Max. :85.540
##
## read math
## Min. :604.5 Min. :605.4
## 1st Qu.:640.4 1st Qu.:639.4
## Median :655.8 Median :652.5
## Mean :655.0 Mean :653.3
## 3rd Qu.:668.7 3rd Qu.:665.9
## Max. :704.0 Max. :709.5
##
describe()
## CASchools
##
## 14 Variables 420 Observations
## --------------------------------------------------------------------------------
## district
## n missing distinct
## 420 0 420
##
## lowest : 61382 61457 61499 61507 61523, highest: 75051 75085 75119 75135 75440
## --------------------------------------------------------------------------------
## school
## n missing distinct
## 420 0 409
##
## lowest : Ackerman Elementary Adelanto Elementary Alexander Valley Union Elementary Alisal Union Elementary Allensworth Elementary
## highest: Woodlake Union Elementary Woodside Elementary Woodville Elementary Wright Elementary Yreka Union Elementary
## --------------------------------------------------------------------------------
## county
## n missing distinct
## 420 0 45
##
## lowest : Alameda Butte Calaveras Contra Costa El Dorado
## highest: Trinity Tulare Tuolumne Ventura Yuba
## --------------------------------------------------------------------------------
## grades
## n missing distinct
## 420 0 2
##
## Value KK-06 KK-08
## Frequency 61 359
## Proportion 0.145 0.855
## --------------------------------------------------------------------------------
## students
## n missing distinct Info Mean Gmd .05 .10
## 420 0 391 1 2629 3378 139.9 164.0
## .25 .50 .75 .90 .95
## 379.0 950.5 3008.0 7119.5 10351.1
##
## lowest : 81 92 101 103 104, highest: 19402 20927 21338 25151 27176
## --------------------------------------------------------------------------------
## teachers
## n missing distinct Info Mean Gmd .05 .10
## 420 0 374 1 129.1 163 7.076 9.000
## .25 .50 .75 .90 .95
## 19.662 48.565 146.350 332.174 522.290
##
## lowest : 4.85 5 5.1 5.5 5.6
## highest: 924.57 953.5 1051.58 1186.7 1429
## --------------------------------------------------------------------------------
## calworks
## n missing distinct Info Mean Gmd .05 .10
## 420 0 411 1 13.25 11.93 0.745 1.996
## .25 .50 .75 .90 .95
## 4.395 10.520 18.981 27.178 34.210
##
## lowest : 0 0.0506 0.08 0.1016 0.1517
## highest: 52.2199 55.0323 58.7522 71.7131 78.9942
## --------------------------------------------------------------------------------
## lunch
## n missing distinct Info Mean Gmd .05 .10
## 420 0 407 1 44.71 31.23 2.416 10.082
## .25 .50 .75 .90 .95
## 23.282 41.751 66.865 83.123 90.302
##
## lowest : 0 0.1239 0.1734 0.3033 0.5367
## highest: 94.9712 97.7597 98.1308 98.6056 100
## --------------------------------------------------------------------------------
## computer
## n missing distinct Info Mean Gmd .05 .10
## 420 0 270 1 303.4 384.5 15.0 25.0
## .25 .50 .75 .90 .95
## 46.0 117.5 375.2 790.1 1248.6
##
## lowest : 0 4 7 8 10, highest: 2001 2232 2401 2889 3324
## --------------------------------------------------------------------------------
## expenditure
## n missing distinct Info Mean Gmd .05 .10
## 420 0 420 1 5312 677.4 4441 4616
## .25 .50 .75 .90 .95
## 4906 5215 5601 6108 6540
##
## lowest : 3926.07 4016.42 4023.53 4079.13 4136.25
## highest: 7542.04 7593.41 7614.38 7667.57 7711.51
## --------------------------------------------------------------------------------
## income
## n missing distinct Info Mean Gmd .05 .10
## 420 0 337 1 15.32 7.013 7.751 8.930
## .25 .50 .75 .90 .95
## 10.639 13.728 17.629 22.766 30.639
##
## lowest : 5.335 5.699 6.216 6.577 6.613
## highest: 41.7341 43.23 49.939 50.677 55.328
## --------------------------------------------------------------------------------
## english
## n missing distinct Info Mean Gmd .05 .10
## 420 0 372 0.998 15.77 18.77 0.000 0.000
## .25 .50 .75 .90 .95
## 1.941 8.778 22.970 43.784 53.440
##
## lowest : 0 0.0633312 0.116414 0.132979 0.141643
## highest: 76.6653 77.0058 80.1233 80.4201 85.5397
## --------------------------------------------------------------------------------
## read
## n missing distinct Info Mean Gmd .05 .10
## 420 0 322 1 655 22.86 620.7 629.4
## .25 .50 .75 .90 .95
## 640.4 655.8 668.7 680.5 688.5
##
## lowest : 604.5 605.5 605.7 608.9 610 , highest: 698.9 699.1 700.9 701.3 704
## --------------------------------------------------------------------------------
## math
## n missing distinct Info Mean Gmd .05 .10
## 420 0 324 1 653.3 21.25 625.4 629.7
## .25 .50 .75 .90 .95
## 639.4 652.4 665.8 676.8 685.0
##
## lowest : 605.4 609 612.5 613.4 616 , highest: 701.1 701.7 703.6 707.7 709.5
## --------------------------------------------------------------------------------
Cálculo das variáveis utilizadas
As duas variáveis nas quais estamos interessados não estão incluídas
na base de dados. No entanto, é possível calcular ambas a partir dos
dados fornecidos. Para obter a proporção aluno-professor (\(STR\)), basta dividir o número de alunos
pelo número de professores. A pontuação média do teste (\(score\)) é a média aritmética da pontuação
do teste de leitura e da pontuação do teste de matemática. O próximo
trecho de código mostra como as duas variáveis podem ser construídas
como vetores e como elas são anexadas a CASchools
.
# tidyverse é útil para utilizar as principais funções de manipulação e limpeza de base de dados
library(tidyverse)
CASchools = CASchools %>%
mutate(STR = students/teachers,
score = (read+math)/2)
Estatísticas
CASchools %>%
summarise(media_STR = mean(STR),
media_score = mean(score),
sd_STR = sd(STR),
sd_score = sd(score))
## media_STR media_score sd_STR sd_score
## 1 19.64043 654.1565 1.891812 19.05335
Gráfico de Dispersão
CASchools %>%
ggplot(aes(x = STR, y = score)) +
geom_point() +
xlab("STR - Proporcao Aluno/Professor (X)") +
ylab("Test Score (Y)")
Vemos que os pontos estão bem dispersos e que as variáveis parecem negativamente correlacionadas. Ou seja, esperamos observar pontuações mais baixas nos testes em turmas maiores.
Estimando os coeficientes do modelo de Regressão Linear Simples por Mínimos Quadrados Ordinários
Os estimadores MQO (OLS, em inglês) da inclinação \(\beta_1\) e do intercepto \(\beta_0\) de regressão linear simples são
\[ \begin{align} \hat\beta_1 & = \frac{ \sum_{i = 1}^n (X_i - \overline{X})(Y_i - \overline{Y}) } { \sum_{i=1}^n (X_i - \overline{X})^2}, \\ \\ \hat\beta_0 & = \overline{Y} - \hat\beta_1 \overline{X}. \end{align} \]
e os valores previstos \(\widehat{Y}_i\) e o resíduo \(\hat{u}_i\) são
\[ \begin{align} \widehat{Y}_i & = \hat\beta_0 + \hat\beta_1 X_i,\\ \\ \hat{u}_i & = Y_i - \widehat{Y}_i. \end{align} \]
O intercepto estimado \(\hat\beta_0\), o parâmetro de inclinação \(\hat\beta_1\) e os resíduos (\(\hat u_i\)) são calculados a partir de uma amostra de \(n\) observações de \(X_i\) e \(Y_i\). Esses são estimadores populacionais desconhecidos de \(\beta_0\), \(\beta_1\) e \(u_i\)
Existem muitas maneiras de estimimar \(\hat\beta_0\) e \(\hat\beta_1\) no R. Vamos fazer manualmente
e pela função lm()
Estimando Manualmente
\(\hat{\beta_1}\)
attach(CASchools) # permite utilizar as variáveis no dataset CASchools diretamente
#y = score
#x = STR
# computa o beta_1_hat
beta_1 <- sum((STR - mean(STR)) * (score - mean(score))) / sum((STR - mean(STR))^2)
beta_1
## [1] -2.279808
\(\hat{Y_i}\)
## [1] 658.1474 649.8608 656.3069 659.3620 656.3659 650.1308
Estimando pela função lm()
# estima o modelo e atribui o resultado a linear_model
linear_model <- lm(score ~ STR, data = CASchools)
# printa o output de linear_model
linear_model
##
## Call:
## lm(formula = score ~ STR, data = CASchools)
##
## Coefficients:
## (Intercept) STR
## 698.93 -2.28
Recuperando os valores de \(\hat{Y_i}\) e \(\hat{u_i}\) de
linear_model
\(\hat{Y_i}\)
## 1 2 3 4 5 6
## 658.1474 649.8608 656.3069 659.3620 656.3659 650.1308
Observe que os valores coincidem ao estimado manualmente!
Medidas de Ajuste
Depois de ajustar um modelo de regressão linear, uma questão natural é quão bem o modelo descreve os dados. Visualmente, isto equivale a avaliar se as observações estão fortemente agrupadas em torno da linha de regressão. Tanto o coeficiente de determinação (\(R^2\)) quanto o erro padrão da regressão (\(SER\)) medem quão bem a linha de regressão OLS se ajusta aos dados.
Coeficiente de determinação (R^2)
\(R^2\), o coeficiente de determinação, é a fração da variância amostral de \(Y_i\) que é explicada por \(X_i\). Matematicamente, o \(R^2\) pode ser escrito como a razão entre a soma dos quadrados explicados e a soma dos quadrados totais.
A soma dos quadrados explicados (ESS) é a soma dos desvios quadrados dos valores previsto \(\hat{Y_i}\) da média de \(Y_i\). A soma dos quadrados totais (TSS) é a soma dos desvios quadrados de \(Y_i\) da sua média. Assim, temos
\[ \begin{align} ESS & = \sum_{i = 1}^n \left( \hat{Y_i} - \overline{Y} \right)^2, \\ TSS & = \sum_{i = 1}^n \left( Y_i - \overline{Y} \right)^2, \\ R^2 & = \frac{ESS}{TSS}. \end{align} \]
Dado que \(TSS = ESS + RSS\), podemos reescrever da seguinte forma:
\[ R^2 = 1- \frac{RSS}{TSS} \]
onde \(RSS\) é a soma dos resíduos quadrados, uma medida para os erros cometidos ao prever o \(Y\) através de \(X\). O \(RSS\) é definido como
\[ RSS = \sum_{i=1}^n \hat{u}_i^2 \]
\(R^2\) encontra-se entre \(0\) e \(1\). É fácil ver que um ajuste perfeito, ou seja, nenhum erro cometido ao ajustar a reta de regressão, implica em \(RSS = 0\) e, consequentemente, \(R^2 = 1\). Analogamente, se a nossa linha de regressão estimada não explicar qualquer variação no \(Y\), então temos \(ESS = 0\) e, consequentemente, \(R^2 = 1\).
Erro Padrão da Regressão (SER)
O erro padrão da regressão (\(SER\)) é um estimador do desvio padrão dos resíduos \(\hat{u}_i\). Assim, mede a magnitude de um desvio típico da linha de regressão, ou seja, a magnitude de um resíduo típico.
\[ SER = s_{\hat{u}} = \sqrt{s_{\hat{u}}^2} \ \ \ \text{onde} \ \ \ s_{\hat{u} }^2 = \frac{1}{n-2} \sum_{i = 1}^n \hat{u}^2_i = \frac{SSR}{n - 2} \]
Lembre-se que \(u_i\) é não observado. Por isso utilizamos contrapartes estimadas, os resíduos \(\hat{u}\).
Calculando as medidas de ajuste através do comando
summary()
Ambas as medidas de ajuste podem ser obtidas usando a função
summary()
com um objeto lm
fornecido como
único argumento. Embora a função lm()
imprima apenas os
coeficientes estimados no console, summary() fornece informações
adicionais predefinidas, como a regressão \(R^2\) e a \(SER\).
##
## Call:
## lm(formula = score ~ STR, data = CASchools)
##
## Residuals:
## Min 1Q Median 3Q Max
## -47.727 -14.251 0.483 12.822 48.540
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 698.9329 9.4675 73.825 < 2e-16 ***
## STR -2.2798 0.4798 -4.751 2.78e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 18.58 on 418 degrees of freedom
## Multiple R-squared: 0.05124, Adjusted R-squared: 0.04897
## F-statistic: 22.58 on 1 and 418 DF, p-value: 2.783e-06
O \(R^2\) na saída é chamado de R-quadrado múltiplo e tem um valor de \(0.051\). Por isso, \(5.1%\) da variância da variável dependente \(score\) explicada pela variável explicativa \(STR\). Ou seja, a regressão explica pouco da variância de \(score\), e grande parte da variação nas pontuações dos testes permanece inexplicada.
O \(SER\) é chamado de erro padrão dos resíduos e é igual \(18.58\). A unidade do \(SER\) é igual à unidade da variável dependente. Ou seja, em média, o desvio entre a pontuação real alcançada no teste e a linha de regressão é \(18.58\) pontos.
Calculando as medidas de ajuste manualmente
Agora, vamos verificar se summary()
usa as mesmas
definições quando os calculamos manualmente.
Descobrimos que os resultados coincidem. Observe que os valores
fornecidos por summary()
são arredondados para duas casas
decimais.