本ページは 対照群(Control Group)を多角的に解説します。 上のチップは、 検索・関連語の手がかりです。
対照群(Control Group)は、 因果推論の根本概念。 医療臨床試験、 教育介入評価、 政策評価、 A/B テストなど、 「効果はあったか?」を問うあらゆる場面で使われます。 ランダム化比較試験(RCT, Randomized Controlled Trial)は対照群を使う研究デザインの黄金基準です。
因果効果の定義(反事実モデル):
因果効果 = 処置を受けた結果 − 処置を受けなかった結果
同一個人で「両方の結果」を観察することは不可能(fundamental problem of causal inference)。 そこで、 対照群を「処置を受けなかった世界」の代理として使います。
| 研究デザイン | 対照群の作り方 | 因果の強さ |
|---|---|---|
| RCT | ランダム割付 | ★★★★★(黄金基準) |
| 準実験(DiD) | 処置前後の差を比較 | ★★★★ |
| マッチング | 類似サンプルを対照に | ★★★ |
| 傾向スコア | 処置確率で重み付け | ★★★ |
| 単純比較 | (なし) | ★(因果と呼べない) |
例:新薬の効果を見る RCT(n=100 ずつ):
| 群 | n | 回復率 |
|---|---|---|
| 新薬(処置群) | 100 | 72% |
| プラセボ(対照群) | 100 | 55% |
| ATE = 0.72 − 0.55 = | +17% | |
「新薬で回復率 +17 ポイント」と因果的に主張できる(ランダム化が成功している前提)。
最小コードで動かしてみる例:
1 2 3 4 5 6 7 8 9 10 11 12 13 | import pandas as pd import numpy as np from scipy import stats # RCT データ:処置群 vs 対照群 df = pd.read_csv('data/raw/trial_data.csv') treat = df[df['群'] == '処置']['結果'] ctrl = df[df['群'] == '対照']['結果'] ate = treat.mean() - ctrl.mean() t, p = stats.ttest_ind(treat, ctrl) print(f'ATE = {ate:.3f}, p = {p:.4f}') |