『効果検証入門』要点まとめ

* 読んだ本：[効果検証入門〜正しい比較のための因果推論／計量経済学の基礎](https://www.amazon.co.jp/dp/B0834JN23Y/)
* 本には、コレに加えて実際のデータを使ってRで効果検証したコードと結果が書いてある

# 目的

後から要点を参照できるようにしておく


# 内容


## 1章：セレクションバイアスとRCT

* **RCT：ランダム化比較試験（randomized controlled trial）**
    * 施策を行うor行わない対象をランダムに割り振る
* **「RCTを行わない」ことで起きる可能性がある問題**
    * 施策を行う対象の選定に意図が入ることで、測りたい介入効果にセレクションバイアスが含まれてしまう
    * セレクションバイアス：施策を行った・行わなかったグループ間の、「両方とも施策を行わなかった場合」でも発生する差。グループの元々の違い
* **「測定した介入効果にセレクションバイアスが含まれる」ことで起きる可能性がある問題**
    * 「本当は効果が小さい施策の、効果を過大に評価してしまう」「本当は効果がある施策の、効果を過小に評価してしまう」
        * 本当にKPIを改善しているかわからないものにコストを支払い続けてしまう
    * 「本当は効果がないが、セレクションバイアスを大きくしただけの施策」が効果があるように見えてしまう
        * 蓄積される知見の多くが、セレクションバイアスの作り方になってしまう」
* **「何でもかんでもRCT」とはならない理由**
    * RCTにはコストがかかる
        * 本来なら施策は「効果がありそうな対象」を狙って実施したいが、ランダムで割り振ると効果が小さくなることもあり、短期的にはコストがかかる
    * 状況的に出来ない場合がある
        * 例：「個人ごとに法律を適用するorしない」とか「個人ごとに提示する商品の価格を高くするor安くする」とか


## 2章：介入効果を測るための回帰分析

### 回帰分析

* 被説明変数$Y$：施策の効果を測りたい変数
* 説明変数
    * 介入変数$Z$：効果を測りたい施策の有無を表す変数
    * 共変量$X$：セレクションバイアスを発生させていると思われる変数

とすると、一番簡単な線形回帰だと↓になる（事前知識から、必要に応じて$X$や$Z$の二乗の項なども入れてもいい）

```math
Y = \beta_0 + \beta_1 Z + \beta_2 X + e
```

* **この式の、$\beta_1$（=介入変数$Z$を変えたときの、$Y$の変化）が介入効果**
    * $\beta_1$の95%信頼区間に0が入らないとき、有意水準5%で「$\beta_1$は0ではない」=「介入効果あり」とみなす。
* 効果検証のための回帰分析では、他のパラメータ（↑で言う$\beta_0$とか$\beta_2$）については推定値や有意差検定の議論はしない
    * 分析の目的上、興味がないため
    * 本当の効果を表すようになるような努力を行わないため

### 回帰分析におけるバイアス

#### OVB（Ommited Variable Bias、脱落変数バイアス）

* **OVB = 必要な共変量を入れずに推定効果を算出した際に、発生するズレ**
* 脱落変数：↓の$X$のように「本来必要だがモデルから抜け落ちている変数」のこと

共変量を入れる・入れない場合の影響を調べるため、以下の「$X$を除いた、$Y, Z$のみの回帰分析の式」「$X$を$Z$で表した式」を考える

```math
\begin{align}
Y &= \alpha_0 + \alpha_1 Z + u \\
X &= \gamma_1 Z + \epsilon \\
\end{align}
```

このとき、

```math
\begin{align}
\alpha_1 &= \beta_1 + \gamma_1 \beta_2 \\
\Leftrightarrow \alpha_1 - \beta_1 &= \gamma_1 \beta_2 \\
\end{align}
```

となる。（導出は本でも省略されてる）

* OVBの式（$\alpha_1 - \beta_1 = \gamma_1 \beta_2$）からわかること
    * OVBは、「$\gamma_1$（=脱落変数$X$と介入変数$Z$の関係）」と「$\beta_2$（=脱落変数$X$と目的変数$Y$の関係）」の掛け合わせ
    * $\gamma_1$と$\beta_2$のどちらかがほぼ0になるようなとき、OVBは無視できるほど小さい
        * **バイアスの少ない効果推定をするには、「$Y, Z$の両方に対して、ある程度相関があるような変数$X$」を漏れなく入れること**
        * **ただし、$Z$ -> $X$ -> $Y$という順番で作用するような$X$は入れてはいけない。**後述のPost treatment bias
    * **バイアスが発生しそうな変数$X$が入手できないときも、$Y, Z$との関係の正負を考えると、推定結果がどちらにズレているか想定できる**
        * 例：「$Y, Z$両方と正の相関がありそうな変数$X$が脱落している」 = 「OVB（$\gamma_1 \beta_2$）が正」 = 「$X$脱落時の推定効果$\alpha_1$は、$X$を加えた推定効果$\beta_1$より大きくなっている」

#### CIA（Conditional Independence Assumption）

* **CIA = 「モデルに含まれていない変数によるOVBが0になるような状態」** = 「共変量の値が同一のサンプルにおいて、介入$Z$がランダムに割り振られているのに等しい状態」
    * 回帰分析で効果推定するときは、この状態を目指したい
* CIAを目指すにあたって、発生する問題
    * 「コレならOVBが最小である」という評価ができない
        * 「モデルを変えたときの、推定量に含まれるバイアスの変化」は算出できるが、「OVBが0になるまでの、残りのバイアスの量」は算出できない
    * 必要な共変量がなかったら、分析できない
        * ドメイン知識があれば推察できるが、分析者の主観が含まれる
* 応用的な手法による対応
    * 操作変数法、固定効果モデル（本書では扱わない）
    * 差分の差分法（後述）
* Sensitivity Analysis
    * 「分析者が重要だと認識している共変量」以外の共変量をモデルから抜くことで、効果の推定値が大きく変動しないかを確認する分析
    * 「変動が小さい場合、回帰分析の結果が他の変数の影響を受けにくい」 -> 「データセットに含まれていない変数を含めても、大きく変化しないことを示唆する」
    * 解説（自分は読めてない）
        * 基本：Angrist and Pischke (2014)
        * 詳細：Atonji et al. (2005)

#### Post treatment bias

**介入によって影響を受けた変数を分析に入れることによって起きるバイアス**

* 対策：介入よりもあとのタイミングで値が決まるような変数は、分析から除外する
    * どのような変数が当てはまるかは、分析者の知識が必要
* 変数選択以外の、似た問題
    * 例：広告見た人と見てない人の売上分析
        * 「利用した人」のデータしかないので、「広告見た人」は「もともと意欲が高い人・低い人」両方が含まれるが、「広告見てない人」は「もともと意欲が高い人」しか含まれず、偏りが生じる

### その他

* 効果検証においては、予測能力の高い低いは関係ない
    * 例：RCTだと介入変数のみで回帰分析するため予測能力は低いが、効果検証としては有用
* 介入と効果が非線形な関係をもつ場合、線形回帰以外の形も検討する
    * 「介入効果を比率で表したい」「介入と効果の関係が比率で扱われるべきである」場合は対数を利用する
* 多重共線性に注意
    * 介入変数と相関が強すぎる共変量を入れると、推定効果の分散が大きくなりすぎて、検定結果が意味のないものになる
    * 介入変数に関係ない多重共線性は、何も影響しないため考慮する必要なし
* 説明変数の間で相互作用がある場合は、推定されるパラメータにズレが生じる


## 3章：傾向スコアを用いた分析

**傾向スコア：各サンプルにおいて、介入が行われる確率。**サンプルごとの特徴（共変量）から算出される

* **何に使うか？**
    * 似ているサンプルを探す
        * 2章の回帰分析は「共変量一つ一つが似ているかどうか」という方針だが、傾向スコアは「共変量を統合して介入確率として表現し、介入確率が似ているかどうか」という方針
        * 共変量が多くなり高次元になると回帰分析では似ているものが見つかりにくくなるため、傾向スコアのほうが向いている
    * サンプルに重み付けする
* **どう算出するか？**
    * 機械学習モデルを使う（ロジスティックス回帰やGBDTなど）
    * ここで使うモデルは「傾向スコアを得る」ことが大事で、パラメータの解釈などは必要ない。そのため多重共線性なども問題にならない。
* 傾向スコアを利用した効果推定
    * **傾向スコアマッチング**
        * 「介入が行われているグループ」からサンプルを取り出し、それに傾向スコアが近いものを「介入が行われていないグループ」から取り出し、そのペア間の目的変数の差を取っていき、平均したものを効果の推定値とする
        * 「傾向スコアが似ている」 = 「介入の有無以外は似ている」 = 「効果が差分として現れる」という考え
        * 注意点
            * ↑の方法だと、算出される効果は「ATT（Average Treatment effect on Treated） = 介入を受けたサンプルにおける介入効果」
            * 介入群と非介入群で効果量が異なる場合、平均的な効果推定値とはズレる。（マッチングしたorしなかったサンプルで効き方が違う、など）
            * ATE（Average Treatment effect）を推定する場合は、非介入グループにもマッチングを行う
    * **逆確率重み付き推定（Inverse Probability Weighting：IPW）**
        * 各サンプルを、自身が属するグループに割り振られる確率の逆数で重み付けして、効果を算出する
        * 例：あるサンプルの傾向スコアが20%(=1/5)の場合
            * 介入グループのサンプルの場合、目的変数が5倍され、分母も5でカウントする
            * 非介入グループのサンプルの場合、目的変数が4/5倍され、分母も4/5でカウントする
        * 「介入・非介入グループを似たグループにする」=「割り振られる確率をもとに、基準(100%)に合わせるよう重み付けする（20%(=1/5)のサンプルは5倍として扱う)」という考え方
        * 注意点
            * 介入・非介入グループの傾向の違いが大きい場合、結果が信頼しにくい
                * 例えば、傾向スコア0.01%のサンプルがあると10,000倍されてしまい、重みが大きくなりすぎる
