L'ANOVA nei modelli di regressione lineare equivale al test Wald (e al test del rapporto di verosimiglianza) dei corrispondenti modelli nidificati. Pertanto, quando si desidera eseguire il test corrispondente utilizzando errori standard coerenti con l'eteroschedasticità (HC), ciò non può essere ottenuto da una decomposizione delle somme dei quadrati, ma è possibile eseguire il test Wald utilizzando una stima della covarianza HC. Questa idea è utilizzato sia Anova()
e linearHypothesis()
dal car
pacchetto e coeftest()
e waldtest()
dal lmtest
pacchetto. Questi ultimi tre possono anche essere usati con plm
oggetti.
Un esempio semplice (anche se non molto interessante / significativo) è il seguente. Usiamo il modello standard dalla ?plm
pagina del manuale e vogliamo eseguire un test Wald per il significato di entrambi log(pcap)
e unemp
. Abbiamo bisogno di questi pacchetti:
library("plm")
library("sandwich")
library("car")
library("lmtest")
Il modello (in alternativa) è:
data("Produc", package = "plm")
mod <- plm(log(gsp) ~ log(pc) + log(emp) + log(pcap) + unemp,
data = Produc, index = c("state", "year"))
Innanzitutto, diamo un'occhiata ai test di Wald marginali con errori standard HC per tutti i singoli coefficienti:
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 poi eseguiamo un test Wald per entrambi 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
In alternativa, possiamo anche adattare il modello all'ipotesi nulla ( mod0
diciamo) senza i due coefficienti e quindi chiamare 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
La statistica del test e il valore p calcolati da linearHypothesis()
ed waldtest()
è esattamente lo stesso. Solo l'interfaccia e la formattazione dell'output sono leggermente diverse. In alcuni casi l'uno o l'altro è più semplice o più intuitivo.
Nota: se si fornisce una stima della matrice di covarianza (ovvero una matrice simile vocvHC(mod)
) invece di uno stimatore della matrice di covarianza (ovvero una funzione simile vocvHC
), assicurarsi di fornire la stima della matrice di covarianza HC del modello in alternativa, ovvero modello non limitato.