限界効果の標準誤差にデルタ法を使用する方法は?


20

相互作用項を含む回帰モデルの平均限界効果の標準誤差を近似するためのデルタ法をよりよく理解することに興味があります。で関連する質問を見ましたが、探しているものをまったく提供していません。

動機付けの例として、次のサンプルデータを検討してください。

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

との平均限界効果(AME)に興味がx1ありx2ます。これらを計算するには、単に次のことを行います。

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

しかし、デルタメソッドを使用してこれらのAMEの標準誤差を計算するにはどうすればよいですか?

この特定の相互作用のSEは手動で計算できます。

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

しかし、デルタ方式の使用方法がわかりません。

理想的には、任意の回帰モデルのAMEのデルタ法をどのように考える(およびコーディングする)かについてのガイダンスを探しています。たとえば、この質問は特定の相互作用効果のSEの公式を提供し、Matt Golderのこのドキュメントはさまざまなインタラクティブモデルの公式を提供しますが、AMEのSEを計算する一般的な手順をよりよく理解したいです特定のAMEのSE。


2
+1すばらしい質問です(長い間私を悩ませてきました)!Stataのフォーラムに投稿があります:平均限界のためのデルタ方法の標準エラー...。SEには、ブートストラップアプローチを使用した例がありますプロビット回帰の限界効果のためのmfxboot関数?
ベルントヴァイス14年

回答:


16

デルタ法では、補助変数を表現できる場合、正規分布のランダム変数の関数として表現できる場合、その補助変数は、正規変数に対してどの程度補助変数が変化するかに対応する分散でほぼ正規分布するというだけです(編集: Alecos Papadopoulosが指摘したように、漸近正規性を必要としないデルタ法をより一般的に述べることができます。これを考える最も簡単な方法は、関数の最初の項が平均であり、分散が2次の項から来るテイラー展開としてです。具体的には、がパラメーターβの関数であり、bがそのパラメーターの一貫した正規分布推定量である場合、 g gβb ので、 βは定数であり、 bは一貫した推定量である β、我々は、次に言うことができる:

gbgβ+gβbβ
βbβ ここで、 Bは、あなたのOLSの推定値であり、そして Gは AMEあります。:あなたは、この特定のAMEを書くことができます グラムB 1B 2= B 1 + B 2  の平均X 2 あなたは、この関数の勾配を取った場合、機能を覚えて(係数はないの X
ngbgβDN0gβΣbgβ
bg
gb1b2=b1+b2 平均バツ2
)、それは次のようになります: [ 1 バツ2 および bの分散共分散行列は次のようになります。 [ s 11 s 12 s 12
[1平均バツ2]
b これを分散式にプラグし、行列代数を行うと、同じ式が得られます。
[s11s12s12s22]

gRnumDeriv

補遺:この特定のケースでは、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 

g


1
この非常に詳細な回答をありがとう。私が特に驚いたのは、元の変数ではなく係数に関する勾配だったと思います。本当にありがとうございました!
トーマス14年

そして、明確な質問です。mean(x2)SEを計算するときに使用します。それは平均的な限界効果のためだけではないでしょうか?私の直感では、AMEについては、各観測でSEを実行し、何らかの方法でそれらを平均する必要があります。
トーマス14年

1
これは、線形AMEの場合と同等です。観測値の平均を取ると、平均値の限界効果になります。そうでない場合は、実際gに各個人の限界効果の平均として定義する必要があり、おそらく数値勾配を使用する必要があります。
ジェイク14年

1
つまり、平均でAMEとMEは線形MEで同等です。SEは、分散の形式が2次式であるため、同等であるとは思わないので、平均値が飛び出すことはありません。SEを単に観測値に加算できない理由については直観がありませんが、それは本当だと確信しています。
ジェイク14年

2
デルタ定理は正規性を必要としないことに注意してください。
アレコスパパドプロ14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.