イントロダクション
ゴールド会員になった顧客は翌月の購入額が多い。これは、会員特典の効果でしょうか?
そうとは限りません。ゴールド会員になれるのは累計購入額が多く、もともとよく買う顧客だからです。単純に比べると、特典の効果と「もともとよく買う人だったこと」の効果が混ざってしまいます。
ランダムに特典を配れないときの方法には、DIDや傾向スコアなどがあります。回帰不連続デザイン(RDD)は、「累計購入額10万円以上で特典が始まる」という基準値で切り替わるルールそのものを利用します。基準値のすぐ上にいる顧客とすぐ下にいる顧客はほとんど同じ顧客のはずです。それなのに片方だけが特典を受けます。この差を使うのがRDDです。
回帰不連続デザイン(RDD)とは
回帰不連続デザイン(Regression Discontinuity Design, RDD)とは「点数や金額などが基準値以上かどうかで処置を受けるかが決まる」ルールを利用して、処置の効果を推定する手法です。基準値のところで結果が「飛ぶ」ように変わっていれば、その飛びを処置の効果と考えます。
- 割り当て変数: 処置の有無を決める変数(例:累計購入額)
- 基準値(カットオフ): 処置が切り替わる値(例:10万円)
- 処置: 特典、奨学金、治療など(例:ゴールド会員の特典)
- 結果: 効果を見たい変数(例:翌月の購入額)
次の2つの種類があります。
- シャープRDD: 基準値を超えたら全員が処置を受け、超えなければ誰も受けない
- ファジーRDD: 基準値を超えると処置を受ける確率がジャンプする(全員ではない)
数値例で理解する
累計購入額が10万円以上でゴールド会員(送料無料、限定クーポンなど)になる制度を考えます。基準値の近くにいる架空の6人のデータです。
| 顧客 | 累計購入額(万円) | ゴールド会員 | 翌月の購入額(千円) |
|---|---|---|---|
| A | 7 | なし | 30 |
| B | 8 | なし | 35 |
| C | 9 | なし | 40 |
| D | 11 | あり | 65 |
| E | 12 | あり | 70 |
| F | 13 | あり | 75 |

図1: 基準値(10万円)の左右にそれぞれ直線を当てはめ、基準値まで延ばす(破線の部分)。基準値での高さの差($60-45=15$)が、効果の推定値になる。
- ① 単純に比べると: ありの平均 $\frac{65+70+75}{3}=70$、なしの平均 $\frac{30+35+40}{3}=35$ → 差は 35
- ② 基準値のすぐ近く同士を比べると: C(9万円、40)とD(11万円、65)で、差は 25
- ③ 局所線形回帰で比べると: 左側のデータに直線 $y=5x-5$ を当てはめて、基準値10まで延ばすと $y=45$。右側のデータに直線 $y=5x+10$ を当てはめて、10まで延ばすと $y=60$。差は $60-45=15$
累計購入額が1万円増えるごとに翌月の購入額は5千円増えます(直線の傾き)。①や②の差にはこの「累計購入額の違い」の分が混ざっています(②には、累計購入額が2万円違うことによる、$2\times5=10$千円の差が含まれています)。基準値のところで左右の直線の高さを比べると、この影響を取り除けて効果は15千円(15,000円)と推定されます。
注意点:この例では、仕組みを見せるためにノイズがなくデータがきれいな直線上に並ぶようにしています。実際のデータはばらつきがあるので、最小二乗法で直線を当てはめます。
なぜ「飛び」が効果になるのか
基準値のすぐ近くでは、顧客はほとんど同じです。9.9万円の顧客と、10.1万円の顧客に、大きな違いはありません。どちら側に入るかは、ほとんど偶然で決まります。そのため、基準値のところで結果が飛んでいるなら、その飛びは処置の効果と考えられます。
この考え方の前提は、「処置がなければ、結果は基準値のところで滑らかにつながっている」ことです。割り当て変数と結果の関係は滑らかだと仮定した場合、基準値で不連続があればそれを処置の効果とみなすことができます。
推定のしかた
(基準値 $c$ での、右側の直線の値から左側の直線の値を引く)
- 局所線形回帰: 基準値の近くのデータだけを使い、左右それぞれに直線を当てはめます
- バンド幅: 基準値から、どこまでのデータを使うかです。狭いと偏りは小さくなりますが、使えるデータが減ってばらつきが大きくなります。広いとその逆になります。交差検証や最適なバンド幅を計算する方法で選びます
ファジーRDD
基準値以上でも、全員が処置を受けるとは限りません。たとえば、ゴールド会員の資格を得ても手続きをしない顧客がいます。この場合は、基準値のところで処置を受ける確率がジャンプします。これがファジーRDDです。

図2: 処置を受ける割合が、シャープRDDでは0から1に、ファジーRDDでは0.2から0.6にジャンプする。
ファジーRDDでは、「結果の飛び」を「処置を受ける確率の飛び」で割ります。
$\text{効果}=\frac{\text{結果の飛び}}{\text{処置を受ける確率の飛び}}$
たとえば、基準値を超えた顧客が実際に会員になる割合が60%、超えない顧客では20%(差0.4)で翌月の購入額の飛びが6千円なら、効果は $6/0.4=15$千円です。
注意点:ファジーRDDで推定されるのは、基準値付近の「基準値以上になったことで、会員になった人たち」にとっての効果です。
活用場面
| 分野 | 割り当て変数と基準値の例 | 調べること |
|---|---|---|
| 教育 | 試験の点数と、表彰・奨学金の基準点 | 表彰や奨学金が、その後の進路などに与える効果 |
| マーケティング | 累計購入額と、会員ランクの基準 | 会員特典が、翌月の購入に与える効果 |
| 医療 | 検査値と、治療を始める基準 | 治療の効果 |
| 政策 | 年齢や所得と、制度の対象になる基準 | 制度が、対象者に与える効果 |
注意点
- 推定されるのは、基準値付近の人の効果です。 基準値から離れた顧客(累計購入額が、ずっと多い人など)にそのまま当てはまるとは限りません。
- 基準値の近くに、十分なデータが必要です。 データが少ないとバンド幅を狭くできず、推定がばらつきます。
- 割り当て変数を、人が操作できる場合は、前提が崩れます。 たとえば、基準値を超えるために駆け込みで購入する人が多いと、基準値の上下で顧客が同じではなくなります。
まとめ
- RDD: 基準値で処置が切り替わるルールを使い、基準値のところの結果の飛びを効果として推定する
- 推定: 基準値の近くのデータで左右に直線を当てはめ基準値での高さの差を取る
- 前提: 処置がなければ、結果が基準値で滑らかにつながっていること。割り当て変数が、操作されていないこと
- 限界: 推定されるのは、基準値付近の人の効果。ファジーRDDは確率の飛びで割る

