Wie benutze ich die Delta-Methode für Standardfehler von Randeffekten?

20

Ich bin daran interessiert, die Delta-Methode zur Approximation der Standardfehler der durchschnittlichen Randeffekte eines Regressionsmodells, das einen Interaktionsterm enthält, besser zu verstehen. Ich habe verwandte Fragen unter aber keine hat genau das geliefert, wonach ich suche.

Betrachten Sie die folgenden Beispieldaten als motivierendes Beispiel:

set.seed(1)
x1 <- rnorm(100)
x2 <- rbinom(100,1,.5)
y <- x1 + x2 + x1*x2 + rnorm(100)
m <- lm(y ~ x1*x2)

Ich interessiere mich für die durchschnittlichen Randeffekte (AMEs) von x1und x2. Um diese zu berechnen, mache ich einfach Folgendes:

cf <- summary(m)$coef
me_x1 <- cf['x1',1] + cf['x1:x2',1]*x2 # MEs of x1 given x2
me_x2 <- cf['x2',1] + cf['x1:x2',1]*x1 # MEs of x2 given x1
mean(me_x1) # AME of x1
mean(me_x2) # AME of x2

Aber wie berechne ich mit der Delta-Methode die Standardfehler dieser AMEs?

Ich kann die SE für diese bestimmte Interaktion von Hand berechnen:

v <- vcov(m)
sqrt(v['x1','x1'] + (mean(x2)^2)*v['x1:x2','x1:x2'] + 2*mean(x2)*v['x1','x1:x2'])

Aber ich verstehe nicht, wie man die Delta-Methode benutzt.

Im Idealfall bin ich auf der Suche nach einer Anleitung zum Überlegen (und Codieren) der Delta-Methode für AMEs eines beliebigen Regressionsmodells. Zum Beispiel enthält diese Frage eine Formel für die SE für einen bestimmten Interaktionseffekt und dieses Dokument von Matt Golder enthält Formeln für eine Vielzahl interaktiver Modelle, aber ich möchte das allgemeine Verfahren zur Berechnung der SEs von AMEs besser verstehen als die Formel für die SE eines bestimmten AME.

Thomas
quelle
2
+1 Tolle Frage (hat mich auch schon lange geärgert)! Es gibt einen Beitrag auf dem Stata Forum: Delta - Methode Standardfehler für die durchschnittliche marginal ... . In SE gibt es ein Beispiel für die Verwendung eines Bootstrap-Ansatzes: mfxboot-Funktion für marginale Effekte bei Probit-Regressionen? .
Bernd Weiss

Antworten:

16

Die Delta-Methode besagt einfach, dass wenn Sie eine Hilfsvariable darstellen können, die Sie als Funktion normalverteilter Zufallsvariablen darstellen können, diese Hilfsvariable ungefähr normalverteilt ist, wobei die Varianz dem Ausmaß der Abweichung der Hilfsvariablen gegenüber den Normalvariablen entspricht (EDIT: Wie von Alecos Papadopoulos ausgeführt, kann die Delta-Methode allgemeiner formuliert werden, so dass keine asymptotische Normalität erforderlich ist. Am einfachsten kann man sich dies als Taylor-Erweiterung vorstellen, bei der der erste Term einer Funktion der Mittelwert ist und die Varianz von den Termen zweiter Ordnung herrührt. Insbesondere wenn eine Funktion des Parameters β ist und b ein konsistenter, normalverteilter Schätzer für diesen Parameter ist: g (Gβb Da β eine Konstante und b ein konsistenter Schätzer für β ist , können wir dann sagen:

G(b)G(β)+G(β)(b-β)
βbβ In diesem Fall b istOLS schätzen, und g ist die AME. Sie können diese spezifische AME schreiben als: g ( b 1 , b 2 ) = b 1 + b 2  mean ( x 2 ), wenn Sie den Gradienten dieser Funktion genommen haben (denken Sie daran, eine Funktion derKoeffizientennicht von x
n(G(b)-G(β))DN(0,G(β)ΣbG(β))
bG
G(b1,b2)=b1+b2 bedeuten(x2)
) wäre es: [ 1 ,x2 und die Varianz-Kovarianz-Matrix für b könnten sein: [ s 11 s 12 s 12 s 22 ] Wenn Sie dies in die Varianzformel einfügen und eine Matrixalgebra ausführen, erhalten Sie denselben Ausdruck, den Sie wollten.
[1,bedeuten(x2)]
b
[s11s12s12s22]

GRnumDeriv

ADDENDUM: In diesem speziellen Fall wäre der RCode:

v <- vcov(m)

# Define function of coefficients. Note all coefficients are included so it 
# will match dimensions of regression coefficients, this could be done more 
# elegantly in principle
g <- function(b){
    return(b[2] + b[4] * mean(x2))
}

require(numDeriv) # Load numerical derivative package

grad_g <-  jacobian(g, m$coef) # Jacobian gives dimensions, otherwise same as
                               # gradient 

sqrt(grad_g%*% v %*% t(grad_g)) # Should be exactly the same 

G

jayk
quelle
1
Vielen Dank für diese sehr ausführliche Antwort. Ich denke, was mich besonders auslöste, waren Steigungen in Bezug auf die Koeffizienten und nicht die ursprünglichen Variablen. Ich schätze deine Hilfe sehr!
Thomas
Und nur eine klärende Frage. Sie verwenden mean(x2)bei der Berechnung der SE. Wäre das nicht nur für den Randeffekt im Mittel? Meiner Intuition nach müsste ich für AMEs für jede Beobachtung eine SE erstellen und dann in irgendeiner Weise über sie hinweg mitteln.
Thomas
1
Dies ist äquivalent für lineare AMEs. Wenn Sie den Durchschnitt über die Beobachtungen ziehen, erhalten Sie nur den Grenzwert für den Mittelwert. Andernfalls müsste man wirklich gden Durchschnitt der Randeffekte für jedes Individuum definieren und wahrscheinlich den numerischen Gradienten verwenden. Ich bin mir nicht sicher, ob die SE für jedes Individuum ziemlich gleich wäre.
Jayk
1
Das heißt, AME und ME im Mittel sind für lineare MEs äquivalent. Die SE wird meiner Meinung nach nicht gleichwertig sein, da die Varianzform quadratisch ist und der Mittelwert nicht einfach herausspringt. Ich habe keine gute Ahnung, warum die SE nicht einfach über Beobachtungen aufsummiert werden kann, aber ich bin mir ziemlich sicher, dass es wahr ist.
Jayk
2
Beachten Sie, dass das Delta-Theorem keine Normalität erfordert.
Alecos Papadopoulos