目標
傾向スコアマッチングについて理解する
傾向スコアマッチング
傾向スコアマッチングは、処置群と対照群を似た属性に揃えて比較することで、観察データから因果効果を推定する方法です。「観察研究でできるだけRCTに近づける工夫」といえます。
例えば、観察データ(顧客が自分で広告をクリックする/しないなど)では、処置群と対照群の属性が偏ってしまうことがよくあります。このようなデータを、そのまま比較すると「施策の効果」だけでなく「属性の違い」まで混じって結果に影響を与えてしまいます。
そのような、観察データのバイアスを軽減させる手法で、施策そのものの因果効果を推定しやすくなります。ただし、傾向スコアは「観測できる要因」に基づいて推定するため、「観測できない要因(例:やる気、健康状態など)」によるバイアスまでは完全に取り除けない点に注意が必要です。
傾向スコアマッチングの実施例
サンプルデータ(架空例)
データはID、処置(介入)の有無、年齢、年収、購買回数、今回の購入の有無です。
- A: ID → 顧客番号(単なる識別子)
- B: 処置T (1/0) → 施策(介入)を受けたかどうか
- 1 = 処置群(例:広告をクリックした人)
- 0 = 対照群(例:広告をクリックしなかった人)
- C: 年齢 → 顧客の年齢(実数値)
- D: 年収(百万円) → 年収(単位は百万円なので 4.8=480万円など)
- E: 購買回数(過去6か月) → 直近6か月の購買頻度(整数)
- F: 購入Y (0/1) → 今回の購入結果(目的変数)
- 1 = 購入した
- 0 = 購入しなかった

傾向スコアを推定(ロジスティック回帰をソルバーで)
PSMでは「処置を受ける確率」=傾向スコア pi=P(T=1∣X) を推定します。Excel標準ではロジスティック回帰がないのでソルバーで最尤推定を行います。
係数セルを用意
- 切片 a(初期値 0)
- 係数 b1(年齢)
- 係数 b2(年収)
- 係数 b3(購買回数)

- セルH3=1/(1+EXP(-( $L$2 + $L$3D3 + $L$4E3 + $L$5*F3 )))
- セルI3=C3LN(H3) + (1-C3)LN(1-H3)
- セルL7=SUM(I3:I14)
ソルバー設定(尤度最大化)

出力結果:傾向スコア

近傍マッチング(Nearest Neighbor)
処置群(T=1)の各行に対し、対照群(T=0)の中から「傾向スコアが最も近い1件」を探して対応づけます。
MatchedIDの列を作成して次の数式を入力(Excel365)
J3==IF(C3=1,
LET(
pt, H3,
ctrlIDs, FILTER($B$3:$B$14, $C$3:$C$14=0),
ctrlPs, FILTER($H$3:$H$14, $C$3:$C$14=0),
INDEX( SORTBY(ctrlIDs, ABS(ctrlPs-pt), 1), 1 )
),
""
)
対応付けの結果ID「9」のものが傾向スコアで最も近いと確認できます。

セルK3=IF(C3=1, XLOOKUP(J3, $B$3:$B$14, $G$3:$G$14), “”)
※XLOOKUPでは、検索値を「J3」として、検索範囲を$B$3:$B$14としています。この時の戻り値を$G$3:$G$14とし、MatchedYの値としています。

単純比較(処置群 vs 対照群 の購入率差)
処置Y:F(1):ID:1→ 1 、ID:2→ 1、ID:3→ 0、ID:4→ 1、ID:5→ 0
処置Y:F(1):(1 + 1 + 0 + 1 + 0) / 5 = 0.60
処置Y:F(0):ID:6→ 1 、ID:7→ 1、ID:8→ 0、ID:9→ 1、ID:10→ 0、
ID:11→ 0、ID:12→ 0
処置Y:F(0):(0 + 0 + 0 + 1 + 0 + 1 + 0) / 7 = 0.286
未調整の平均差:0.60 – 0.286 = 0.314
👉 単純比較では「処置群の方が購入率が約31ポイント高い」。
効果 ATT(Average Treatment effect on the Treated)の推定
ATTは「実際に処置を受けた人にとって、その処置がどれだけ効果を持ったかの平均」を示す指標(処置群に対する平均処置効果)で、次のように数式で表現できます。

- Y(1):処置を受けた場合の結果(実際に観測できる)
- Y(0):処置を受けなかった場合の結果(反実仮想なので直接は観測できない → 対照群で代用)
処置行について「処置行のY「1」 − マッチ相手の対照Y(MatchedY)」を取り、平均します(ATT)。
ID:1→ 1 – 1 = 0、ID:2→ 1 – 0 = 1、ID:3→ 0 – 0 = 0、
ID:4→ 1 – 1 = 0、ID:5→ 0 – 1 = -1
処置Y:F(1):(0 + 1 + 0 + 0 + (-1)) / 5 = 0
今回は以上となります。
ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

