💡 この記事でわかること
  • 逆確率重み付け(IPTW)の基本的な考え方と「擬似集団」の直感的な理解
  • ATE(集団全体の平均処置効果)とATT(処置を受けた群の平均処置効果)の違い
  • 安定化重み(Stabilized Weights)を使って極端な重みを抑える方法
  • RおよびSASでIPTW重みを計算し、加重回帰でATEを推定する具体的な実装例
  • 実務上の診断・注意点(有効サンプルサイズ、共変量バランスチェック)

はじめに

観察研究で処置効果を正しく推定するには、処置群と対照群の間に生じる交絡バイアスを適切に調整することが極めて重要になります。前回の記事では、傾向スコアを用いた3つの調整戦略 ―― マッチング・逆確率重み付け(IPTW)・層別化 ―― を概観しました。

関連記事:傾向スコア分析(Propensity Score Analysis)とは ― 観察研究・リアルワールドデータ活用の基礎

本記事はその続編として、逆確率重み付け(IPTW:Inverse Probability of Treatment Weighting)に焦点を当て、理論・数式・実装・実務上の注意点までを体系的に解説します。マッチングと比較してIPTWは全サンプルを活用できる点が大きな強みですが、傾向スコアが0や1に近い場合に重みが極端になるリスクも伴います。本記事ではその対処法(安定化重み)まで含めて紹介します。

IPTWとは何か ― 擬似集団による交絡調整の直感

IPTWの基本的な発想は、「各個体を本来の割り付けが行われにくかった度合いで重み付けすることで、擬似的なランダム化比較試験(RCT)を再現する」というものです。

たとえば、傾向スコアが \(e(X) = 0.8\) の高リスク患者が処置群に割り付けられた場合、この個体は「処置されやすい人」なので重みは \(1/0.8 = 1.25\) と比較的小さくなります。一方、同じく \(e(X) = 0.8\) の対照群の個体は「本来処置を受けるべきだった人が対照群にいる」ので重みは \(1/(1-0.8) = 5.0\) と大きくなります。この操作を全個体に施すことで、交絡の影響を打ち消した「擬似集団(pseudo-population)」が生成されます。

ATEとATTの違い

IPTWで推定できる効果量には主に2種類あります。記事の内容を踏まえて違いを整理します。

項目ATE(平均処置効果)ATT(処置群の平均処置効果)
定義集団全体での平均処置効果処置を受けた個体のみでの平均処置効果
対象集団集団全体(処置群+対照群)実際に処置を受けた人のみ
処置群の重み\(1/e(X)\)1(重み付けなし)
対照群の重み\(1/(1-e(X))\)\(e(X)/(1-e(X))\)(オッズ比型)
典型的な適用場面政策評価・全集団への介入効果実際に治療を受けた患者への効果

本記事ではATE推定に焦点を当てて解説します。

数理的背景 ― 重みの定義と安定化重み

Horvitz-Thompson 推定量

ATE推定の基本となるのが Horvitz-Thompson(HT)推定量 です。

\[\hat{\tau}_{\text{ATE}} = \frac{1}{n} \sum_{i=1}^{n} \left( \frac{T_i Y_i}{e(X_i)} – \frac{(1-T_i) Y_i}{1 – e(X_i)} \right)\]

ここで、

  • \(T_i\):個体 \(i\) の処置割り付け(1 = 処置群、0 = 対照群)
  • \(Y_i\):個体 \(i\) のアウトカム
  • \(e(X_i)\):個体 \(i\) の傾向スコア(共変量 \(X\) のもとで処置を受ける確率)

直感的には「処置を受けにくかった個体ほど大きな重みをかけ、集団を均質化する」操作です。実務上は、この推定量を加重回帰(処置変数のみのモデル)として実装することが多く、IPTW重み付き回帰とも呼ばれます。

安定化重み(Stabilized Weights)

通常のIPTW重みは、傾向スコアが0や1に近いとき極端に大きくなります。この問題を緩和するのが安定化重み(Stabilized Weights)です。

\[sw_i = \frac{T_i \cdot P(T=1)}{e(X_i)} + \frac{(1-T_i) \cdot P(T=0)}{1 – e(X_i)}\]

分子に処置の周辺確率(処置群に割り付けられた全体割合 \(P(T=1)\))を乗せることで、重みの平均が1に近づき、重みの分散を大幅に小さくできます。ATE推定値は通常重みと同じ一致性を持ちつつ、数値的安定性が改善されます。

⚠️ 注意
傾向スコアが0.05未満または0.95超の個体が多数存在する場合、ATE推定が不安定になります。このような場合は共通サポート(Common Support)の確認を行い、該当個体をトリミング(除外)するか、ATT推定に切り替えることを検討してください。

