A ANOVA nos modelos de regressão linear é equivalente ao teste de Wald (e o teste da razão de verossimilhança) dos modelos aninhados correspondentes. Portanto, quando você deseja realizar o teste correspondente usando erros padrão consistentes em heterocedasticidade (HC), isso não pode ser obtido a partir de uma decomposição das somas de quadrados, mas você pode executar o teste de Wald usando uma estimativa de covariância de HC. Esta ideia é usado em ambos Anova()
e linearHypothesis()
do car
pacote e coeftest()
e waldtest()
do lmtest
pacote. Os três últimos também podem ser usados com plm
objetos.
Um exemplo simples (embora não muito interessante / significativo) é o seguinte. Usamos o modelo padrão da ?plm
página de manual e queremos realizar um teste de Wald para a significância de ambos log(pcap)
e unemp
. Precisamos destes pacotes:
library("plm")
library("sandwich")
library("car")
library("lmtest")
O modelo (sob a alternativa) é:
data("Produc", package = "plm")
mod <- plm(log(gsp) ~ log(pc) + log(emp) + log(pcap) + unemp,
data = Produc, index = c("state", "year"))
Primeiro, vejamos os testes marginais de Wald com erros padrão de HC para todos os coeficientes individuais:
coeftest(mod, vcov = vcovHC)
t test of coefficients:
Estimate Std. Error t value Pr(>|t|)
log(pc) 0.2920069 0.0617425 4.7294 2.681e-06 ***
log(emp) 0.7681595 0.0816652 9.4062 < 2.2e-16 ***
log(pcap) -0.0261497 0.0603262 -0.4335 0.66480
unemp -0.0052977 0.0024958 -2.1226 0.03411 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
E então realizamos um teste de Wald para ambos log(pcap)
e unemp
:
linearHypothesis(mod, c("log(pcap)", "unemp"), vcov = vcovHC)
Linear hypothesis test
Hypothesis:
log(pcap) = 0
unemp = 0
Model 1: restricted model
Model 2: log(gsp) ~ log(pc) + log(emp) + log(pcap) + unemp
Note: Coefficient covariance matrix supplied.
Res.Df Df Chisq Pr(>Chisq)
1 766
2 764 2 7.2934 0.02608 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Como alternativa, também podemos ajustar o modelo sob a hipótese nula ( mod0
digamos) sem os dois coeficientes e depois chamar waldtest()
:
mod0 <- plm(log(gsp) ~ log(pc) + log(emp),
data = Produc, index = c("state", "year"))
waldtest(mod0, mod, vcov = vcovHC)
Wald test
Model 1: log(gsp) ~ log(pc) + log(emp)
Model 2: log(gsp) ~ log(pc) + log(emp) + log(pcap) + unemp
Res.Df Df Chisq Pr(>Chisq)
1 766
2 764 2 7.2934 0.02608 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
A estatística do teste e o valor p calculados linearHypothesis()
e waldtest()
são exatamente os mesmos. Apenas a interface e a formatação da saída são um pouco diferentes. Em alguns casos, um ou outro é mais simples ou mais intuitivo.
Nota: Se você fornecer uma estimativa da matriz de covariância (ou seja, semelhante a uma matriz vocvHC(mod)
) em vez de um estimador de matriz de covariância (ou seja, uma função semelhante vocvHC
), certifique-se de fornecer a estimativa da matriz de covariância HC do modelo sob a alternativa, ou seja, modelo não restrito.
plm
pacote possua métodos para ovcovHC()
genérico dosandwich
pacote, ele não fornece métodos paravcovHAC()
. Em vez disso, éplm
fornecido com suas próprias funções dedicadas para calcular matrizes de covariância em modelos de painel que potencialmente também incluem correlação serial. VejavcovNW()
ouvcovSCC()
no pacoteplm
.vcovHAC
,vcovNW
,vcovSCC
) são _H_eteroskedasticity e _A_utocorrelation _C_onsistent ... Isso é o que HAC defende.Isso pode ser feito com a
Anova
função nocar
pacote. Veja esta excelente resposta para obter mais detalhes e uma revisão de outras técnicas para lidar com a heterocedasticidade na ANOVA.fonte