Delta etkilerinin standart hataları için delta yöntemi nasıl kullanılır?


20

Bir etkileşim terimi içeren bir regresyon modelinin ortalama marjinal etkilerinin standart hatalarını tahmin etmek için delta yöntemini daha iyi anlamak istiyorum. altında ilgili sorulara baktım ama hiçbiri aradığım şeyi sağlamamış.

Motive edici bir örnek olarak aşağıdaki örnek verileri düşünün:

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

Ben ortalama marjinal etkilerin (Ames) ilgileniyorum x1ve x2. Bunları hesaplamak için şunları yapıyorum:

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

Ancak bu AME'lerin standart hatalarını hesaplamak için delta yöntemini nasıl kullanabilirim?

Bu özel etkileşim için SE'yi elle hesaplayabilirim:

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

Ama delta yöntemini nasıl kullanacağımı anlamıyorum.

İdeal olarak, herhangi bir keyfi regresyon modelinin AME'leri için delta yöntemi hakkında düşünmek (ve kodlamak) hakkında bazı rehberlik arıyorum. Örneğin, bu soru SE için belirli bir etkileşim etkisi için bir formül sağlar ve Matt Golder'ın bu belgesi çeşitli etkileşimli modeller için formüller sağlar, ancak AME'lerin SE'lerini hesaplamak için genel prosedürü formül yerine daha iyi anlamak istiyorum. herhangi bir AME'nin SE'si.


2
+1 Harika bir soru (beni de uzun zamandır sallıyor)! Stata forumunda bir mesaj vardır: ortalama marjinal Delta Yöntemi Standart Hataları ... . SE'de, bir bootstrap yaklaşımı kullanan bir örnek vardır: probit regresyonları için marjinal etkiler için mfxboot işlevi? .
Bernd Weiss

Yanıtlar:


16

Delta yöntemi basitçe, bir yardımcı değişkeni temsil edebiliyorsanız, normal olarak dağıtılmış rasgele değişkenlerin bir fonksiyonu olarak temsil edebileceğinizi, yardımcı değişkenin yaklaşık olarak normalde yardımcı maddenin normal değişkenlere göre ne kadar değiştiğine karşılık gelen varyansla dağıtıldığını (EDIT: Alecos Papadopoulos'un işaret ettiği gibi delta yöntemi daha genel olarak asimtotik normallik gerektirmeyecek şekilde ifade edilebilir). Bunu düşünmenin en kolay yolu, bir fonksiyonun ilk teriminin ortalama olduğu ve varyansın ikinci dereceden terimlerden geldiği bir Taylor genişlemesi. Özellikle, , parametresinin bir ve , bu parametre için tutarlı, normal olarak dağıtılmış bir tahmin ediciyse: β b g ( b ) g ( β ) + g ( β ) ( b - β ) β b β gβb

g(b)g(β)+g(β)'(b-β)
yana , bir sabittir ve için tutarlı bir tahmin olup , o zaman söyleyebiliriz: Bu durumda, OLS tahmininiz ve AME'dir. Bu özel AME'yi şu şekilde yazabilirsiniz: eğer bu fonksiyonun gradyanını aldıysanız (unutmayın, olmayan katsayıların bir fonksiyonu ), : βbβ
n(g(b)-g(β))DN-(0,g(β)'Σbg(β))
bg
g(b1,b2)=b1+b2 anlamına gelmek(x2)
x2
[1,anlamına gelmek(x2)]'
ve varyans kovaryans matrisi olabilir: Bu takıp varyans formülü ve bazı matris cebirleri yapmak istediğiniz ifadeyi verir.b
[s11s12s12s22]

Genel olarak açıkça ne olursa olsun kod olabilir, bunu yapmak istiyorum içine istediğiniz tüm katsayılarının bir fonksiyonu olarak ve daha sonra kullanmak sayısal gradyan almaya göre fonksiyonun (aksi takdirde kullanım bilgisayara cebir olurdu) parametreleriniz, tahmin ettiğiniz parametrelerde. Sonra sadece varyans-kovaryans matrisini ve bu sayısal gradyanı alıp formül ve voila'ya takın! Delta yöntemi.gRnumDeriv

EK: Bu özel durumda Rkod şöyle olacaktır:

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 

Tam degrade daha az hesaplama hatasına sahip olacağından, bu sorun için sayısal degrade yerine tam degradeyi almanın her zaman tercih edileceğini unutmayın. Aslında ortadan kaldırır doğrusal bu sorun ve daha karmaşık işlevler için tam gradyan her zaman mevcut olmayabilir.g


1
Bu çok ayrıntılı cevap için teşekkürler. Özellikle beni harekete geçiren şey, orijinal değişkenlerden ziyade katsayılara göre degradelerdi. Yardımın için sağol!
Thomas

Ve sadece açıklayıcı bir soru. mean(x2)SE hesaplarken kullanılır . Bu sadece ortalama marjinal etki için değil mi? Sezgim AME'ler için her bir gözlem için SE'ye gitmem ve daha sonra aralarında bir şekilde ortalamam olurdu.
Thomas

1
Doğrusal AME'ler için eşdeğerdir, gözlemler üzerinden ortalama aldığınızda, ortalamada marjinal etki ile sonuçlanırsınız. Aksi takdirde g, her birey için marjinal etkilerin ortalaması olarak tanımlamanız ve muhtemelen sayısal gradyanı kullanmanız gerekir, her biri için SE'yi almanın aynı olacağından emin değilim.
jayk

1
Yani ortalama AME ve ME doğrusal ME'ler için eşdeğerdir. SE eşdeğer olduğunu düşünmeyeceğim, çünkü varyans formu ikinci dereceden, bu yüzden ortalama sadece ortaya çıkmayacak. SE'nin neden sadece gözlemlere eklenemeyeceğine dair iyi bir sezgim yok, ama bunun doğru olduğundan eminim.
jayk

2
Delta Teoreminin normalite gerektirmediğine dikkat edin.
Alecos Papadopoulos
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.