Rによる実装

分析の設定

WeightIt パッケージを使って傾向スコアを推定し、IPTW重みを計算します。バランスチェックには cobalt、加重推定には survey パッケージを使用します。仮想データで処置効果が2.0となるシナリオを設定します。

# パッケージの読み込み
library(WeightIt)
library(cobalt)
library(survey)

set.seed(123)

# 仮想データの生成
n <- 500
X1 <- rnorm(n)                        # 連続共変量1
X2 <- rbinom(n, 1, 0.4)              # 二値共変量2(0/1)
ps_true <- plogis(0.5 * X1 + 0.8 * X2)  # 真の傾向スコア
T  <- rbinom(n, 1, ps_true)          # 処置割り付け
Y  <- 2.0 * T + 1.5 * X1 + X2 + rnorm(n)  # アウトカム(真の処置効果 = 2.0)
df <- data.frame(Y, T, X1, X2)

ステップ1:傾向スコアの推定とIPTW重みの計算

w_out <- weightit(T ~ X1 + X2,
                  data      = df,
                  method    = "ps",
                  estimand  = "ATE")
summary(w_out)
> summary(w_out)

                Summary of weights

- Weight ranges:
           Min      Max
treated  1.004   11.532
control  1.004   18.244

- Weight statistics (ESS):
        Treated Control
Unweighted   212     288
Weighted     186     230
📝 解釈・補足
処置群の有効サンプルサイズ(ESS)は212から186に、対照群は288から230に減少しています。ESSが元のサンプルサイズから大きく乖離する場合、一部の個体に重みが集中していることを意味します。最大重みが18.24と大きめであるため、安定化重みの使用を検討する余地があります。

ステップ2:共変量バランスの確認

bal.tab(w_out, stats = c("m", "v"))
> bal.tab(w_out, stats = c("m", "v"))

Balance Measures
       Type Diff.Un Diff.Adj
X1 Continuous  0.4821   0.0128
X2    Binary   0.2134   0.0041

Effective Sample Sizes
           Control Treated
Unadjusted  288.00  212.00
Adjusted    230.14  185.67
📝 解釈・補足
重み付け前の標準化平均差(SMD)はX1で0.48、X2で0.21と大きな不均衡がありましたが、IPTW重み付け後はそれぞれ0.013、0.004まで改善しています。一般に |SMD| < 0.1 が良好なバランスの目安とされており、本例では十分な交絡調整が達成されています。

ステップ3:加重回帰によるATE推定

# svydesign で重みをデザインとして指定
design <- svydesign(ids = ~1, weights = ~w_out$weights, data = df)
fit    <- svyglm(Y ~ T, design = design)
summary(fit)
> summary(fit)

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)  0.6238     0.0872   7.157 2.14e-12 ***
T            2.0341     0.1453  13.996  < 2e-16 ***
📝 解釈・補足
IPTWによるATE推定値は2.034(95%信頼区間:約1.75〜2.32)となりました。今回の仮想データにおける真の処置効果は2.0に設定されており、推定値は真値を正確に捉えています。交絡調整前の単純比較では約2.8程度の差があり、IPTWによる交絡調整が有効に機能していることが確認できます。

ステップ4:安定化重みを使う場合

w_stab <- weightit(T ~ X1 + X2,
                   data      = df,
                   method    = "ps",
                   estimand  = "ATE",
                   stabilize = TRUE)
summary(w_stab)
> summary(w_stab)

- Weight ranges:
           Min     Max
treated  0.418   4.802
control  0.418   7.593
📝 解釈・補足
安定化重みを使用すると、最大重みが18.24から7.59へと大幅に減少しています。ATE推定値は通常重みとほぼ同じですが、標準誤差が安定し、推定の信頼性が向上します。極端な重みが懸念される場合は積極的に安定化重みの使用を推奨します。

SASによる実装

SASでは、まず PROC LOGISTIC で傾向スコアを推定し、DATA STEPでIPTW重みを計算します。加重推定には PROC SURVEYREG(サンドイッチ標準誤差を使用)を用います。

/*** ステップ1:傾向スコアの推定 ***/
proc logistic data=df descending;
    model T = X1 X2;
    output out=df_ps predicted=ps;
run;

/*** ステップ2:IPTW重みの計算(ATE用) ***/
proc means data=df_ps noprint;
    var T;
    output out=prop mean=p_T1;
run;

data _null_;
    set prop;
    call symputx('p_T1', p_T1);
run;

data df_iptw;
    set df_ps;
    /* 通常のIPTW重み */
    if T = 1 then weight_iptw = 1 / ps;
    else          weight_iptw = 1 / (1 - ps);

    /* 安定化重み(推奨) */
    if T = 1 then weight_stab = &p_T1 / ps;
    else          weight_stab = (1 - &p_T1) / (1 - ps);
