目標

合成コントロール法(Synthetic Control Method)について理解する

合成コントロール法

合成コントロール法は、因果推論の手法のひとつで、政策や介入(イベント)の効果を評価するために用いられます。特に「処置を受けたのが1つのグループ(または地域・国)だけ」の場合に有効です。

ポイントは、処置を受けなかった他のグループ(対照群)を 「加重平均で組み合わせて、似たような『合成グループ』を作る」 ことです。その「合成グループ」の推移を 処置がなかった場合の反実仮想(カウンターファクト)」 とみなし、処置後の差分を「政策効果」として解釈します。

  • 政策評価:特定の都市でのみ最低賃金を引き上げたとき、雇用に与える影響
  • 公衆衛生:ある国で禁煙法を導入したとき、喫煙率の変化
  • 経済学:オリンピック開催がその都市のGDPに与える影響

例)ある県で禁煙条例を導入した、その効果を測りたい。

分析の流れ

  1. 処置群(Treatment Unit):介入を受けた対象(例:条例を導入した県)
  2. ドナー群(Donor Pool):介入を受けなかった他の対象(例:導入していない他県)
  3. 重み付け:ドナー群をうまく組み合わせ、処置群の「介入前の推移」にできるだけ近づける
  4. 効果推定:介入後に処置群と合成コントロールの差があれば、それを政策効果と解釈する

合成コントロール法の実施例

サンプルデータ(架空例)

「ある県(処置群A)」で 2015年に禁煙条例を導入したとする例です。
比較対象は「県B」「県C」「県D」。アウトカムは「喫煙率(%)」です。

年度処置群A県B県C県D
201025262423
201124252323
201223242322
201322242221
201421232221
2015:条例導入19232221
201617232221
201715222220
201814222120

合成コントロールの重み付け(w)

Solver(ソルバー)で「二乗誤差の最小化」の処理を行います。

(1)「県Bの重み」「県Cの重み」「県Dの重み」を設定する

  • 重みの値は任意ですが、設定は合計が「1」となるように設定します。
  • 「県Bの重み」+「県Cの重み」+「県Dの重み」= 1
  • ※ 例えば、「県Bの重み」=0.4、「県Cの重み」= 0.4、「県Dの重み」=0.2
  • ※ 合計が「0」(例えば、「県Bの重み」=0、「県Cの重み」= 0、「県Dの重み」=0だとエラーとなることがあります。)

(2)合成コントロールの列を作成して計算式をセルへ追加し、全行へセルをコピーします。

セルG1=D3*$K$2 + E3*$K$3 + F3*$K$4

(3)誤差(残差)の列を作成して計算式をセルへ追加し、全行へセルをコピーします。

H列に残差(処置−合成)を置く:セルH3 = SUM(C3-G3)

(4)目的関数(SSE)を作成します。計算に利用するセルは介入前の年の誤差までです。
下の式は各セルを二乗して合計を算出しています。

セルK7 = SUMPRODUCT(H3:H7, H3:H7)

(5)Solver の設定

  • 目的セル:$K$7(SSE)を 最小化
  • 変数セル:$K$2:$K$4
  • 制約
    • K2:K4 >= 0(非負制約)
    • K5 = 1(重みの合計が1)
  • 解法は「GRG 非線形」または「単体法(シンプレックスLP)」を選択します。
  • 「解く」をクリックして実行 → 最適な w が得られます。

データタブ→分析から「ソルバー」をクリックします。

制約は右の追加ボタンから追加します。

設定が複数ある場合は条件入力後追加をクリックします。

完了したら制約条件の追加ボックスの「OK」をクリックします。

「解決」を実行します。

出力結果

県Bの重み 0.433333333
県Cの重み 0
県Dの重み 0.566666667
合計 1
目的変数(SSE) 1.366666667

出力結果とその解釈

出力結果:

