2017-04-08 1 views
2

Ich bin ein Regressionsmodell mit einigen Heteroskedastizität und serielle Korrelation laufen und ich versuche beide zu lösen, ohne meine Modellspezifikation zu ändern.FGLS Korrigieren serielle Korrelation und heteroskedasticity mit plm-Paket in R

Zuerst habe ich ein OLS-Modell generiert und beide Probleme, Heteroskedastizität und serielle Korrelation realisiert. Also habe ich versucht, ein praktikables verallgemeinertes Least Square (FGLS) -Modell mit plms pggls Befehl zu lösen, um beide Probleme gleichzeitig zu lösen, aber dieser Befehl scheint nur Heteroskedastizität und nicht serielle Korrelation zu lösen.

Mein Code ist wie folgt:

base<-pdata.frame(base, index = c("ID","time"), drop = FALSE) 
Reg<-pggls(sells~ prices + income + stock+ 
      period1 + period2+ period3, model = c("pooling"), 
      data=base) 

Dieser Befehl Heteroskedastie zu korrigieren scheint, aber es ist sicherlich nicht richtig für die serielle Korrelation, wie ich einen einfachen Beweis geschaffen. Unterhalb I eine Regression zwischen den Residuen und den verzögerten Residuen des Regressionsmodells generiert:

res = Reg$res 
n = length(res) 
mod = lm(res[-n] ~ res[-1]) 
summary(mod) 

Der res[-1] Koeffizient mod ist significative. So hat es die serielle Korrelation nicht gelöst.

Kann jemand eine Option zum pggls Befehl hinzufügen, um dieses Problem zu lösen? Oder kennt jemand einen besseren Befehl zur Lösung beider Probleme? Es muss nicht unbedingt ein Panel-Daten-Befehl sein, da ich nur 1 Individuum habe.

+0

'lm (res [-n] ~ res [-1])' wird nicht geben, was Sie wollen, verwenden Sie stattdessen 'plm :: lag '. – Helix123

+0

Machen Sie einfach eine OLS-Regression und verwenden Sie robuste (heteroskedasticity und serielle Korrelation robust) Standardfehler, schauen Sie sich das Paket 'sandwich' an. – Helix123

Antwort

1

Solange Sie sagten, dass Sie keine Panel-Struktur benötigen, können Sie die Standardfehler direkt korrigieren, die in der Ökonometrie-Literatur mehr verwendet wird. In der Tat, GLS Schätzung etwas altmodisch ist heute ...

könnten Sie tun:

library(sandwich) 
library(lmtest) 

reg <-lm(sells ~ prices + income + stock + period1 + period2+ period3, data = base) 

coeftest(reg, vcov = vcovHAC(reg)) 

Nur für Vollständigkeit, wenn Sie einen gruppierten robuste Schätzung produzieren möchte wie Stata tut, Sie Wolke Versuchen Sie Tarzans cl Funktion von here.

+0

sollten die Funktionen 'vcovXX' (z. B.' vcovHC') im Paket 'plm' die geclusterte SE ebenfalls ausführen - einfacher als sie selbst zu implementieren. – Helix123

Verwandte Themen