2016-04-26 20 views
0

Ich möchte den Standardfehler einer transformierten Variablen aus meiner linearen Regression berechnen, d. H. Zwei Variablen teilen und den Standardfehler von dieser Variablen erhalten.Standardfehler einer transformierten Variablen in linearer Regression ableiten

Ich benutze die deltamethod Funktion aus dem msm Paket, aber nicht erhalten genaue Standardfehler.

Zum Beispiel:

Simulation von Daten:

set.seed(123) 
nobs = 1000 
data <- data.table(
    x1 = rnorm(nobs), 
    x2 = rnorm(nobs), 
    x3 = rnorm(nobs), 
    x4 = rnorm(nobs), 
    y = rnorm(nobs)) 

Lineare Regression:

reg2 <- lm(y~x1+x2+x3+x4, data=data) 

Holen Sie sich das Koef und vcov (hier muss ich der Missings loszuwerden, da einige Koeffizienten in meinen realen Daten sind NA und ich berechne viele Regressionen in Schleife)

vcov_reg <- vcov(reg2) 

coef_reg <- coef(reg2) 
coef_reg <- na.omit(coef_reg) 
coef_reg <- as.numeric(coef_reg) 

Deltamethod, für die die Variable x1 durch x3 geteilt (was bedeutet, ich x2 und x4 gemäß der msm-Paket verwenden, sollten):

deltamethod(~ x2/x4, coef_reg, vcov_reg) 

Das gibt mir einen Standardfehler der transformierten Variablen (x1/x3) von 3,21, während alle Standardfehler von dieser Regression ungefähr 0,03 sind.

Irgendeine Idee warum/was ist hier falsch? Andere Vorschläge zur Berechnung sind ebenfalls willkommen.

+1

Und was denkst du soll die Antwort sein? – MrFlick

Antwort

1

Es ist nichts falsch mit dem Ergebnis. In Ihrem Beispiel sind Ihre Daten auf 0 zentriert, daher sollte es nicht zu verwunderlich sein, dass Sie beim Teilen durch die Daten einen großen Varianz-/Standardfehler erhalten.

Beachten Sie, dass Ihr geschätzter Koeffizient für x3 -0.017408626 ist, also mit einem Standardfehler von etwa 0,03 kreuzt das CI für diesen Koeffizienten 0. Und das ist die Sache, durch die wir dividieren. Hoffentlich gibt das Ihnen ein Gefühl dafür, warum der Standardfehler zu explodieren scheint. Für einige Beweise, dass dies wirklich ein Teil des Problems ist, betrachte stattdessen x1/x2.

> deltamethod(~ x2/x3, coef_reg, vcov_reg) 
[1] 0.3752063 

, die viel kleiner, da der geschätzte Koeffizient für den Nenner ist größer in diesem Fall (0,09)

Aber eigentlich gibt es nichts falsch mit Ihrem Code. Es war nur deine Intuition war falsch. Alternative Methoden, um abzuschätzen, was Sie wollen, wäre ein Bootstrap oder eine Bayessche Regression zu verwenden und die spätere Verteilung der Transformation zu betrachten.

Verwandte Themen