この記事は、クーポンを無作為に配った HIV 検査の実験から、「配った効果」と「結果を知った効果」を取り出す回です。もらっても来ない人も、なしで来る人もいるので、受け取った人どうしの比較には自己選択が混ざります。割付のままの引き算 ITT と、それを遵守率で割る LATE を、マラウイの実験データと真の効果を仕込んだ合成データで組み立てます。
登場人物
遠藤顧問: データ分析の社外顧問。答えを言わずに問いで返す/さくら: データアナリスト 1 年目。数字を出すのは速いが、相関を因果と読み違える
1. 1 文で言うと
1 文で言うと
割付が守られない実験でも、割付のままの引き算 ITT は「配ったこと」の効果として因果です。それを遵守率(第 1 段階)で割った LATE は、割付に従って動いた人(コンプライヤー)だけの効果で、全員の平均効果(ATE)とは別物です。
- 今日の数字: クーポンは受領率を33.9%から 78.9% へ動かし、その差の 45.1ポイント が、LATE の分母になる第 1 段階です。
2. 今日の問い
今日の問い
無料でHIV検査の結果を知れるクーポンをランダムに配った。でも受け取りに来ない人もいるし、クーポンなしで自分から来る人もいる。
「クーポンを配った効果」と「結果を知った効果」は明らかに別物のはず。割付が守られない実験から、どちらの効果を、どうやって取り出せるか?
読み終えたら、ITT と LATE がそれぞれ誰の何の効果か、2 つをつなぐ「遵守率で割る」式がなぜ成り立つかを説明できます。
今日のゴールは、この2つの効果に ITT と LATE という名前を付け、両者をつなぐ「遵守率で割る」という1本の式を、実データとオラクル合成の両方で手にすることです。3.1 で ITT、3.2 でコンプライヤー 4 分類と LATE の式を押さえ、4 で実データと合成データの数字を確かめます。ここでDay 17の操作変数法が、RCTの中に再登場します。前の回から使うのは次の 2 つです。
- Day 4(RCT): 割付がくじで決まるなら、2 群の平均の引き算がそのまま因果効果になる
- Day 17(操作変数法): 外生・関連・除外制約の 3 条件がそろう変数 Z を使って、D の効果を取り出す
3. 概念
先に、手元の道具との違いを置きます。A/B テストなら、無作為に分けた 2 群の平均を引けば効果になります。回帰や予測モデルなら、「結果を受け取ったか」を説明変数に入れて係数を読みたくなります。今日の場面は、無作為に配ったのはクーポンで、受け取るかどうかは本人が決めます。受け取ったかで比べると自己選択が混ざり、配ったかで比べると効果が薄まります。ITT と LATE は、この 2 つの困りごとを、割付 Z を使って切り分ける道具です。
3.1 非遵守とITT:それでも割付の引き算は因果である
題材はThornton (2008) の実験です。マラウイの農村で無料のHIV検査を実施し、受検者に「結果を聞きに来ると換金できるクーポン」をランダムに配りました。関心があるのは「自分の感染状態を知ること」がその後の行動(コンドーム購入など)に与える効果です。ここには3つの変数がいます。
- $Z$:クーポンの割付。研究者が制御し、ランダムです。
- $D$:実際に結果を受け取ったか。これは本人が決めます。
- $Y$:その後の行動。効果を知りたい先です。
割付$Z$と受療$D$(実際に処置を受けること。今日のデータでは検査結果を受領すること)が一致しない状態を**非遵守(noncompliance)**と呼びます。クーポンをもらっても行かない人、もらわなくても行く人がいる。Day 4 で「RCTなら引き算が因果」と言ったときは、暗黙に$Z = D$を仮定していました。現実の実験でこの仮定はほぼ必ず崩れます。
では何を引き算すべきか。素朴に「受け取った人と受け取らない人」($D=1$ vs $D=0$)を比べたくなりますが、これは駄目です。$D$は自己選択なので、健康への関心のような交絡が全部戻ってきて、Day 6 以前の観察データに逆戻りします。一方、割付$Z$のままの引き算を考えます。
$$
\mathrm{ITT} = E[Y \mid Z=1] - E[Y \mid Z=0]
$$
右辺は、クーポンを配られた群のその後の行動の平均から、配られなかった群の平均を引いた値です。実際に結果を受け取ったかどうかは一切見ません。この引き算は、$Z$がランダムである限り厳密に因果効果です。これを ITT(intent-to-treat、治療企図効果)と呼びます。ただしその中身は「クーポンを配ったことの効果」であって、「結果を知ったことの効果」ではありません。配っても動かない人の分だけ、知る効果が薄まって混ざった数字です。臨床試験の主解析がITTなのは、この「薄まってはいるが因果として堅い」性質のためです。
3.2 コンプライヤー4分類とLATE:割付を操作変数にする
この小節が今日の主役です。前半で人を割付への反応で 4 タイプに分け、後半で ITT を遵守率で割る式(LATE)を条件から読みます。
「知ったことの効果」に迫るために、人を割付にどう反応するかで分類します。処置の潜在的結果ならぬ、受療の潜在的結果$D(0), D(1)$(クーポンなし/ありのときに受領するか)を考えると、組み合わせは4通りです。
- コンプライヤー($D(0)=0, D(1)=1$):割付に従う人。クーポンが来たときだけ受領します。
- 常時受領者(always-taker、$D(0)=D(1)=1$):割付に関係なく受領する人。
- 非受領者(never-taker、$D(0)=D(1)=0$):割付に関係なく受領しない人。
- defier(天邪鬼、$D(0)=1, D(1)=0$):クーポンが来るとかえって受領しない人。
やっかいなのは、$D(0)$ と $D(1)$ の両方を同時に観測できないことです。私たちが見られるのは、割付$Z$と受領$D$の組み合わせ4通りだけで、そこからタイプは一意には決まりません。
はっきり見分けられるのは、型が1つに決まる2マスだけです(defier がいないとすれば。この仮定はすぐあとで置きます)。残りの2マスは2タイプの混ざりもので、この見分けのつかなさが、このあとずっと効いてきます。
ここで置く仮定が単調性(monotonicity)です。クーポンをもらって受領をやめる人はいない、つまりdefierはいないとみなします。この設定は、実はDay 17の操作変数の3条件そのものです。$Z$はランダムなので外生、$Z$は$D$を動かすので関連、そして除外制約は「クーポンは、受領$D$を経由してしか$Y$に効かない」という形になります。
欲しかったのは「結果を知ったこと」の効果です。受け取ったかどうか($D$)で比べると自己選択が戻り、割付($Z$)のままの ITT では薄まります。この2つの困りごとの出口が、次の分解です。単調性と除外制約のもとで、ITTの中身を分解できます。常時受領者と非受領者は、割付が変わっても行動$D$が変わらないので、除外制約より$Y$も変わりません。つまりITTはまるごとコンプライヤーから来ています。ITT =(コンプライヤー割合)×(コンプライヤーの平均効果)。だから遵守率で割れば、知ったことの効果が出ます。
式にすると次のとおりです。
$$
\frac{E[Y \mid Z=1] - E[Y \mid Z=0]}{E[D \mid Z=1] - E[D \mid Z=0]}
= E[,Y(1) - Y(0) \mid D(1) > D(0),]
$$
左辺はWald推定量と呼ばれます。分子はいま定義したITT、分母の$E[D \mid Z=1] - E[D \mid Z=0]$は割付で受領率がどれだけ動いたかで、第1段階(=コンプライヤー割合)と呼ばれます。右辺が LATE(local average treatment effect、局所平均処置効果)、つまりコンプライヤーに限った平均効果です(Imbens & Angrist 1994)。
式は左からではなく、条件から読みます。
- 右辺の縦棒の右、$D(1) > D(0)$ は「クーポンが来れば受領し($D(1) = 1$)、来なければ受領しない($D(0) = 0$)人たち」、つまりコンプライヤーです。
- 縦棒の左の $Y(1) - Y(0)$ は、その人が結果を知った場合と知らなかった場合の行動の差(Day 2 の潜在的結果)で、$E[,\cdot,]$ はその平均です。つなげると「コンプライヤーたちの、結果を知ったことの平均効果」。
- 左辺は分母から読みます。割付で受領率がどれだけ動いたかで、割付で行動がどれだけ動いたかを割る。薄まった ITT を、薄めた割合で割り戻す式です。
式にしたご利益は、誰がコンプライヤーかを1人も名指しできないのに、その人たちの平均効果が出せることです。左辺は$Z$・$D$・$Y$の観測できる平均だけでできていて、見えない潜在的結果は1つも出てきません。そしてこのWald推定量は、$Z$を操作変数、$D$を内生変数(Day 17 で出た、交絡が混ざってしまう説明変数)とした2SLS(Day 17)と正確に一致します。RCTの非遵守問題と操作変数法は、同じ1つの道具だったわけです。
4. 手を動かす
4.1 実データで割付と受領のズレを見る
causaldata の thornton_hiv(Day 4・5 で使ったのと同じ実験です)で、割付$Z$( any =金銭インセンティブの有無)と受領$D$( got =結果を受け取ったか)のズレを確かめます。なお、このパッケージ収載版には下流のアウトカム$Y$(コンドーム購入など)が入っていないため、実データで見るのは割付と受領の関係まで、ITTとLATEの答え合わせは 4.2 のオラクル合成で行います。
コード
from causaldata import thornton_hiv
d = thornton_hiv.load_pandas().data
d = d.dropna(subset=["any", "got"]).copy() # 割付と受領の両方が記録された人に絞る
r0 = d.loc[d["any"] == 0, "got"].mean() # クーポンなしの受領率
r1 = d.loc[d["any"] == 1, "got"].mean() # クーポンありの受領率
n0 = (d["any"] == 0).sum()
n1 = (d["any"] == 1).sum()
print("クーポンなし: 受領率 %.1f%% (%d人)" % (100 * r0, n0))
print("クーポンあり: 受領率 %.1f%% (%d人)" % (100 * r1, n1))
print("第1段階(受領率の差)= %.3f" % (r1 - r0))
print("単調性のもとでの割合: コンプライヤー %.1f%% / 常時受領者 %.1f%% / 非受領者 %.1f%%"
% (100 * (r1 - r0), 100 * r0, 100 * (1 - r1)))
出力
クーポンなし: 受領率 33.9% (623人)
クーポンあり: 受領率 78.9% (2211人)
第1段階(受領率の差)= 0.451
単調性のもとでの割合: コンプライヤー 45.1% / 常時受領者 33.9% / 非受領者 21.1%
割付は見事に守られていません。クーポンなしでも 33.9% が自分から受領し(この人たちが常時受領者の顔です)、クーポンありでも21.1%は受領しません(非受領者)。それでも割付は受領率を33.9%から 78.9% へ、45.1ポイント動かしました。これが第1段階です。ここは、私が今回の準備でいちばん唸った箇所です。単調性とランダム割付を認めるだけで、個人を1人も特定できないのに層の割合は言える。誰がコンプライヤーなのかは最後まで分からないのに、何割いるかは分かる、という妙な状態が成立します。クーポンなし群の受領率がそのまま常時受領者の割合、クーポンあり群の未受領率が非受領者の割合、残りがコンプライヤーです。下の図がこの4分類の地図です。
4.2 オラクル合成でITTを作り、遵守率で割る
LATEが「誰の」効果なのかは、真の効果を握った合成データがいちばんはっきり見せてくれます。Thorntonの構図を模した世界を作ります。コンプライヤー40%・常時受領者30%・非受領者30%で、defierはゼロ(単調性が成り立つ世界)。効果は層ごとに変え、常時受領者は「もともと知りたい人ほど得るものも大きい」つもりで+8.0、コンプライヤーは+2.0、非受領者は0とします。ベースラインも層で変えて、自己選択の交絡を仕込みます。
出力を開く前に予想してください。ITT を第 1 段階で割った値は、仕込んだ効果のどれに近づくでしょうか。
コード
import numpy as np
rng = np.random.default_rng(21)
N = 50000
# 遵守タイプを仕込む(defier はゼロ=単調性が成り立つ世界)
typ = rng.choice(["complier", "always", "never"], size=N, p=[0.4, 0.3, 0.3])
z = rng.binomial(1, 0.5, N) # 割付(クーポン)はランダム
d_ = np.where(typ == "always", 1,
np.where(typ == "never", 0, z)) # 受領はタイプが決める
tau = np.select([typ == "complier", typ == "always"], [2.0, 8.0], 0.0) # 各層の真の効果
base = np.select([typ == "always", typ == "never"], [10.0, 2.0], 5.0) # 各層のベースライン
y = base + rng.normal(0, 1, N) + tau * d_ # 効果は受領 D を経由してだけ乗る
print("真のATE = %.2f / 真のコンプライヤー効果 = %.2f"
% (tau.mean(), tau[typ == "complier"].mean()))
print("素朴なD比較 = %.2f" % (y[d_ == 1].mean() - y[d_ == 0].mean()))
itt = y[z == 1].mean() - y[z == 0].mean()
fs = d_[z == 1].mean() - d_[z == 0].mean()
print("ITT = %.3f / 第1段階 = %.3f" % (itt, fs))
print("Wald推定 = ITT ÷ 第1段階 = %.3f" % (itt / fs))
出力
真のATE = 3.19 / 真のコンプライヤー効果 = 2.00
素朴なD比較 = 10.45
ITT = 0.822 / 第1段階 = 0.397
Wald推定 = ITT ÷ 第1段階 = 2.071
計算の道筋は次の 3 段です。数字は 4.2 の出力と同じものです。
3つの数字を見比べてください。まず素朴な$D$比較は 10.45。ベースラインの高い常時受領者が$D=1$側に集まるせいで、真のどの効果からもかけ離れます。次にITTは 0.822。真のコンプライヤー効果2.0が、割付で動く人が39.7%しかいないために0.4倍に薄まった数字で、理論値どおり 2.0 × 0.397 ≒ 0.79 の近くにいます。そしてITTを第1段階で割ったWald推定は 2.071。真のコンプライヤー効果 2.00 をほぼ正確に復元しました。真のATE 3.19 ではないことに注意してください。割り算が拡大して見せてくれるのは、あくまで割付で動いた人たちの効果です。
4.3 2SLSで同じ答え、そして真値との突き合わせ
3.2 の最後で「Wald推定は2SLSと一致する」と言いました。Day 17で使った linearmodels で、$Z$を操作変数にした2SLSを回して確かめます。
コード
import pandas as pd
from linearmodels.iv import IV2SLS
df = pd.DataFrame({"y": y, "d": d_, "z": z})
df["const"] = 1
iv = IV2SLS(df["y"], df["const"], df["d"], df["z"]).fit(cov_type="robust")
print("2SLSのLATE = %.3f (SE %.3f)" % (iv.params["d"], iv.std_errors["d"]))
print("第1段階のF値 = %.0f" % iv.first_stage.diagnostics.loc["d", "f.stat"])
print("真のコンプライヤー効果 = %.2f / 真のATE = %.2f"
% (tau[typ == "complier"].mean(), tau.mean()))
出力
2SLSのLATE = 2.071 (SE 0.131)
第1段階のF値 = 9344
真のコンプライヤー効果 = 2.00 / 真のATE = 3.19
2SLSの推定値は 2.071 で、4.2 の手計算のWald推定と小数第3位まで一致します。標準誤差と第1段階のF値(Day 17の弱操作変数チェック。遵守率が高いのでFは十分大きい)がおまけで付いてくるのが2SLSを使う実利です。改めて並べると、2SLSが復元したのは真のコンプライヤー効果 2.00 であって、真のATE 3.19 ではありません。もし「この施策を全員に強制したら」を見積もりたいなら、LATEをそのまま使うと35%ほど過小評価します。逆に常時受領者の効果が小さい世界なら過大評価です。LATEからATEへの外挿は、データではなく仮定が支えます。
成り立つ場合と成り立たない場合
| 除外制約 | データに出るもの | 今日の 2.071 の読み方 |
|---|---|---|
| 成り立つ | 出ない。観測できるのは $(Z, D, Y)$ の組だけで、クーポンが受領 $D$ を通してしか行動 $Y$ に効かないことは、データの外の知識で議論して買う | 割付に従って動く人(コンプライヤー)の平均効果と読める。ITT 0.822 は「配ったこと」の効果として別に残る |
| 成り立たない | 出ない。クーポンが受領 $D$ を通らずに行動 $Y$ を変えても、観測できる組には現れない | 2.071 はバイアスを持つ。ITT 0.822 だけが、除外制約なしで「配ったこと」の効果と言える |
5. 判断の基準
LATE は、割付が守られない RCT ならいつでも報告してよい数字ではありません。報告してよいか、するなら何を添えるかを、問い 3 つに絞りました。上から順にたどり、最初に右へ出たところが、いまやることです。
- Q1 は仮定の話で、データからは検証できません。 除外制約は「クーポンは受領$D$を通してしか行動$Y$に効かない」こと、単調性は「クーポンが来るとかえって受領をやめる人(defier)はいない」ことです。観測できるのは$(Z, D, Y)$の組だけなので、どちらもクーポンが何をする仕組みなのかという、データの外の知識で議論して買います。買えなければ、手元に残るのは ITT です(下の注記)。
- Q2 はデータで確かめられる診断です。 分母の第1段階が小さいと、ITT の小さな誤差が割り算で何倍にも拡大されます(Day 17 の弱操作変数)。今日の実データは割付が受領率を45.1ポイント動かし、合成データの第1段階のF値は9344でした。どちらも十分に強いてこです。
- Q3 は答えの読み方です。 LATEは「その操作変数のコンプライヤー」の効果です。クーポンの金額を上げればコンプライヤーの顔ぶれが変わり、LATEも別の値になります。操作変数が変わると推定対象(estimand)ごと変わる、という点でATEより一段ローカルな量です。全員に広げたときの効果を問われたら、4.3 で見たとおり、LATEからの外挿はデータではなく仮定が支えます。「誰に効くか」を正面から扱う道具は Day 22 以降の異質性で登場します。
注記 除外制約が崩れると、生き残るのはITTだけです。クーポンを受け取ること自体が健康意識を刺激して、受領$D$を経由せずに行動$Y$を変えるなら、2SLSのLATEはバイアスを持ちます。一方ITTは「配ったことの効果」として除外制約なしで成立します。臨床試験がITTを主解析に置くのは、この頑健さの序列を反映した設計です。
自分の仕事に当てるなら、次の問いから始められます。いま「配ったが、受け取りは本人任せ」になっている施策のうち、割付のままの引き算(ITT)だけでも並べられるものはどれでしょうか。
6. 確認問題
問 1(自分の言葉で説明する) ITT と LATE がそれぞれ誰のどんな効果で、2 つがどうつながるかを、本文を見ずに 2 文で説明してください。
答えと解説
模範解答: ITT は割付のまま 2 群の平均を引いた値で、クーポンを配ったことの効果です。LATE はそれを第 1 段階(遵守率)で割った値で、割付に従って動いたコンプライヤーだけの平均効果であり、全員の平均効果(ATE)とは別物です。
次の 2 点のどちらかが抜けたら不十分です。
- ITT は受け取ったかを見ない割付のままの引き算で、配ったことの効果として因果だが、動かない人の分だけ薄まること
- LATE は ITT を第 1 段階で割った値で、コンプライヤーだけの効果であり、誰がそうかは個人単位では分からず、ATE とも別物であること
詰まったら 3.1 と 3.2 に戻ってください。
問 2(別の場面へ移す) あるウェブサービスで、半分のユーザーに無作為に割引クーポンの通知を送りました。通知を送った群ではクーポンを使った人が 60%、送っていない群でも自分で見つけて使った人が 20% いました。1 人あたりの購入額の平均は、通知を送った群が 1,400 円、送っていない群が 1,000 円です。除外制約と単調性が成り立つとして、通知を受けたときだけクーポンを使う人(コンプライヤー)の平均効果として最も適切なものはどれでしょうか。
- ア 400 円。通知を送った群と送っていない群の差が、そのままコンプライヤーの効果になる
- イ 1,000 円。購入額の差 400 円を、クーポンを使った人の割合の差 0.4 で割る
- ウ 2,000 円。購入額の差 400 円を、送っていない群の使用率 0.2 で割る
- エ 1,400 円。通知を送った群の平均購入額が、そのままコンプライヤーの効果になる
答えと解説
イ。購入額の差 1,400 − 1,000 = 400 円が ITT、使用率の差 60% − 20% = 0.4 が第 1 段階で、400 ÷ 0.4 = 1,000 円がコンプライヤーの平均効果です。
- ア(ITT をそのまま読む読み違い): 400 円は、通知で使用率が動かなかった人の分も含めて薄まった値です。
- ウ(割る数を取り違える読み違い): 割るのは送っていない群の使用率 0.2 ではなく、2 群の使用率の差 0.4 です。
- エ(群の平均を効果と読む読み違い): 1,400 円は購入額の水準で、通知と関係なく使う人も含みます。
問 3(出力を読む) 4.2 の出力です。素朴な$D$比較の 10.45 が、仕込んだ真の効果(コンプライヤー 2.00、全員の平均 3.19)のどれからもかけ離れている理由として、正しいものはどれでしょうか。
真のATE = 3.19 / 真のコンプライヤー効果 = 2.00
素朴なD比較 = 10.45
ITT = 0.822 / 第1段階 = 0.397
Wald推定 = ITT ÷ 第1段階 = 2.071
ア ベースラインの高い常時受領者が$D=1$側に、ベースラインの低い非受領者が$D=0$側に集まり、人の差が効果に混ざるから イ 標本が 50000 人と大きすぎて、差が誇張されるから ウ 第1段階が 0.397 と小さく、割り算で拡大されたから エ 割付$Z$がランダムでなかったから
答えと解説
ア。受け取ったかどうか$D$は、本人の型が決めます。合成データのベースラインは常時受領者 10、コンプライヤー 5、非受領者 2 で、$D=1$側には高い人が、$D=0$側には低い人が偏って集まります。差の大半は受領の効果ではなく、人の差です。
イ: 標本の大きさは偏りを作りません。ウ: 素朴な$D$比較は割り算をしていません。第1段階で割って拡大されるのは ITT の方で、行き先は 2.071 です。エ: $Z$はコードの rng.binomial(1, 0.5, N) で無作為に割り付けています。偏りの源は$Z$ではなく、$D$の自己選択です。
7. おわりに
割付が守られない実験でも、割付のままの引き算 ITT は「配ったこと」の効果として因果です。それを遵守率(第 1 段階)で割った LATE は、割付に従って動いた人(コンプライヤー)だけの効果で、全員の平均効果(ATE)とは別物です。除外制約が買えなければ ITT を、買えるなら ITT と LATE を並べ、誰の効果かを添えて報告します。最後に確かめます。ITT と LATE がそれぞれ誰のどんな効果で、2 つがどうつながるかを、本文を見ずに 2 文で言えますか。詰まったら 3.1 と 3.2 に戻ってください。
8. 参考(本棚)
- Imbens & Rubin『Causal Inference for Statistics, Social, and Biomedical Sciences』第23章・第24章。非コンプライアンス下の操作変数分析。コンプライヤー4分類と単調性の枠組みで、今日の下敷き
- Matheus Facure『Causal Inference in Python』第11章。非遵守・ITT・LATEと2SLSの実装視点
- Thornton, R. (2008) "The Demand for, and Impact of, Learning HIV Status." American Economic Review 98(5)。今日の実データの原論文。金銭インセンティブが結果受領を大きく動かしたRCT
- Imbens & Angrist (1994) "Identification and Estimation of Local Average Treatment Effects." Econometrica 62(2)。LATE定理の原論文
- データ: thornton_hiv(
causaldataパッケージ経由、MITライセンス、取得日2026-08-15)。Thornton (2008) のマラウイHIV実験データの教材用抽出版。収載版は割付(any)と受領(got)までで、下流アウトカムは含まれない
この記事の位置づけ
因果推論を「本を読んだ」で終わらせず、自分の言葉で説明でき、コードで再現できる状態まで落とす 30 日連載の Day 21 です。
図は縦が分析の工程、横が流派です。この記事は「② 識別する(どの仮定を買うか)」の、計量経済(外生の断片)の「ITTとLATE」を扱います(図の黒い札)。前提になるのは Day 4(RCT)・Day 17(操作変数法)。ここで覚える考え方や道具は Day 27(落とし穴チェックリスト) で再登場します。
9. 次回予告(Day 22)
Day 22(効果の異質性)
Phase 3 はここまで、道具はすべて「平均」を推定してきました。ATE、ATT、そして今日のLATEも、コンプライヤーという集団の平均です。でも平均がゼロでも、半分に+2、半分に-2なら、その施策は捨てるべきではなく「効く半分にだけ」届ければよいはずです。次回からPhase 4、効果の異質性に入ります。平均の裏で誰に効いて誰に効かないのか。まずはCATEの定義と、サブグループ解析が招く古典的な罠からです。




















