傾向スコアマッチングの手順|共変量バランスをSMDで確認するまで
公開日
2026年11月1日
更新日
2026年11月2日
この記事の主な内容
この記事のポイント
・傾向スコアは「観測された共変量のもとで処置を受ける条件付き確率」e(x)=pr(z=1|x)(Rosenbaum & Rubin 1983)
・手順は推定→マッチング→バランス確認の3段階。最後を飛ばすと、成功か失敗か判断できません
・バランスは標準化平均差(SMD)で見ます。今回は最も偏った共変量が1.0003から0.0398へ(数値はすべてPythonで検算)
・「|SMD|<0.1」は定理ではなく慣行。出所はNormandら (2001)、Austin (2009) の実務上の推奨でした
・調整できるのは観測された交絡だけ。未観測交絡のSMDは0.6172から0.7130へ悪化し、1,000回の平均でバイアス+2.9533が残ります
結論|バランスを確認しない傾向スコアマッチングは、結果を読めません
傾向スコアマッチングの解説の多くは「ロジスティック回帰で傾向スコアを出し、近い人どうしを組にする」で終わります。ただ、それは目的ではなく手段です。目的は共変量の分布をそろえること。そろったかを確かめない限り、効いたのかは分かりません。
平均のバランスを確かめる代表的な方法がSMDです。分散比や分布図も併せて点検し、SMDが小さいことだけで分布全体がそろったとは判断しません。共変量ごとに標準化平均差(SMD、standardized mean difference)を計算し、マッチング前後で並べる。今回の仮想データでは、最も偏っていた「過去6か月の購入金額」が1.0003から0.0398へ下がる一方、もともと釣り合っていた「会員歴」は0.0071から0.0820へ悪化していました。
もう一つ。傾向スコアで調整できるのは観測して手元にある共変量だけです。今回は「ブランド好意度」という未観測の交絡をわざと仕込みました。観測共変量4つのSMDの絶対値はすべて0.1未満になったのに、未観測交絡は0.6172から0.7130へ悪化し、推定値は真の効果5.0に対し9.0072のままです。
公式情報の確認
傾向スコアの定義と「強く無視できる割り当て(strongly ignorable treatment assignment)」は Rosenbaum PR, Rubin DB. Biometrika 1983;70(1):41-55 が原典です(本文PDF)。キャリパー幅0.2×SDは Austin PC. Pharm Stat 2011;10(2):150-161、SMDの定義式は Austin PC, Stuart EA. Stat Med 2015;34(28):3661-3679(Wiley)で確認しました。
1. 傾向スコアとは何か|Rosenbaum & Rubin (1983) の定義
原典の定義は1行です。
e(x) = pr(z = 1 | x)
zは処置を受けたかどうか(1または0)、xは観測された共変量のベクトル。「この人の観測データを見たとき、処置を受ける確率」です。共変量が10個あっても0から1の数値1つに縮まる。10個で人を組にするのは難しくても、数値1つなら組にできます。
同論文の定理1が示すのは、傾向スコアがバランシングスコアだということ。真の傾向スコアを条件にすると、処置の割り当てと観測共変量が条件付き独立になります(x ⊥ z | e(x))。ただし、有限のデータで推定したスコアが近い人を組にするだけで、この性質が完全に実現するとは限りません。だからこそ実際のバランス確認が必要です。
「強く無視できる割り当て」が成り立つ場合だけ
ただし、因果効果を推定できるのは条件付きです。原典が強く無視できる割り当て(strongly ignorable treatment assignment)と呼ぶ2条件を書きます。
(1) (r1, r0) ⊥ z | x … 潜在的な結果と処置の割り当てが、xを与えたもとで条件付き独立
(2) 0 < pr(z = 1 | x) < 1 … どの人も、両方の処置を受ける可能性がある
(1)は「xさえそろえれば、あとは処置の有無だけが違う」という主張で、データからは検証できません。(2)はpositivity(正値性)の仮定です。推定した傾向スコアの分布が両群でどれだけ重なるかは点検できますが、有限の標本で重なりが見られることだけでは、対象集団全体でこの仮定が成立するとは証明できません。今回は対照群の傾向スコアの最大値0.8704を上回る処置群が4人おり、この4人に比較相手はいません。
2. 手順|傾向スコアの推定からマッチングまで
使うのは仮想のマーケティングデータです。ECサイトのアプリ内クーポン配信を施策(処置)、その後3か月の購入金額(千円)をアウトカムとします。N=140人(処置群61人、対照群79人)で観測共変量は4つ。
X1:過去6か月の購入金額(千円)※処置と強く相関
X2:会員歴(月)/X3:年齢(歳)/X4:アプリ利用あり(1/0)
別にブランド好意度Uを「処置にもアウトカムにも効くが手元にない変数」として仕込み、真の効果は一律+5.0千円としました。
手順1|ロジスティック回帰で傾向スコアを推定する
アウトカムYは一切使わず、処置の有無を目的変数にしてロジスティック回帰を当てます。係数は定数項−5.4997、X1 0.1018、X2 0.0087、X3 0.0135、X4 0.5445。傾向スコアの平均は処置群0.5673、対照群0.3341。施策の対象が偏っていたことが数値に出ています。
ここで係数のp値を見て変数を削らないのが定石です。目的は処置の予測精度ではなくバランスなので、今回もX2(p=0.6494)とX3(p=0.4587)はそのまま使います。
手順2|最近傍マッチングとキャリパーの決め方
次に、処置群1人ずつに傾向スコアが最も近い対照群を割り当てます(最近傍マッチング)。距離はlogit(傾向スコア)で測るのが標準です。0.95と0.99の違いは0.50と0.54の違いより重いのに、生の確率ではどちらも0.04になるからです。どれだけ遠くても組にしては意味がないので、キャリパーという上限距離も設けます。Austin (2011) がモンテカルロ実験の末に推奨したのは「logit(傾向スコア)の標準偏差の0.2倍」。今回はSDが1.2340なので0.2468です。より古いRosenbaum & Rubin (1985) の推奨は0.25×SDでした。
1:1・復元なし(対照群の1人は1回しか使わない)で実行すると成立したペアは41組。処置群61人のうち20人(32.8%)が脱落しました(ペア距離は平均0.0605、最大0.2426)。脱落は失敗ではありません。そのかわり推定の対象が「マッチできた41人」に変わります。
3. 共変量バランスをSMDで確認する
SMDの定義式|連続変数と二値変数
標準化平均差(SMD)は、2群の平均の差を「ばらつき」で割った値です。連続変数と二値変数で分母が変わります(Austin & Stuart 2015)。
連続変数:d = (x̄1 − x̄0) / √{(s12 + s02)/2}
二値変数:d = (p̂1 − p̂0) / √{(p̂1(1−p̂1) + p̂0(1−p̂0))/2}
添字1が処置群、0が対照群。分母は両群の分散の単純平均の平方根で人数の重みを付けません。ただし、人数で重み付けしないことと、前後で同じものさしを使うことは別です。マッチング後の標準偏差で分母を計算し直せば、分母も変わります。前後を同じ尺度で比較するには、マッチング前の標準偏差に分母を固定する方法が使われます(cobaltの公式解説)。以下の表のX1について、前の分母10.6229に固定して後の平均差を標準化すると、(41.5989−41.2351)/10.6229 ≈ 0.0342です。表の0.0398とは分母が異なるため、使用した標準化の方法を区別して読みます。
実際に計算します。X1は処置群の平均46.8308・SD 11.3004、対照群の平均36.2050・SD 9.8991。
分子:46.8308 − 36.2050 = 10.6258
分母:√{(11.30042 + 9.89912)/2} = √{(127.6989 + 97.9913)/2} = √112.8451 = 10.6229
SMD = 10.6258 ÷ 10.6229 = 1.0003
二値のX4も形は同じです。処置群29/61=0.4754、対照群30/79=0.3797。
分子:0.4754 − 0.3797 = 0.0957
分母:√{(0.4754×0.5246 + 0.3797×0.6203)/2} = √{(0.2494 + 0.2355)/2} = √0.2425 = 0.4924
SMD = 0.0957 ÷ 0.4924 = 0.1943
マッチング前後のSMDを共変量ごとに並べる
全共変量で計算し、マッチング前後で並べたのが次の表です。これが傾向スコアマッチングの成績表にあたります。最下段のUは本来見えない行で、答え合わせ用です。読み方は3つあります。
| 共変量 | 処置群 平均(前) | 対照群 平均(前) | SMD(前) | 処置群 平均(後) | 対照群 平均(後) | SMD(後) |
|---|---|---|---|---|---|---|
| X1 過去6か月の購入金額(千円) | 46.8308 | 36.2050 | 1.0003 | 41.5989 | 41.2351 | 0.0398 |
| X2 会員歴(月) | 23.8070 | 23.7317 | 0.0071 | 23.1849 | 22.2904 | 0.0820 |
| X3 年齢(歳) | 43.5280 | 41.4690 | 0.1911 | 42.2482 | 42.3289 | −0.0072 |
| X4 アプリ利用あり(割合) | 0.4754 | 0.3797 | 0.1943 | 0.4634 | 0.4634 | 0.0000 |
| logit(傾向スコア) | 0.3206 | −0.8418 | 1.0524 | −0.2413 | −0.2850 | 0.0464 |
| U ブランド好意度(未観測) | 0.4345 | −0.1240 | 0.6172 | 0.3741 | −0.2605 | 0.7130 |
| 人数 | 61人 | 79人 | — | 41人 | 41人 | — |
第一に、効いたところ。X1のSMDは1.0003から0.0398へ、絶対値で96.0%減りました。logit(傾向スコア)自体も1.0524から0.0464へ下がっています。
第二に、悪化したところ。X2(会員歴)はマッチング前から0.0071とほぼ完全に釣り合っていたのに、後は0.0820に広がりました。傾向スコアはX2もまとめて1つの数値に押し込むため、個々の共変量が必ず改善する保証はありません。表がなければ気づけない変化です。
第三に、手が届かないところ。最下段のUは0.6172から0.7130へ悪化しました。この例では、モデルに入れていないUのバランスが悪化しました。ただし、未観測変数は必ず悪化するという意味ではありません。観測変数との関係によって改善することもありますが、その保証はありません。実務ではこの行そのものが存在しないため、上の4行だけを見て「バランスは取れた」と判断することになります。ここが傾向スコア法の限界です。
「|SMD|<0.1」という目安はどこから来たか
結論から言うと、統計理論から導かれたしきい値ではありません。Austin & Stuart (2015) の書きぶりは「一部の著者は、標準化差が10%を超えると意味のある不均衡を示している可能性があると提案している(Some authors have suggested that a standardized difference in excess of 10% may be indicative of meaningful imbalance)」。引用先はAustin (2009)、Normandら (2001)、Mamdaniら (2005) で、先行研究がそう使ってきたという慣行です。
別の目安もあります。Stuart (2010) はRubin (2001) を引いて「標準化差0.25未満、分散比0.5〜2」を紹介しています(今回の分散比はX1が1.3032→1.1146、X2が1.4128→1.6102で4つともこの範囲)。0.1は絶対的な合格ラインではなく、報告時はどの基準を使ったかを明記します。
p値でバランスを確認してはいけない理由
よくある誤りが、共変量ごとにt検定をして「p>0.05だからそろった」とすることです。X1は前p<0.0001→後p=0.8575でSMDと一致します。問題は未観測交絡Uで、SMDは0.6172→0.7130と悪化しているのに、p値は0.0004→0.0018と「有意でなくなる方向」へ動きます。この例では、人数が140人から82人に減ったことも判定に影響しています。p値は平均差・ばらつき・人数に依存するため、その増減をバランスの改善と同一視できません。バランスは手元のデータの性質であって、母集団についての仮説ではありません。
4. 効果量を3通りで推定して比べる
真の効果が+5.0千円だと分かっているデータなので、答え合わせができます。
| 推定方法 | 推定値(千円) | 標準誤差 | 真の効果5.0との差 | 使った情報 |
|---|---|---|---|---|
| 単純比較(平均の差) | 13.8128 | 1.4863 | +8.8128 | 調整なし |
| 回帰調整(共変量4つ) | 9.0340 | 1.2771 | +4.0340 | 観測共変量のみ |
| 傾向スコアマッチング(41組) | 9.0072 | 1.6731 | +4.0072 | 観測共変量のみ |
| 参考:回帰調整+未観測交絡U | 6.9774 | 1.2241 | +1.9774 | Uを含む(実務では不可能) |
| 参考:傾向スコアマッチング+U(42組) | 6.8109 | 1.4569 | +1.8109 | Uを含む(実務では不可能) |
単純比較は13.8128で真の効果の2.8倍。もともと買っている人ほど施策の対象だったので当然です。回帰調整(9.0340)と傾向スコアマッチング(9.0072)はほぼ同じ値。この2つは競合ではなく、同じ観測共変量を別の形で使っているだけです。
では残った+4.0は何か。答えは表の下2行です。手元にないはずのUをあえて投入すると、回帰調整は6.9774、マッチングは6.8109まで下がります。マッチングの95%信頼区間は5.6257〜12.3887で真の値5.0は区間の外。Uを調整すると推定値は真値に近づきました。ただし、1回の推定誤差を、交絡による偏りと標本の偶然に厳密に分解した結果ではありません。
5. 未観測交絡は残る|1,000回のシミュレーション
1つのデータセットでは偶然の可能性があるので、同じ仕組みで140人分を1,000回作り直し、同じ手順で平均バイアスを求めました。
| 推定方法 | 1,000回の平均推定値 | 平均バイアス | 推定値のSD | RMSE |
|---|---|---|---|---|
| 単純比較 | 12.7002 | +7.7002 | 1.4986 | 7.8445 |
| 回帰調整(観測共変量のみ) | 7.6916 | +2.6916 | 1.3934 | 3.0306 |
| 傾向スコアマッチング(観測共変量のみ) | 7.9533 | +2.9533 | 1.6081 | 3.3623 |
| 傾向スコアマッチング(Uも投入) | 5.4736 | +0.4736 | 1.5195 | 1.5908 |
| 回帰調整(Uも投入) | 5.0109 | +0.0109 | 1.2776 | 1.2770 |
傾向スコアマッチングの平均バイアスは+2.9533。単純比較の+7.7002からは大きく減りましたが、ゼロにはなりません。Uも傾向スコアモデルに入れると+0.4736まで下がるので、この差の約2.5は、Uをモデルに含めることで平均バイアスが減った大きさです。ただし、マッチングの組合せや残る対象者も変わるため、未観測交絡だけの寄与を厳密に分離した値とは言えません。なお+0.4736が残るのは、貪欲な最近傍マッチングが完全にはそろえきれないため(この条件でもUの|SMD|は平均0.1045)です。
バランス指標も同じです。観測共変量の|SMD|最大値は1,000回の平均で0.9226→0.1671と改善する一方、Uの|SMD|は0.6462→0.8204へ悪化しました。
そして観測共変量4つすべてが|SMD|<0.1に収まったのは、1,000回のうち14.8%だけでした。先に紹介した1回はその14.8%に入った例です(平均では1回あたり11.68人が脱落し、残るペアは36.93組)。マッチングすればバランスが取れるとは限りません。だからこそ毎回この表を作ります。
ATEとATT|何の平均を推定しているのか
効果を報告するときは誰についての平均かを書きます。ATE(average treatment effect)は全員が処置を受けた場合と受けなかった場合の差、つまり集団全体の平均。ATT(同 in the treated)は実際に処置を受けた人だけの平均です。
処置群1人ずつに相手を探す最近傍マッチングは、既定でATTを推定します(Stuart 2010)。効果が一律なら両者は一致しますが、個人差があると一致しません。効果を「1.0+0.10×過去6か月の購入金額」に置き換えると真のATEは5.0835、真のATTは5.6831で0.5996ずれ、マッチできた41人での真の効果は5.1599。キャリパーは推定の対象そのものを動かします。脱落人数を必ず書くべき理由です。
マッチング以外の使い方|IPW・層別・共変量調整
Austin (2011) は傾向スコアの使い方としてマッチング・層別・逆確率重み付け(IPW)・共変量調整の4つを挙げています。IPWは処置群を1/e、対照群を1/(1−e)で重み付けするとATE、処置群を1、対照群をe/(1−e)にするとATTを推定します。
今回のデータではIPW(ATE)が8.2515、五分位で層別すると9.8702。ただしIPWは傾向スコアが0や1に近い人の重みが暴れます。最大の重みは35.6991(傾向スコア0.0280の1人)に達し、重み付け後のX1のSMDは−0.4496とかえって悪化しました。選ぶ基準はATEとATTのどちらが欲しいかと共通サポートの広さです。
マッチングの設定を変えるとどうなるか
| マッチングの設定 | 残った処置群 | ペア数 | 使われた対照群(実人数) | |SMD|の最大値 | 0.1以上の共変量 | 推定値(千円) |
|---|---|---|---|---|---|---|
| キャリパーなし・1:1・復元なし | 61人 | 61 | 61人 | 0.7237 | 3個 | 12.7144 |
| キャリパー0.2×SD・1:1・復元なし | 41人 | 41 | 41人 | 0.0820 | 0個 | 9.0072 |
| キャリパー0.05×SD・1:1・復元なし | 31人 | 31 | 31人 | 0.1945 | 3個 | 9.1140 |
| キャリパー0.2×SD・1:1・復元あり | 52人 | 52 | 31人 | 0.2074 | 2個 | 11.8167 |
| キャリパー0.2×SD・1:2・復元なし | 35人 | 63 | 63人 | 0.1883 | 2個 | 8.3346 |
キャリパーなしでは|SMD|の最大値が0.7237で、4つのうち3つが0.1を超えました。全員が組にはなりましたが、そろってはいません。逆に0.05×SDまで狭めると31組に減り、|SMD|の最大値はかえって0.1945へ悪化します。人数が減ると偶然のずれが効くためで、厳しくすればよくなるとは限りません。設定を決めるのは、SMDの表を見てからです。
まとめ
・傾向スコアは e(x)=pr(z=1|x)。共変量の束を数値1つに縮める装置です(Rosenbaum & Rubin 1983)
・手順は推定→マッチング→バランス確認の3段階。最後を飛ばすと、成功か失敗か判断できません
・SMDは連続変数なら2群の分散の平均の平方根、二値変数ならp(1−p)の平均の平方根で割ります。p値は使いません
・「|SMD|<0.1」は理論値ではなく慣行。Rubin (2001) 由来の0.25という基準もあるため、どちらを使ったかを明記します
・調整できるのは観測された交絡だけ。1,000回の平均で観測共変量の|SMD|最大値は0.9226→0.1671に改善する一方、未観測交絡は0.6462→0.8204へ悪化しました
傾向スコアマッチングは「観察データを実験に近づける」手法と説明されますが、近づけられるのは測った範囲だけです。だからこそマッチング後のSMDの表は付録ではなく本体になります。どの共変量がどれだけそろい、どれがそろわず、何人が脱落したのか。そこまで書いて初めて、読む側が結論を評価できます。
あわせて読みたい:数学が苦手になる原因とは|つまずきの正体と対処法をやさしく
<監修/和から株式会社 堀口智之>
「マッチングはしたけれど、この結果を信じてよいのか分からない」という方へ。
和からのマンツーマン講座では、傾向スコアの推定からバランスの確認、感度分析まで、お手元のデータを使いながら一つずつ手を動かして進めます。施策の効果検証で何をどこまで言えるのか、社内に説明できる形に整えるところまでご一緒します。まずは無料の個別相談で、いまお持ちのデータとお悩みをお聞かせください。
→ マーケティング効果検証・ABテスト 個別指導
※2026年11月2日に内容を更新しました。
学び直したい気持ちはあるけれど、どこから手をつければいいか分からない。そういう方のために「社会人のための数学やり直しの地図」をつくりました。目的別に、何をどの順番でやるかを整理したA4・4ページです。
和からのメルマガに登録すると、この資料を含む3本をまとめてお送りします。登録はメールアドレスだけ、30秒で終わります。
新着記事
同じカテゴリーの新着記事
同じカテゴリーの人気記事
この記事に関連する教室: 数学教室 → 社会人の学び直し講座 →



