個々のレベルのパネルデータとの差異の違い


11

個々のレベルパネルデータを使用して、差異モデルの差異を指定する正しい方法は何ですか?

セットアップは次のとおりです。都市に複数年にわたって埋め込まれた個人レベルのパネルデータがあり、その扱いは都市の年レベルで異なると想定します。正式には、聞かせて、個々のための結果であるの街のと年のとかどうか介入被災都市のためのダミーなるで年間。Bertrand et al(2004、p。250)で概説されているような典型的なDiD推定量は、都市と年の固定効果項を持つ単純なOLSモデルに基づいています。yististDstst

yist=As+Bt+cXist+βDst+ϵist

しかし、その推定者は個人レベルのパネル構造(つまり、都市内の各個人の複数の観測)を無視しますか?このモデルを個別レベルの固定効果項拡張することには意味がありますか?多くのDiDアプリケーションは、個々のレベルのパネルデータなしで繰り返し断面データを使用します。Si


バートランド、マリアンヌ、エスターデュフロ、センディルマライナサン。2004.「差の差の見積もりをどれだけ信頼すべきですか?」Quarterly Journal of Economics 119(1):249–75。


エンティティダミーの効果をキャプチャする場合は、固定効果モデルを実行してみませんか?DIDは2期間のFEと同等であるため、ダミーを含めてからDIDを実行するとドロップアウトします。
VCG

私が間違っている場合は修正してください。ただし、2つの違いがあります。a)feモデルは、効果を推定するためにユニット内比較を使用します(たとえば、特定のライフイベント後の収入が高いまたは低い)。DiDアプローチの考え方は、他の観察を対照トレンドとして使用して、治療なしで何が起こったかをキャプチャすることです。b)DiDは個人レベルの治療ではなく、グループレベルに焦点を当てています。ここで問題となるのは、この例の方程式に個々のレベルのfe項を追加した場合にどうなるかです。それは、コントロールトレンドとしてコントロールobsを使用していますか?ただし、すべてのコントロールobsは治療によって異なりません...
集合式

回答:


11

差異の差異(DiD)の優れた機能は、実際にはパネルデータを必要としないことです。処理が何らかの集計レベル(都市の場合)で行われることを考えると、処理の前後に都市からランダムな個人をサンプリングするだけで済みます。これにより、 を推定し、治療の予想される事後結果の差異として治療の因果関係を得ることができます。処理されたコントロールから予測される事後結果の差を差し引いたもの。

yist=Ag+Bt+βDst+cXist+ϵist

人々が治療指標の代わりに個々の固定効果を使用するケースがあり、これは治療が行われる凝集の明確なレベルがない場合です。その場合、を推定します ここで、は、治療を受けた(例えば、いたるところに起こっている雇用市場プログラム)。詳細について、Steve Pischkeによる講義ノートを参照してください。

yit=αi+Bt+βDit+cXit+ϵit
Dit

設定では、個々の固定効果を追加しても、ポイント推定に関して何も変更されません。治療インジケーターは、個々の固定効果によって吸収されます。ただし、これらの固定効果は、残差の分散の一部を吸収する可能性があるため、DiD係数の標準誤差が減少する可能性があります。Ag

これが事実であることを示すコード例を次に示します。私はスタタを使用しますが、これを任意の統計パッケージに複製できます。ここの「個人」は実際には国ですが、それらは依然としていくつかの治療指標に従ってグループ化されています。

* load the data set (requires an internet connection)
use "http://dss.princeton.edu/training/Panel101.dta"

* generate the time and treatment group indicators and their interaction
gen time = (year>=1994) & !missing(year)
gen treated = (country>4) & !missing(country)
gen did = time*treated

* do the standard DiD regression
reg y_bin time treated did

------------------------------------------------------------------------------
       y_bin |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
        time |       .375   .1212795     3.09   0.003     .1328576    .6171424
     treated |   .4166667   .1434998     2.90   0.005       .13016    .7031734
         did |  -.4027778   .1852575    -2.17   0.033    -.7726563   -.0328992
       _cons |         .5   .0939427     5.32   0.000     .3124373    .6875627
------------------------------------------------------------------------------

 * now repeat the same regression but also including country fixed effects
 areg y_bin did time treated, a(country)

------------------------------------------------------------------------------
       y_bin |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
        time |       .375    .120084     3.12   0.003     .1348773    .6151227
     treated |          0  (omitted)
         did |  -.4027778   .1834313    -2.20   0.032    -.7695713   -.0359843
       _cons |   .6785714    .070314     9.65   0.000       .53797    .8191729
-------------+----------------------------------------------------------------

したがって、個々の固定効果が含まれている場合、DiD係数は同じままであることがわかります(これaregは、Stataで使用可能な固定効果推定コマンドの1つです)。標準誤差はわずかに厳しく、元の治療指標は個々の固定効果によって吸収されたため、回帰で低下しました。

コメント
応えて、私は人々が治療グループ指標ではなく個々の固定効果をいつ使用するかを示すためにピシュケの例を述べました。あなたの設定は明確に定義されたグループ構造を持っているので、あなたがモデルを書いた方法は完璧にうまくいきます。標準エラーは、都市レベル、つまり処理が行われる集計レベルでクラスター化する必要があります(サンプルコードではこれを行っていませんが、DiD設定では、Bertrand et alの論文で示されているように標準エラーを修正する必要があります)。