* **マッチングとIPWを選ぶときの注意点**
    * 自分が分析するデータがどのようなデータで、推定したい効果がどのようなサンプルにおける効果なのか十分に配慮する
    * 共変量のバランスに注目すると良い
        * 「マッチング後のデータ」「IPWで重み付け後のデータ」を使う
        * 介入グループと非介入グループの標準化平均差を取る
            * 標準化平均差（Average Standardized Absolute Mean distance：ASAM）：平均の差を、その標準偏差で割ったもの
            * コレが0.1以下であることが、共変量のバランスが取れている目安


## 4章：差分の差分法（DID）とCausalImpact

* **DID、CausalImpactが必要となる状況**
    * 「特定の地域への介入」など、あるグループ全部が介入データとなり、似たサンプルでの介入・非介入比較ができない場合

### 差分の差分法（DID：Difference in Difference）

* **「介入したもの・しなかったもの」「介入時期の前・後」のデータを使って効果を算出する方法**
* なぜDIDが必要か
    * 介入グループと非介入グループのデータを比べると、「そもそものグループの差異では？」という疑問が残る
    * 介入グループの、介入前後のデータを比べると、「何もしなくても時間経過で発生した差異では？」という疑問が残る
    * これらの差異を消すためにDIDを行う
* 例：
    * 介入グループAの介入前の値をA1、介入後の値をA2とし、非介入グループの介入前の値をB1、介入後の値をB2とする
    * このとき、効果は「(A2-A1)-(B2-B1)」となり、グループ間の差異と時間経過の差異が打ち消される

