Lineare Regression Verwendung Newey-West-Korrektur

Modelle zur Korrelations- und Regressionsanalyse

Moderator: EDi

Antworten
Tim Herrlich
Beiträge: 4
Registriert: So Jun 16, 2019 2:52 pm

Lineare Regression Verwendung Newey-West-Korrektur

Beitrag von Tim Herrlich »

Hallo zusammen,

ich schreibe gegenwärtig meine Masterthesis und untersuche, ob der Verschuldungsgrad von Unternehmen (abhängige Variable) von dem Fremdkapitalzinssatz (unabhängige Variable) beeinflusst wird.

Hierzu habe ich die Bilanzpositionen von 52 Unternehmen zum Quartalsende über 11 Jahre herangezogen.

Bei einigen Regressionen erhalte ich jedoch autokorrelierte und heteroskedastische Residuen.

Um dem zu begegnen möchte ich die Newey-West-Korrektur anwenden und verwende folgenden Code:

Code: Alles auswählen

Puma1<-lm(MVG[,"Puma SE"]~MVG[,"DIF_Zins_5"])
summary(Puma1)
coeftest(Puma1)
coeftest(Puma1,vcov=NeweyWest(Puma1))
und erhalte folgenden Output:

Code: Alles auswählen

.                   Estimate  Std. Error t value    Pr(>|t|)
(Intercept)         -0.0013314  0.0046222 -0.2881   0.7748
MVG[, "DIF_Zins_5"]  1.4595723  2.2525500  0.6480   0.5206
Meine Frage ist nun: Habe ich jetzt die Daten einer Regression ohne autokorrelierte und heteroskedastische Residuen vollständig? Das bei der ursprünglichen Regression mit autokorrelierten Residuen erhalten R-Squared bleibt bestehen richtig?

Da dies mein erster Beitrag ist und ich noch nicht mit den Gepflogenheiten dieses Forum vertraut bin, bitte ich um Rücksicht und bin dankbar für jeden Tipp.

Vielen Dank im Voraus!

Freundliche Grüße

Tim
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Lineare Regression Verwendung Newey-West-Korrektur

Beitrag von jogo »

Hallo Tim,

willkommen im Forum!
Tim Herrlich hat geschrieben: So Jun 16, 2019 3:30 pm Hierzu habe ich die Bilanzpositionen von 52 Unternehmen zum Quartalsende über 11 Jahre herangezogen.
Das klingt nach Panel-Daten.
Bei einigen Regressionen erhalte ich jedoch autokorrelierte und heteroskedastische Residuen.
Das halte ich bei Panel-Daten für wahrscheinlich. Schau Dir mal das Paket plm an.
... und verwende folgenden Code:

Code: Alles auswählen

Puma1<-lm(MVG[,"Puma SE"]~MVG[,"DIF_Zins_5"])
Funktionert eigentlich:

Code: Alles auswählen

Puma1 <- lm('Puma SE' ~ DIF_Zins_5, data=MVG)
:?: (ich bin mir nicht ganz sicher wegen des Leezeichens im Namen für die Spalte.)

Gruß, Jörg
Tim Herrlich
Beiträge: 4
Registriert: So Jun 16, 2019 2:52 pm

Re: Lineare Regression Verwendung Newey-West-Korrektur

Beitrag von Tim Herrlich »

Hallo Jörg,

herzlichen Dank für Deine Antwort!

Das Paket habe ich in der Tat auch schon entdeckt, aufgrund eines anderen Beitrags in diesem Forum.

Allerdings funktioniert die Formel zur Newey-West-Korrektur nicht, da ich folgende Fehlermeldung erhalte:

Code: Alles auswählen

> vcovNW(lm(MVG[,"Puma SE"]~MVG[,"DIF_Zins_5"]))
Fehler in UseMethod("vcovNW") : 
  nicht anwendbare Methode für 'vcovNW' auf Objekt der Klasse "lm" angewendet


Ich verstehe das so, dass die Formel nicht für eine lineare Regression mit lm() angewendet werden kann.

