Data = readr::read_csv("Public.csv") # データ読み込み
Data = dplyr::mutate(
Data,
D = dplyr::if_else(
LargeDistrict == "中心6区",1,0
) # 中心6区であれば1、それ以外であれば0
) # Dの定義
Y = Data$Price
D = Data$D
X = model.matrix(
~ 0 + poly(Size,2) + poly(Tenure,2) + poly(StationDistance,2),
Data
)
X = scale(X)8 把握を目的とする要約: Augmentation
8.1 動機
Balancing weightsを用いたバランス後の平均差の推定結果は、balancing weightsの推定精度に強く依存します。 傾向スコアの逆数 (Chapter 7) を用いた推定では、傾向スコア(\(D\) の母平均)の高い精度での推定が必要ですが、実践は困難です。 例えば\(D\)のモデルを、Logitなどの伝統的な方法で推定する場合、研究者が事前に設定するモデルの定式化に推定結果が強く依存します。 LASSOなどより柔軟な推定方法を用いれば、モデルへの依存度は低下させられますが、データへの依存度は上昇してしまいます。 このためより推定結果が不安定になりやすく、例えば信頼区間の計算 (Chapter 4) などが困難になります。
Balancing weightsの推定結果への依存度を下げる方法として、\(Y\) のモデルを用いた補強 (Augment) が提案されています。 このような手法は、特に機械学習を用いた推定との相性が良く、近年改めて注目されています(Chernozhukov et al. 2018)。 以下では補強を行なった推定値として、Augmented Inverse Probability Weight (Robins and Rotnitzky 1995) を紹介します。
8.2 Augmented Inverse Probability Weighting
- Augmented Inverse Probability Weightを用いたバランス後の平均値は、以下の通り推定できる \[\underbrace{\frac{\biggr[(1/p_d(X))\times Y\biggr] のD=dについての総和}{D=dの事例数}}_{Inverse\ probability\ weighting}\] \[+\underbrace{\frac{\biggr[[(p_{d}(X) - D]/p_d(X))\times f(D=d,X)\biggr]の総和}{事例数}}_{補強}\] ただし \(f(D=d,X)\) は \(Y\) の予測値, \(p_{d}(X)\) は傾向スコアの推定値
Augmented inverse probability weighting はいくつかの利点を持ちます。 特に\(Y\)や\(D\)の予測モデル \((f(D,X),p_d(X))\) の推定に機械学習を利用できることは、実践上大きな利点です。 \(Y\)や\(D\) の予測値 \(f(D,X)\) や \(p_d(X)\) は、母平均の一致推定量である必要があります。 一致推定量とは、無限大の事例数で推定できた場合、予測値と母平均が一致する推定値のことです。 この要求は、機械学習を活用することで比較的緩やかな仮定のもとで保証されます。
また機械学習の弱点である、モデルがデータにより依存していまう、という問題についても、その弊害を軽減できます。 限られた事例数のもとで、\(f(D,X)\) や \(p_d(X)\) が不安定であったとしても、それらを用いて推定されるバランス後の平均値は、より安定的に推定でき、信頼区間も計算できます。 これは\(Y\)と\(D\)の予測モデルのどちらか一方が予測を外したとしても、バランス後の平均値の推定結果が大きな影響を受けないようにデザインされているためです。
\(f(D,X),p_d(X)\)をOLSやLogit、LASSOなどで推定する場合、Augmented Inverse Probability Weightを用いた推定値は、以下のような性質を持ちます。
- 以下の仮定のもとで、Augmented Inverse Probability Weightを用いた推定値について、信頼区間が計算できる
仮定1. Positivityが成り立つ
仮定2. \(f(D,X),p_d(X)\) の推定精度は、ある程度高い
仮定3. \(f(D,X),p_d(X)\) は、交差推定で推定されている
仮定1 (Posivitiy)は、バランス後の比較の根本的な仮定であり、推定方法に拘らず必要です。
仮定2 が要求する推定精度を厳密に保証することは、困難です。 このため実用においては、さまざまな推定方法 (OLS,LASSOなど)の予測精度をデータ分割 (Chapter 3) などで検証し、最善の方法を用いる必要があります。
仮定3 交差推定は、以下の手順で実行できます。
8.2.1 交差推定
ある事例 \(i\) について、予測値を算出する予測モデルは、当該事例\(i\)を用いずに推定される必要があります。 このような推定を効率的に行う方法として、交差推定 (Cross fitting)が頻繁に用いられます。
交差推定は、以下の手順で行われます。
事例をランダムにいくつかのグループ (第1,..,Kグループ)
第1グループに対する予測値を算出する。その際に用いる予測モデルは、第1グループ以外の事例を用いて推定する。
第2グループ以降について、手順2を繰り返し、全事例に対して予測値を算出する。
交差推定を活用することにより、予測モデルの推定精度への要求を緩めることができます。
8.3 まとめ
- 平均差の補助線 (Semenova and Chernozhukov 2021)
8.4 Rによる実践例
Ahrens et al. (2024) を実装
以下のパッケージを使用
readr (tidyverseに同梱): データの読み込み
ddml: AIPWの実装
8.4.1 準備
データを取得します。 \(D\) として、中心6区かそれ以外で、1/0となる変数を定義します。 シンプルな比較分析について信頼区間は、データ分割は不要です。
8.4.2 Balanced comparson by OLS
ATE = ddml::ddml_ate(
y = Y,
D = D,
X = X,
learners = list(
list(fun = ddml::mdl_glmnet)
),
shortstack = TRUE,
sample_folds = 2,
silent = TRUE
)
ATE$oos_pred$ED_X |> summary() nnls
Min. :0.009722
1st Qu.:0.155279
Median :0.229330
Mean :0.222802
3rd Qu.:0.291616
Max. :0.596674
ATE |> summary()ATE estimation results:
Estimate Std. Error t value Pr(>|t|)
nnls 20.9 0.706 29.5 8.75e-192
estimatr::lm_robust(
ATE$psi_b ~
scale(Data$Size) +
scale(Data$Tenure) +
scale(Data$StationDistance)
) Estimate Std. Error t value Pr(>|t|)
(Intercept) 20.8549532 0.6770905 30.8008340 2.504077e-194
scale(Data$Size) 15.7331713 1.0712634 14.6865578 4.761243e-48
scale(Data$Tenure) -2.6121215 0.6568365 -3.9768218 7.061549e-05
scale(Data$StationDistance) 0.7502977 0.9983637 0.7515274 4.523631e-01
CI Lower CI Upper DF
(Intercept) 19.527628 22.182278 6374
scale(Data$Size) 13.633135 17.833208 6374
scale(Data$Tenure) -3.899742 -1.324501 6374
scale(Data$StationDistance) -1.206831 2.707426 6374