差分の差分(difference in differences: DID)モデルは、新しい治療法や政策・施策等、その効果を測定するような様々な場面で用いることができます。
例えば、ある国の政府が国民の所得を上げるための政策を実施し、一定期間後に国民の所得が5%上昇したとします。
しかし、本当にこの政策が直接的に5%の上昇をもたらしたのでしょうか?
景気回復や為替・原油価格の変動等様々な外部要因も影響したかもしれません。
または、政府が政策を実施しなくても5%上昇していたかもしれません。
そこで差分の差分モデルを使い、政府が政策を実施していた場合(処置群)の上昇率と、実施しなかった場合(対照群)の上昇率の差を比較することで、実際に政策を実施した時の純粋な政策効果を図ることができます。
Stataで施策の効果測定をしよう!「差分の差分モデル」ウェビナーのご案内
ライトストーンでは、どなたでも無料でご視聴いただけるウェビナーを開催中です。
「差分の差分モデル」ウェビナーでは、実際にStataを一緒に操作しながら差分の差分モデルの機能をコンパクトに紹介します。
詳しくはStataウェビナーページをご覧ください。
ある病院で、入院手続きの変更による入院患者の満足度の調査を行いました。
4月から調査対象の46の病院のうち、18の病院で入院手続きの変更を実施しました。
1月から7月までの入院患者の月次データを元に、病院はDIDモデルを使用して、変更後の入院手続きの満足度への効果を分析します。
アウトカムは病院における患者の顧客満足度 : 変数satisです。
これは、患者への4項目の質問に対する平均です。
変数satisは0から10の間に値を取ります。
ここで、10は満足度が最も高く、0は最も低いことを示しています。
変数procedureは、処置を受けた観測値を示しています。
調査対象が3月以降に新しい手続きを使用して病院に入院した場合は1、それ以外の場合は0です。
これによる変数satisの変化をdidregress
コマンドを使い推定してみましょう。
下記のコマンドを入力してデータをダウンロードし、内容を確認します。
. webuse hospdd
. didregress (satis) (procedure), group(hospital) time(month)
最初の(satis)
でアウトカムを指定し、続けてモデルの共変量を指定します。(今回は共変量はありません。)
次の(procedure)
は、処置変数であるバイナリ変数を指定しています。
group(hospital)
オプションとtime(month)
オプションで、モデルに含まれるグループと時間の固定効果を構築します。
group()
で指定した変数はクラスタリングのレベルを定義します。
デフォルト設定では、クラスターロバスト標準誤差です。
この例では、病院レベルでクラスター化します。
以下のように推定結果が表示されます。
最初の表には、コントロール群と実験群についての情報と、実験のタイミングが表示されています。
28の病院が古い入院手続きを継続し、18の病院が新しい入院手続きに移行しています。
実験群のすべての病院が、4番目の期間に新しい入院手続きを取り入れました。
もしいくつかの病院が後に新しい手続きを採用した場合は、最初の実験の最小時間と最大時間が異なります。
2番目の表には、ATETの推定0.85 (95% CI [0.78,0.91])が出力されています。
実験群の病院は、新しい入院手続きを導入しなかった場合に比べて、患者の満足度が0.85ポイント増加しました。
ATETの推定後は、処置群と対照群の処置が行われる直前まで同じ条件であるかを確認する必要があります。
これは、平行トレンドまたは、共通トレンドと呼ばれる仮定の検定です。
このモデルが立てる仮説のひとつは、新しい手続き導入前は、satis(患者の満足度)の推移がコントロール群と実験群で平行であるということです。
この推移を視覚的に確認するには、両群のアウトカムの平均の時間推移をプロットするか、線形トレンドモデルの結果をグラフ化します。
estat trendplots
を使って、この両方の診断を実行します。
. estat trendplots
コマンドを実行すると2つのプロットが表示されます。
グラフは処置群と対照群におけるアウトカムの変化を時系列で表しています。
赤色の基準線は処置を示しています。両方のグラフから、処置前における両群の軌跡はほぼ共通であり、平行トレンド仮定は満たされているように見えます。
新しい手続きを始める前は、コントロール群と実験群のどちらの病院も、satisは平行に推移しています。
モデルにトレンド項を追加して、検定することもできます。
線形トレンドモデルは、線形トレンドの係数の処置前後の差を推定し、この係数が0であればトレンドが平行であると判断できます。
実際に平行トレンド検定のコマンドestat ptrends
を使って、この仮定をさらに詳しく評価しましょう。
. estat ptrends
結果は下記のようになります。
P値は0.46なので、トレンドは平行であるという帰無仮説を棄却できません。
この検定結果と前述のグラフの解析が、平行トレンドの仮説を支持します。
もうひとつの検定では、コントロール群または実験群を使って、もう一方の群の動向の変化を推定できるかどうかを評価します。
これをグレンジャー因果性検定といいます。
. estat granger
結果は下記のようになります。
実験前に動向が変化しないという帰無仮説を棄却する十分な証拠がありません。
これまでの診断結果とも併せると、ATET推定の妥当性は信頼してよいことが示唆されます。
しかし、もし15の病院のデータしかない場合は、他の方法を検討する必要があります。
Bell and McCaffrey (2002)の自由度調整でバイアス補正された標準誤差を使用するためには、didregress
コマンドにvce(hc2)
オプションを使用します。
. didregress (satis) (procedure), group(hospital) time(month) vce(hc2)
Donald and Lang (2007)による集計方法を使用するには、aggregate(dlang)
オプションを使用します。
. didregress (satis) (procedure), group(hospital) time(month) //aggregate(dlang)
いくつかの係数をグループ間で変化させる場合は、varying
オプションを追加します。
. didregress (satis) (procedure), group(hospital) time(month) //aggregate(dlang, varying)
p値と信頼区間を計算するために、wild-clusterブートストラップ法を使うこともできます。
すべてのブートストラップ法で共通する事項として、結果を複製できるようにシードを設定する必要があります。
. didregress (satis) (procedure), group(hospital) time(month) // wildbootstrap(rseed(111))
以上の分析から、改めて結果を整理すると、新しい入院手続きの導入により顧客満足度が約1ポイント上昇し、根拠となる差分の差分モデルにおいて平行トレンドの仮定を満たしていることが確認できました。
これまでの例では豊富なデータがあることを前提としたものでしたが、多くの研究においては、グループ内の標本の数はごく小さいものです。
didregress
コマンドとxtdidregress
コマンドではこのような分散不均一が存在する場合に、標準誤差を調整する必要があります。
そこで、より精度の高い推定・検定を行うことができる「ワイルドブートストラップ」を用います。
また、Bell and McCaffrey(2002)の提案した自由度調整済みを伴うバイアス修正クラスタ標準誤差を使用する方法もあります。
通常のブートストラップ法とは異なり、ワイルドブートストラップ方では、選択分布を利用するリサンプリングを行います。
ある週の6つの郡のデータ(セット)を使い説明します。
処置群は群1と2のみ、それ以外は対照群です。ATETの真の値は1.0です。
まずは、デフォルトの標準誤差を使用して推定しましょう。
. use https://www.stata-press.com/data/r17/smallg, clear
. didregress (outcome x i.b)(treated),group(country)time(year)
最初の表から、グループを構成する要素が小さいことが分かります。
この結果からは、点推定の結果の値-1.0に近く、区間推定においても真の値が区間推定ないに収まっており、理想的な結果であることが分かります。
冒頭でも説明したように、このようなグループ数が少ないときに用いる有効な方法がワイルドブートストラップです。
それでは推定してみます
. didregress (outcome x i.b)(treated),group(country)time(year)///wildbootstrap(rseed(123) errorweight(webb))
この結果では、信頼区間は95%ではなく、95.10%となりました。
推定結果はデフォルトの物よりp値が大きくなり、信頼区間も広くなっています。
しかし、このように標準誤差を調整しても依然として、有意な効果があることが分かります。
ワイルドブートストラップはグループ数が10より小さいときに、特に威力を発揮します。
Stata is a registered trademark of StataCorp LLC, College Station, TX, USA, and the Stata logo is used with the permission of StataCorp.