Para que a inferência seja válida, pressupomos:
Com esses pressupostos, as estimativas OLS são não-viesadas, eficientes e seguem distribuição t.
\[ \text{Var}(\hat{\beta}_j) = \sigma^2 (X'X)^{-1}_{jj} \]
\[ \hat{\sigma}^2 = \frac{1}{n - k} \sum_{i=1}^n \hat{u}_i^2 \]
\[ se(\hat{\beta}_j) = \sqrt{\hat{\sigma}^2 (X'X)^{-1}_{jj}} \]
Hipótese nula: \(H_0: \beta_j = \beta_{j0}\)
\[ t = \frac{\hat{\beta}_j - \beta_{j0}}{se(\hat{\beta}_j)} \]
Regra de decisão:
Rejeita \(H_0\) se \(|t| > t_{\alpha/2, n-k}\)
\[ \hat{\beta}_1 = 2.5, \quad se(\hat{\beta}_1) = 0.5 \] \[ t = \frac{2.5}{0.5} = 5 \] - Valor crítico para \(t_{0.05, 28} \approx 2.048\) → Rejeitamos \(H_0\) - Conclusão: \(X_1\) afeta significativamente \(Y\).
\(\hat{\beta}_2 = 0.75\)
\(se(\hat{\beta}_2) = 0.25\)
\(n = 32\), \(k = 3\), \(df = 29\)
Teste \(H_0: \beta_2 = 0\)
\[ t = \frac{0.75}{0.25} = 3.0 \]
Valor crítico (5%) = 2.045 → Rejeita-se \(H_0\)
Conclusão: \(X_2\) é estatisticamente relevante.
#install.packages("wooldridge")
library(wooldridge)
modelo <- lm(wage ~ educ + exper + female, data = wage1)
#Verificar coeficientes, erros padrão, t e p-valores
summary(modelo)
##
## Call:
## lm(formula = wage ~ educ + exper + female, data = wage1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -6.3856 -1.9652 -0.4931 1.1199 14.8217
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.73448 0.75362 -2.302 0.0218 *
## educ 0.60258 0.05112 11.788 < 2e-16 ***
## exper 0.06424 0.01040 6.177 1.32e-09 ***
## female -2.15552 0.27031 -7.974 9.74e-15 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.078 on 522 degrees of freedom
## Multiple R-squared: 0.3093, Adjusted R-squared: 0.3053
## F-statistic: 77.92 on 3 and 522 DF, p-value: < 2.2e-16
Limitações do Teste t:
\[ H_0: \beta_1 = \beta_2 = \dots = \beta_{k-1} = 0 \] \[ H_1: \text{Ao menos um } \beta_j \ne 0 \]
Estatística F:
\[ F = \frac{(R^2 / (k - 1))}{((1 - R^2) / (n - k))} \]
Onde:
\[ F = \frac{R^2 / (k - 1)}{(1 - R^2) / (n - k)} \] - Alternativa ao uso de SQE e SQR. - Prático: softwares de regressão sempre retornam \(R^2\). - Ajuda a avaliar se o modelo “explica algo”.
\[ H_0: \beta_2 = \beta_3 = 0 \]
Estatística F:
\[ F = \frac{(SSR_r - SSR_{ur}) / q}{SSR_{ur} / (n - k)} \] Onde \(q\) é o número de restrições.
\[ F = \frac{0.60 / 2}{(1 - 0.60) / (30 - 3)} = \frac{0.30}{0.0148} \approx 20.27 \] - Valor crítico de \(F_{(2,27)} \approx 3.35\) → Rejeita-se \(H_0\)
\[ F = \frac{(0.25 - 0.18)/1}{(1 - 0.25)/97} = \frac{0.07}{0.00773} \approx 9.06 \] - \(F_{1,97}^{5\%} \approx 3.94 \ \rightarrow \ \) Rejeitamos \(H_0:\) \(X_2\) é relevante
exper contribui para
explicar wage, além de educ.exper.# Carregar pacote e dados
library(wooldridge)
data(wage1)
# Modelo completo com educ + exper
modelo_completo <- lm(wage ~ educ + exper, data = wage1)
# Modelo restrito com apenas educ
modelo_restrito <- lm(wage ~ educ, data = wage1)
A saída da função anova(modelo_restrito, modelo_completo) vai trazer:
RSS (Soma dos Quadrados dos Resíduos) de cada modelo
Df: graus de liberdade
F: estatística F calculada
\(Pr(>F)\): valor-p associado
Se o valor-p for pequeno (\(p < 0.05\)), rejeitamos \(H_0\). Isso significa que exper é estatisticamente relevante.
# Teste F: comparação dos modelos
anova(modelo_restrito, modelo_completo)
## Analysis of Variance Table
##
## Model 1: wage ~ educ
## Model 2: wage ~ educ + exper
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 524 5980.7
## 2 523 5548.2 1 432.52 40.772 3.78e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Testar se duas variáveis juntas são significativas para explicar o salário (wage): \[ H_0 : \beta_{exper} = \beta_{tenure} = 0 \] Ou seja: verificar se podemos excluir ambas as variáveis do modelo ao mesmo tempo.
## Analysis of Variance Table
##
## Model 1: wage ~ educ
## Model 2: wage ~ educ + exper + tenure
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 524 5980.7
## 2 522 4966.3 2 1014.4 53.31 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Teste do tipo F muito usado em políticas públicas e macroeconomia;
Quando utilizamos um modelo de regressão que envolve o uso de séries temporais, pode acontecer que se verifique uma mudança estrutural na relação entre o regressando e os regressores;
Por mudança estrutural entendemos que os valores dos parâmetros do modelo não se mantêm iguais durante todo o período de tempo;
Por exemplo, sabe-se que, em 1982, os Estados Unidos registraram sua pior recessão em tempos de paz. A taxa de desemprego civil atingiu 9,7% nesse ano, a mais alta desde 1948;
Para verificarmos se isso aconteceu, podemos dividir os dados da amostra em dois períodos: 1970-1981 e 1982-1995, ou seja, os períodos anterior e posterior à recessão de 1982.
Queremos saber se os coeficientes mudam em dois subconjuntos (ex: antes/depois de 1982).
Teremos agora três regressões possíveis:
Hipótese nula: mesmos coeficientes nas duas amostras.
\[ H_0 = \lambda_1 = \gamma_1 \ \text{e } \ \lambda_2 = \gamma_2 \]
\[ F = \frac{(SQR_c - (SQR_1 + SQR_2)) / k}{(SQR_1 + SQR_2) / (n_1 + n_2 - 2k)} \] Onde:
# Instalar o devtools
install.packages('devtools')
# Instalar o pacote com os dados do Gujarati
devtools::install_github("brunoruas2/gujarati")
library(gujarati)
# Visualizar os datasets disponíveis
data(package = "gujarati")
dados <- gujarati::Table8_9
class(dados$YEAR)
## [1] "factor"
class(dados$SAVINGS)
## [1] "factor"
class(dados$INCOME)
## [1] "factor"
# Corrigindo as variáveis de factor para numérico:
dados$YEAR <- as.numeric(as.character(dados$YEAR))
dados$SAVINGS <- as.numeric(as.character(dados$SAVINGS))
dados$INCOME <- as.numeric(as.character(dados$INCOME))
# Soma dos quadrados dos resíduos
SSR_total <- sum(residuals(modelo_total)^2)
SSR_antes <- sum(residuals(modelo_antes)^2)
SSR_depois <- sum(residuals(modelo_depois)^2)
# Tamanhos da amostra e número de parâmetros para graus de liberdade:
n1 <- sum(dados$YEAR < 1982)
n2 <- sum(dados$YEAR >= 1982)
k <- length(coef(modelo_total))
# Estatística F do teste de Chow
F_chow <- ((SSR_total - (SSR_antes + SSR_depois)) / k) /
((SSR_antes + SSR_depois) / (n1 + n2 - 2 * k))
# Estatística de teste:
F_chow
## [1] 10.69006
# P-Value:
df(F_chow,2*k, n1+ n2 -2*k)
## [1] 3.743812e-05
Relembrando a Distribuição t
Suponha \(\hat{\beta}_j \sim N(\beta_j, \text{Var}(\hat{\beta}_j))\)
Sob normalidade dos erros: \(t\)-estatística válida
Para \(H_0: \beta_j = \beta_{j_0}\) usamos:
\[ t = \frac{\hat{\beta}_j - \beta_{j0}}{se(\hat{\beta}_j)} \sim t_{n - k} \]
Utilizamos \(t_{\alpha/2, n-k}\) como valor crítico
Intervalo de confiança a \((1 - \alpha)\)%:
\[ \hat{\beta}_j \pm t_{\alpha/2, n-k} \cdot se(\hat{\beta}_j) \]
Intuição: estimamos um “intervalo plausível” para \(\beta_j\)
Se intervalo contém 0, não rejeitamos \(H_0: \beta_j = 0\)
Relaciona-se diretamente ao teste t
Previsão esperada:
\[ \hat{y}_0 = \hat{\beta}_0 + \hat{\beta}_1 x_{1,0} + \cdots + \hat{\beta}_{k-1} x_{k-1,0} \]
Intervalo para a média:
\[ \hat{y}_0 \pm t_{\alpha/2, n-k} \cdot se(\hat{y}_0) \]
Importante distinguir:
Intervalo para valor esperado de \(Y\) vs.
Intervalo para observação futura de \(Y\) (mais amplo)
\[ H_0: a_1\beta_1 + a_2\beta_2 = c \] - Exemplo: \(H_0: \beta_1 = \beta_2\)
\[ t = \frac{a_1 \hat{\beta}_1 + a_2 \hat{\beta}_2 - c}{\sqrt{\text{Var}(a_1 \hat{\beta}_1 + a_2 \hat{\beta}_2)}} \] - Onde:
\[ \text{Var}(a_1 \hat{\beta}_1 + a_2 \hat{\beta}_2) = a_1^2 \text{Var}(\hat{\beta}_1) + a_2^2 \text{Var}(\hat{\beta}_2) + 2a_1a_2 \text{Cov}(\hat{\beta}_1, \hat{\beta}_2) \]
\[ t = \frac{\hat{\beta}_1 - \hat{\beta}_2}{\sqrt{se(\hat{\beta}_1)^2 + se(\hat{\beta}_2)^2 - 2 \cdot \text{Cov}(\hat{\beta}_1, \hat{\beta}_2)}} \]
Valor-p é a probabilidade de obter \(t\) tão extremo quanto o observado
Quanto menor o valor-p:
Intervalos e testes baseiam-se na distribuição t
Testes podem ser aplicados a:
Coeficientes individuais (\(\beta_j\))
Combinações lineares
Intervalos fornecem intuição complementar ao teste t
Valor-p é uma ferramenta prática e interpretável
Regressão: \(\hat{y} = 3.5 + 2.1 x_1 + 1.4 x_2\)
\(se(\hat{\beta}_1) = 0.7\), \(se(\hat{\beta}_2) = 0.9\)
Testar \(H_0: \beta_1 = \beta_2\)
\[ t = \frac{2.1 - 1.4}{\sqrt{0.7^2 + 0.9^2}} = \frac{0.7}{1.14} \approx 0.614 \]
Valor crítico \(t_{0.05, n-k} \approx 2.0\) → Não rejeitamos \(H_0\)
Conclusão: efeitos similares (estatisticamente)
Em muitos casos, não testamos se um coeficiente é zero, mas relações entre coeficientes:
Essas hipóteses podem ser escritas como combinações lineares de parâmetros:
O teste F avalia simultaneamente várias dessas restrições:
Forma geral da hipótese nula: \[ H_0: R\beta = r \]
Onde:
Seja o modelo estimado via MQO: \[ y = X\beta + u \]
Hipótese nula: \[ H_0: R\beta = r \]
Estatística do teste: \[ F = \frac{(R\hat{\beta} - r)' [R (\widehat{\text{Var}}(\hat{\beta})) R']^{-1} (R\hat{\beta} - r)}{q} \]
Sob \(H_0\), temos: \[ F \sim F_{q, n-k} \]
Esse teste generaliza o teste t e permite hipóteses múltiplas de forma eficiente.
Teste F: Igualdade entre Coeficientes (educ = exper)
Modelo estimado:
wage ~ educ + exper + tenure
Hipótese nula: \(\beta_{\text{educ}} = \beta_{\text{exper}}\)
Reformulamos como: \(H_0: \beta_{\text{educ}} - \beta_{\text{exper}} = 0\)
Modelo estimado: \[ wage = \beta_0 + \beta_1 \cdot educ + \beta_2 \cdot exper + \beta_3 \cdot tenure + u \]
Construção da matriz \(R\):
A matriz \(R\) impõe restrições lineares: \[ R \cdot \beta = r \] onde \(\beta = (\beta_0, \beta_1, \beta_2, \beta_3)'\)
Para \(\beta_1 - \beta_2 = 0\) , temos: \[ R = \begin{bmatrix} 0 & 1 & -1 & 0 \end{bmatrix}, \quad r = 0 \]
suppressPackageStartupMessages(library(car))
# Modelo com três variáveis explicativas
modelo <- lm(wage ~ educ + exper + tenure, data = wage1)
# Restrição: beta_educ - beta_exper = 0
R <- matrix(c(0, 1, -1, 0), nrow = 1)
# Vamos ver a matriz:
print(R)
## [,1] [,2] [,3] [,4]
## [1,] 0 1 -1 0
# Teste F da hipótese linear
car::linearHypothesis(modelo, R)
##
## Linear hypothesis test:
## educ - exper = 0
##
## Model 1: restricted model
## Model 2: wage ~ educ + exper + tenure
##
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 523 6291.4
## 2 522 4966.3 1 1325.1 139.28 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Dado o modelo: wage ~ educ + exper + tenure
Supomos que queremos testar simultaneamente:
Hipótese nula conjunta: \[ H_0: \begin{cases} \beta_{\text{educ}} - \beta_{\text{exper}} = 0 \\ \beta_{\text{tenure}} = 0 \end{cases} \]
Podemos reescrevê-la em forma matricial: \[ H_0: R\beta = r \]
Onde: \[ R = \begin{bmatrix} 0 & 1 & -1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}, \quad r = \begin{bmatrix} 0 \\ 0 \end{bmatrix} \]
Esse teste verifica se ambas as restrições são consistentes com os dados.
Interpretação:
# Estimando o modelo completo
modelo <- lm(wage ~ educ + exper + tenure, data = wage1)
# Definindo a matriz de restrições R
R <- matrix(c(
0, 1, -1, 0, # beta_educ - beta_exper = 0
0, 0, 0, 1 # beta_tenure = 0
), nrow = 2, byrow = TRUE)
# Vetor r (valores do lado direito das restrições): [0, 0]
r <- c(0, 0)
R; r
## [,1] [,2] [,3] [,4]
## [1,] 0 1 -1 0
## [2,] 0 0 0 1
## [1] 0 0
# Aplicando o teste F para as duas restrições
linearHypothesis(modelo, R, r)
##
## Linear hypothesis test:
## educ - exper = 0
## tenure = 0
##
## Model 1: restricted model
## Model 2: wage ~ educ + exper + tenure
##
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 524 6862.1
## 2 522 4966.3 2 1895.8 99.632 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1