#### 回帰分析の利用

以下のように変数を設定し、式を作り回帰分析を行うと、$\beta_3$が介入による効果となる（介入があったデータは$X_1, X_2$がともに1となる）

* $Y$：測定対象となる目的変数
* $X_1$：グループ間の違い（介入グループは1、非介入グループは0）
* $X_2$：介入前後の違い（介入後は1、介入前は0）

```math
Y = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \beta_3 X_1 X_2 + u
```

* DID利用時の注意点
    * 平行トレンド仮定（Common Trend Assumption）が成り立たない場合は、使えない
        * 平行トレンド仮定：「介入グループと非介入グループは、何もしないとき介入時期の前後で同じ変化をする」という仮定
    * 平行トレンドでない場合にできる対策
        * 仮定を満たさないと考えられるデータを取り除く（非介入データが、複数のデータの平均などを取っている場合）
        * トレンドの乖離を説明するような変数を、共変量として加える

### CausalImpact

* **「介入データに介入を行わなかった場合」の値を予測して、介入後のズレを効果として算出する方法**
* **なぜCausalImpactが必要か**
    * 介入グループのデータしかない場合、DIDが使えない
    * DIDを行う際、平行トレンド仮定を満たすようなデータの選択は分析者の仮設に依存する
* **予測方法：本書では詳しく触れてなかったが、おそらく状態空間モデルとか使う**

### DIDとCausalImpactで共通すること

* 限定的な実験しか出来ないとき重宝する
* 複数の介入が同時に行われた場合、それぞれの介入の効果算出はできない
    * アクティビティバイアス（Activity Bias）と呼ばれる


## 5章：回帰不連続デザイン（RDD）

**ある特徴量の決められたカットオフ値で介入・非介入が割り振られる場合、そのカットオフ値前後でのジャンプを効果として算出する**

以下のように変数を設定し、式を作り回帰分析を行うと、$\beta_2$が介入による効果となる。（↓は線形だが、データによって非線形でも良い）

* $Y$：測定対象となる目的変数
* $X$：特徴量
* $Z$：介入の有無（介入後は1、介入前は0）

```math
Y = \beta_0 + \beta_1 X + \beta_2 Z + u
```
* 注意点
    * RDDで推定される効果は、カットオフ周辺の効果（Local Average Treatment Effect：LATE）
        * カットオフ周辺以外で効果が変わる場合は、測定できない
    * Continuity of Conditional Regression Functionsという仮定を満たしている必要がある
        * 介入・非介入の期待値が連続であること
        * 別の介入があるとき☓になる
    * non-manipulation
        * 「カットオフ値以下のサンプルが、意図的にカットオフ値以上に移動する」ということが発生していないこと
        * 例：「ある値段以上購入でクーポンがもらえる」とすると、本来ある値以下だったユーザの購入量が増えて、カットオフ値以上に移動してしまう
* 本書で紹介されている理由
    * ビジネスではルールによって介入が割当られることが多いため
    * 「閾値を決めてユーザをセグメント分けして、あるセグメントに介入する」「機械学習や統計モデルを使って、介入対象を決める」という場合