Bei der ursprünglichen Formel aus dem Sandwich-Paket erhalte ich ja ein Ergebnis, bin mir nur nicht ganz sicher, ob es das finale Ergebnis ist:

Code: Alles auswählen

> coeftest(Puma1,vcov=NeweyWest(Puma1))

t test of coefficients:

                      Estimate Std. Error t value Pr(>|t|)
(Intercept)         -0.0013314  0.0046222 -0.2881   0.7748
MVG[, "DIF_Zins_5"]  1.4595723  2.2525500  0.6480   0.5206
Wenn ich Deine Formel übernehme, erhalte ich folgende Fehlermeldung:

Code: Alles auswählen

Fehler in model.frame.default(formula = "Puma SE" ~ "DIF_Zins_5", data = MVG,  : 
  'data' must be a data.frame, not a matrix or an array
Vielen Dank für Deine Hilfe!

Freundliche Grüße

Tim
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Lineare Regression Verwendung Newey-West-Korrektur

Beitrag von jogo »

Hallo Tim,
Tim Herrlich hat geschrieben: Mo Jun 17, 2019 11:21 am Das Paket habe ich in der Tat auch schon entdeckt, aufgrund eines anderen Beitrags in diesem Forum.

Allerdings funktioniert die Formel zur Newey-West-Korrektur nicht, da ich folgende Fehlermeldung erhalte:

Code: Alles auswählen

> vcovNW(lm(MVG[,"Puma SE"]~MVG[,"DIF_Zins_5"]))
Fehler in UseMethod("vcovNW") : 
  nicht anwendbare Methode für 'vcovNW' auf Objekt der Klasse "lm" angewendet


Ich verstehe das so, dass die Formel nicht für eine lineare Regression mit lm() angewendet werden kann.
genau.
Die Funktion vcovNW() stammt aus dem Paket plm(). Dort steht im Hilfetext über das erste Argument:
x : an object of class "plm" or "pcce", siehe

Code: Alles auswählen

?vcovNW
Üblicherweise haben solche formalen Beschränkungen auch einen sachlogischen Grund.
Wenn ich Deine Formel übernehme, erhalte ich folgende Fehlermeldung:

Code: Alles auswählen

Fehler in model.frame.default(formula = "Puma SE" ~ "DIF_Zins_5", data = MVG,  : 
  'data' must be a data.frame, not a matrix or an array
Ja, das ist eine ungewöhnliche Datenverwaltung (wenn man keine Dataframes für sowas verwendet). Folgendes sollte funktionieren:

Code: Alles auswählen

Puma1 <- lm(`Puma SE` ~ DIF_Zins_5, data=as.data.frame(MVG))
Gruß, Jörg
Tim Herrlich
Beiträge: 4
Registriert: So Jun 16, 2019 2:52 pm

Re: Lineare Regression Verwendung Newey-West-Korrektur

Beitrag von Tim Herrlich »

Hallo Jörg,

vielen Dank für Deine erneute Antwort!

Ich schreibe meine Thesis, während ich Vollzeit arbeite.
Aus diesem Grund kann ich nicht immer zeitnah antworten. Ich habe gerade auf die schnelle versucht Deine Antwort umzusetzen und Ergebnisse zu erzielen. Dies hat allerdings nicht funktioniert, dafür möchte ich mich morgen einmal intensiv damit auseinandersetzen.

Danach werde ich meine Ergebnisse posten.

Herzlichen Dank für Deine Unterstützung und einen schönen Abend!

Freundliche Grüße

Tim
Tim Herrlich
Beiträge: 4
Registriert: So Jun 16, 2019 2:52 pm

Re: Lineare Regression Verwendung Newey-West-Korrektur

Beitrag von Tim Herrlich »

Hallo Jörg,

ich habe gestern längere Zeit versucht die Formel ans Laufen zu bekommen, was leider nicht funktioniert hat.

Was spricht denn dagegen die Formel aus meinem ersten Post zu verwenden?

Code: Alles auswählen

coeftest(Puma1,vcov=NeweyWest(Puma1))
Freundliche Grüße

Tim
Antworten