[Statistics]Difference in Difference 差の差分法

2時点(以上)で測定されたデータにおいて、処置群と対照群との差を検定の対象とする。

上記は2時点における処置群と対照群との差。出発点が違うのでTime2時点での差を比較することはできない。

上の図で、2時点における処置群と対照群の結果を示す。出発点が異なれば、Time2時点での差を検定に持ち込めるが、Time1時点での結果が異なる。

この場合、有用なのがDifference in Difference 差の差分法解析である。具体例で見てみる。学校A(処置群)と学校B(対照群)があり、学校Aである教育法が行われたとする。テストの平均点をoutcomeとする。

学校A(処置群)学校B(対照群)
時点15045+5
時点27055+15
変化+20+10
Table

数学的には、例えば上記がテストの平均点が回帰モデルで$$y_{xt} = p_x + q_t + \delta D_{xt} + \epsilon_{xt} $$で表されるとする。\(x\)は学校の違いで、\(t\)は時間を表すものとする。\(D_{xt}\)は処置を表すダミー変数で、\(\epsilon\)は誤差である。

$$y_{A1} = p_A + q_1 + \delta D_{A1} + \epsilon_{A1}$$

$$y_{A2} = p_A + q_2 + \delta D_{A2} + \epsilon_{A2}$$

$$y_{B1} = p_B + q_1 + \delta D_{B1} + \epsilon_{B1}$$

$$y_{B2} = p_B + q_2 + \delta D_{B2} + \epsilon_{B2}$$

であり、上の\(4\)式から

$$y_{A2}-y_{A1} -(y_{B2}-y_{B1}) = \delta (D_{A2}-D_{A1})- \delta (D_{B2}-D_{B1}) + (\epsilon_{A2}-\epsilon_{A1}) – (\epsilon_{B2}-\epsilon_{B1})$$

ここで、\(D\)は処置効果を表すダミー変数であったから、\(D_{A2} = 1, D_{A1} = D_{B1} = D_{B2} = 0 \)とすると、$$y_{A2}-y_{A1}-(y_{B2}-y_{B1}) = \delta$$となる。この\(\delta\)が処置効果を表すと考えられる。

上の例では、時点2の時点での学校Aと学校Bの平均点の差である\(+15\)を比較するのではなく、差の差である\((20-10) = 10\)を比較することに当たる。

重要な仮定として、「仮に処置がなかったとしたら、両者は同じトレンドで推移する」ということがある。これを平行トレンドの仮定という。この仮定が成り立たない場合、差の差分法を考えることはできない(処置効果を単独で説明することはできない)。

【Stataでの実装】差の差分法は要するに回帰分析なので、回帰分析ができるのであれば統計ソフトは何でも良い。Stataではデータフレームをlong型にして、xtregなどで行えば良い。

例えば、cohort \(= 1, 2\)、時点(time)を\(0, 1\)として、ダミー変数としてcohort\(*\)時点とすると、

xtreg y cohort time cohort##time

あるいは\(D = cohort*time\)としておいてから、

xtreg y cohort time D

とすれば、cohort##timeあるいは\(D\)の項の係数の検定を施行することになる。

\(D\)はダミー変数なので、例えばcohortが\(= 2, 5\)あるいは\(=a, b\)などとしても問題ない。解析の時に

xtreg y cohort time ib(2).D
xtreg y cohort time ib("a").D

などとすれば結果は同じである。

タイトルとURLをコピーしました