重みの意味:県B=0.4333、県C=0、県D=0.5667
介入前(2010–2014)の県Aの推移は、BとDの加重平均で最もよく再現でき、Cは不要だった(重み0)と解釈できます。

前処置期の適合度:SSE=1.3667(5年分)。RMSPE ≈ √(1.3667/5) ≈ 0.52ポイント
尺度(喫煙率20%前後)に対して十分小さめ=良好なフィットと判断できます。
→ 介入後に大きな乖離が出れば、それを政策効果と解釈しやすい状態。

尺度(喫煙率20%前後)に対して十分小さめ=良好なフィットと判断できるのは何故か?

合成コントロール法は、介入が無かったとした反実仮想を「合成コントロール」で近似することでした。つまり、介入前から両者の推移がしっかり一致していれば、介入後の差を「政策効果」として解釈できます。

逆に、介入前からズレが大きいと、モデル誤差と介入後の差を区別しにくくなり、因果解釈が弱くなります。よって、“十分小さい”RMSPEが望ましいのです。

目安(実務的ガイドライン)
1) 相対RMSPE(水準に対する大きさ)

  • 定義:RMSPE_pre / 介入前の平均水準
  • 目安:
    • ≤ 3% … とても良い(◎)
    • 3–5% … 良い(○)
    • 5–10% … 要注意(△)
    • > 10% … 不十分(×)
  • 直感:アウトカムの桁(スケール)に対して、前処置期のズレが十分小さいか。

2) 正規化RMSPE(ばらつきに対する大きさ)

  • 定義:RMSPE_pre / STDEV.P(介入前A)
  • 目安:
    • < 0.5σ … とても良い(◎)
    • 0.5–0.8σ … 良い(○)
    • 0.8–1.0σ … 要注意(△)
    • ≥ 1.0σ … 不十分(×)
  • 直感:自然変動(年ごとの揺れ)と比べて十分小さいか。

3) Post/Pre 比(介入後の拡大度)

  • 定義:RMSPE_post / RMSPE_pre
  • 目安(プレースボと併用前提):
    • > 2–3 … 変化の兆候
    • > 5 … 強い示唆
  • 但し、プレースボ(後述)で同程度の比が他ユニットでも頻発しないことを確認するのが重要です。

4) プレースボ実験での順位(推奨)

  • やり方:各対照県を「擬似処置」とみなして同じ手順を回し、Post/Pre 比を並べます(介入前フィットが極端に悪い擬似は除外)。
  • 解釈目安:
    • 処置群の比が上位10%(90–95パーセンタイル以上)に位置 → かなり説得力
    • 上位25%程度 → 一定の示唆(他の検証も併用)

5) 目視チェック(補助)

  • 介入前に A と合成が重なって見えるか/残差にトレンドがないか。

介入後の推定効果(A−合成)
同じ重みで2015年以降の「合成コントロール」を作ると次のようになります。

A(実測)合成効果 = A−合成
201519.0021.87-2.87
201617.0021.87-4.87
201715.0020.87-5.87
201814.0020.87-6.87

負の値は「実測が合成より低い」=条例導入で喫煙率が下がったことを示唆。しかも年を追って効果が拡大しており、定着・累積効果の可能性があります。

折れ線グラフで可視化(二種類作成)

折れ線(A と 合成)+介入時点
目的:介入前の一致介入後の乖離を直感で見せる。

表示要素とポイント

  • 折れ線:A、合成コントロールの「2本」です。
  • 介入年以降の期間に薄い網掛けをします。
  • 凡例は上側、タイトルに「2015年(介入)」を明記します。

折れ線(ギャップ=A-合成)
目的:効果の符号と、その大きさを一目で伝える。

表示要素とポイント

  • 0の基準線を太めに
  • 介入年以降の期間に薄い網掛けをします。
  • 介入前はギャップが0付近で小さいこと、介入後に大きく離れることが分かる配置。

今回は以上となります。

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...