発動機に関しては、彼らはここで果たす役割の多くはありません。治療後の期間治療を受けた都市に住んでいる人の治療指標は1です。DiD係数を計算するには、実際には4つの条件付き期待値、つまり Dstst

c=[E(yist|s=1,t=1)E(yist|s=1,t=0)][E(yist|s=0,t=1)E(yist|s=0,t=0)]

したがって、最初の2年間は治療対象の都市に住んでいる個人に4つの治療後期間があり、残りの2期間は統制都市に移動した場合、最初の2つの観測値がの計算に使用されおよびの最後の2つ。移動が原因ではなく、時間の経過に伴うグループの違いから識別が行われる理由を明確にするために、単純なグラフでこれを視覚化できます。結果の変化が本当に治療によるものであり、同時に効果があると仮定します。治療開始後、治療を受けた都市に住んでいて、その後統制都市に移動した個人がいる場合、結果は治療前の状態に戻るはずです。これは、下の様式化されたグラフに示されています。E(yist|s=1,t=1)E(yist|s=0,t=1)

ここに画像の説明を入力してください

ただし、他の理由で引越業者について考えることもできます。たとえば、治療に永続的な効果がある場合(つまり、個人が動いても結果に影響を与える場合)


2
いい答え。ここで都市レベルでエラーをクラスター化することをお勧めしますか?
Dimitriy V.Masterov

すばらしい答え、ありがとう。あなたのEQは12ページのEQ 3ですよね?Pischkeはこの部分を「ただし、治療が割り当てられる自然単位がない場合があります。代わりに、特定の時点で治療を受ける人とそうでない人」があります。しかし、実際にはそうではありません。治療は私の設定の都市(または任意のグループ)レベルで行われます+パネルデータがあります。それはおそらくクラスタ化されたseを使用した正しいモデルである可能性があります。あなたは何と言うでしょう?個人が長年にわたって都市間を移動できるとしたらどうでしょうか。その場合、「治療済み」のcoefは、発動機に基づいて識別されますよね?
グレッグ

@ DimitriyV.Masterov Bertrandらによる推奨は、治療が行われるグループレベルで標準誤差をクラスター化することです。別の方法として、ブロックブートストラップを置き換えて使用することもできますが、これも都市レベルで行われます。
アンディ

@greg回答を編集して、コメントにもう少し詳しく回答します。これが役に立てば幸いです:-)
Andy

複数の期間を使用する場合、違いはありますか?ダミーのD_i_tは、イベント前のすべての期間でゼロになり、イベント後のすべての期間で1になります。2つのピリオドを使用しただけでも同じではないでしょうか。@Andy
金華王

1

簡単に言えば、ユニットまたは処理されたグループレベルで固定効果を使用しても推定は変化せず、推論のみです。通常、単位固定効果を使用すると、より多くの変動が吸収されるため、標準誤差が小さくなります。

ユニットが同じ集約グループに属しているかどうかはこの結果を変更しません(処理されたグループレベルの定義方法と、繰り返しの断面ではなくパネルが必要であるという事実のみが変更されます)。

ただし、同値は共変量Xがない場合にのみ有効であることに注意してください。Xが得られるとすぐに、単位固定効果を使用するかグループ固定効果を使用するかにかかわらず、結果は異なります。

以下の例は、Xがある場合とない場合の2つのケースで、3つの推定量を比較します。推定量は次のとおりです。

  1. OLS
  2. (処理された)グループの固定効果を持つFE
  3. ユニット固定効果のFE

#>              OLS         FE treated  FE unit   OLS x       FE treated x  FE unit x
#> ----------------------------------------------------------------------------------
#> (Intercept)   0.500 ***                         0.491 ***                         
#>              (0.094)                           (0.107)                            
#> did          -0.403 *    -0.403 *    -0.403 *  -0.407 *    -0.407 *      -0.460 * 
#>              (0.185)     (0.185)     (0.183)   (0.189)     (0.189)       (0.187)  
#> x1                                              0.018       0.018         0.220   
#>                                                (0.104)     (0.104)       (0.165)  
#> ----------------------------------------------------------------------------------
#> Num. obs.    70          70          70        70          70            70       
#> ==================================================================================
#> *** p < 0.001, ** p < 0.01, * p < 0.05

コード:

library(tidyverse)
library(haven)
library(texreg)
library(lfe)


dat <- read_dta("http://dss.princeton.edu/training/Panel101.dta")  %>% 
  mutate(time = (year>=1994) ,
         treated = (country>4),
         did = time*treated)

reg_ols <- lm(y_bin~ time+ treated+ did, data = dat)
reg_fe_a <- felm(y_bin~ did | time+ treated, data = dat)
reg_fe_b <- felm(y_bin~ did | time+ country, data = dat)

reg_ols_x <- update(reg_ols, .~.+x1)
reg_fe_a_x <- update(reg_fe_a, .~.+x1)
reg_fe_b_x <- update(reg_fe_b, .~.+x1)



screenreg(list(reg_ols, reg_fe_a, reg_fe_b, reg_ols_x, reg_fe_a_x, reg_fe_b_x), 
          omit.coef = "time|treated", digits=3, 
          include.rsquared = FALSE, include.adjrs = FALSE, include.rmse = FALSE,
          custom.model.names = c("OLS", "FE treated", "FE unit", "OLS x", "FE treated x", "FE unit x"))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.