adjusted r squared in coeftest()

Modelle zur Korrelations- und Regressionsanalyse

Moderator: EDi

Antworten
tr206

adjusted r squared in coeftest()

Beitrag von tr206 »

Hallo,
ich möchte eine lineare Regression erstellen mittels lm() wobei die standard errors robust sein sollen. Ich will Newey West standard errors errechnen und einmal HAC standard errors.

Code: Alles auswählen

library(sandwich)
library(lmtest)
#Run linear regression
regression_g<-lm(g ~ MILL + equity.premium + Zt.rw + SENT + Cape, data = VAR_analsis_DataUSA)
coefNW<-coeftest(regression_g, vcov. = NeweyWest(regression_g, lag = 12, prewhite = FALSE))
coefHAC<-coeftest(regression_g, vcov. = vcovHAC(regression_g, prewhite = FALSE))
summary(regression_g)
coefNW
coefHAC
Das Problem ist nun, dass mir coeftest() nicht die statistics liefert wie z.B. das adjusted R squared, F-statistic usw. Also alle statistics die mir summary() liefert bekomme ich nicht bei coeftest().

Ich möchte dann im nächsten Schritt mittels stargazer() eine Tabelle mit allen statistics erstellen, d.h. das soll dann so aussehen als würde ich stargazer() auf regression_g anwenden nur dass die standard errors nach HAC oder Newey West geschätzt wurden

Weiß jemand wie ich in coeftest() diese statistics bekommen kann?
Dateianhänge
VAR_analsis_DataUSA.csv
(34.47 KiB) 119-mal heruntergeladen
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: adjusted r squared in coeftest()

Beitrag von EDi »

Man kann die summary mit den robusten Fehlern überschreiben (coefficient + F-wert, p-Wert wird aus dem F-Wert und den df on the fly berechnet, R2 ändert sich nicht).

Code: Alles auswählen

library(lmtest)
library(sandwich)

# some data & model
data("Mandible", package = "lmtest")
fm <- lm(length ~ age, data = Mandible, subset=(age <= 28))
(fm_sum <- summary(fm))
str(fm_sum)


fm_sum_rob <- fm_sum
# update coefficients using HC
fm_sum_rob$coefficients <- unclass(coeftest(fm, vcov = vcovHC))
# update F uisng HC
fm_sum_rob$fstatistic['value'] <- waldtest(fm, vcov = vcovHC)$F[2]

fm_sum_rob
fm_sum
BTW: Du bist schon lange genug dabei, dass du Wissen solltest, dass eine reproduzierbares Beispiel uns das Leben einfacher macht!
Die nächsten Fragen von dir ohne ein reproduzierbares Beispiel werde ich nicht weiter beachten.
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
tr206

Re: adjusted r squared in coeftest()

Beitrag von tr206 »

Danke. Das läuft ganz gut aber wenn ich den waldtest() mache gibt mir R für die F-statistic einen anderen p-Wert an als in der überschriebenen Tabelle. D.h. waldtest() liefert einen anderen p-Wert als ich für fm_sum_rob bekommen würde, also in der upgedateten Tabelle.

Kann das sein?
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: adjusted r squared in coeftest()

Beitrag von EDi »

Hmm, dann musst du vielleicht auch die Freiheitsgrade in der summary übernehmen...
Aufjedenfall tut die summary (aus F und df) den p-wert on the fly berechnen.
Habs mir nicht so genau angeschaut.... Aber das könnte der Grund sein.

Als alternative, könntest du die eine eigene summary_rob und print.summary_rob schreiben.
Ist vermutlich besser, als summary.lm zu hacken... Dann kannst du auch den p-wert übernehmen...
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
tr206

Re: adjusted r squared in coeftest()

Beitrag von tr206 »

Wenn ich richtig verstehe kann ich den ersten Teil des codes mit der Korrektur der coefficients mittels HC so übernehmen. Als zweiten Schritt nehme ich waldtest() und verwende dieses Ergebnis um summary_rob zu erstellen?
Wie krieg ich dann das R squared und den F-value mit dem p-value zusammen in eine Tabelle?
Antworten