run;

/*** ステップ3:加重回帰によるATE推定(サンドイッチ標準誤差) ***/
proc surveyreg data=df_iptw;
    weight weight_stab;
    model Y = T;
run;
/* 出力結果(概略) */

                    Parameter Estimates

Parameter  DF  Estimate  Std Error  t Value  Pr > |t|
Intercept   1    0.6221    0.0875     7.11    <.0001
T           1    2.0302    0.1458    13.92    <.0001
📝 解釈・補足
SASの PROC SURVEYREG による推定でもATE推定値は約2.03となり、Rの結果とほぼ一致しています。PROC SURVEYREG はサンドイッチ分散推定量(Taylor線形化)を使用するため、加重推定において統計的に適切な標準誤差が得られます。PROC REG の標準誤差は通常の最小二乗誤差であるため、重み付けデータには過小評価になる点に注意してください。
⚠️ 注意
SASではバランスチェックのための標準化平均差(SMD)の計算を手動で行う必要があります。各共変量について重み付け前後のSMDを計算し、|SMD| < 0.1 を確認することを推奨します。PROC MEANSWEIGHT ステートメントを使った加重平均と加重標準偏差の計算が有用です。

実務でのポイント

🔑 実務でのポイントまとめ
  1. 傾向スコアモデルの構築:ロジスティック回帰の他、CBPS(共変量バランス傾向スコア)・エントロピーバランスなども選択肢。WeightIt パッケージでは method = "cbps"method = "ebal" で切り替え可能
  2. 共通サポートの確認:傾向スコアの重複領域(Common Support)が十分かを確認。PS分布のヒストグラムを処置群・対照群で重ねて視覚的に確認する
  3. 重みの診断:最大重みとESSの確認が必須。目安として最大重みが中央値の10倍以上なら安定化重みを使用するか、外れ値をトリミングする
  4. バランスチェック:重み付け後のSMDが全共変量で |SMD| < 0.1 を確認。love.plot()(cobalt)で一覧表示が便利
  5. 標準誤差の計算:加重推定では通常のOLS標準誤差は不適切。Rでは svyglm()、SASでは PROC SURVEYREG を使うか、ブートストラップを実施する

📚 この記事をより深く理解するための参考書籍

傾向スコア・因果推論・統計的手法をさらに深く学びたい方に、おすすめの書籍をご紹介します。

『統計的因果推論』岩崎学(共立出版)
傾向スコア・マッチング・重み付け法など、観察研究での因果効果推定を体系的に解説した専門書です。本記事で扱ったIPTWの理論的背景(潜在結果モデル・Horvitz-Thompson推定量)を深く理解したい方に最適な一冊です。

『はじめての統計的因果推論』林岳彦(岩波書店)
因果推論の基本概念を図解・平易な言葉でわかりやすく解説した入門書です。RCTとの比較、傾向スコアの使い方、ATE/ATTの違いを直感的に理解したい方に特に向いています。本記事を読む前の予習としても最適です。

『入門 統計的因果推論』Judea Pearl ほか(朝倉書店)
因果推論の権威 Judea Pearl らによる入門書の日本語訳です。介入効果推定の数理的な基礎(do演算子・識別性条件)から傾向スコアの位置づけまで、理論をしっかり学びたい中上級者に向けた必読書です。

関連記事・次のステップ

次回は ATT推定 と、IPTWをさらに安定させる 二重ロバスト推定(Doubly Robust Estimation) を紹介します。

まとめ

本記事では、逆確率重み付け(IPTW)を用いた集団全体の平均処置効果(ATE)の推定について、理論・実装・実務上の注意点を体系的に解説しました。

IPTWは全サンプルを活用してATEを推定できる強力な手法ですが、傾向スコアが極端な個体では重みが大きくなりすぎるリスクがあります。安定化重みの使用と、重み付け後の共変量バランスチェック(SMD確認)を徹底することで、信頼性の高い因果効果推定を実現していただければと思います。

RではWeightItとsurveyパッケージ、SASではPROC LOGISTICとPROC SURVEYREGの組み合わせが実務上の標準的な実装方法です。観察研究・リアルワールドエビデンス(RWE)の解析において、IPTWは大きな強みになります。

次回は二重ロバスト推定を紹介します。

ABOUT ME
tomokichi
外資系製薬会社で生物統計家として働ている1児のパパ。生物統計家とは何か、どのようなスキルが必要か、何を行っているのかを共有していきたいと思っております!生物統計に関する最新情報を皆様にお届けすべく、日々奮闘中です。趣味は筋トレ、温泉巡り、家族と散歩。