効果検証入門 1章メモ

自分用のメモです


[効果検証入門](https://gihyo.jp/book/2020/978-4-297-11117-5)を読んで自分なりの解釈を一部追加したりしたものです.
- 後で見返す用なので、細かすぎることは書かずあらすじ程度の内容
- 詳しいことは本を買って読んでみてください
- 誤字脱字、間違いなどが有りましたらコメントよろしくおねがいします。

## 1.1セレクションバイアスとは

ここではECサイトの利用者にクーポンメールを送る施策について考える. KPI 購入額で売上が伸びるかどうかの検証を考える.

効果があるかどうかを測定するにはメールを送った人と送らなかった人の購買額の差額を確認すれば良いと思われる. しかし多くの施策において, アクション(ここではクーポンメールの送信)はよりKPIを大きくする人たちに対して行われていることがほとんどであり, 実際の効果を適切に測る事ができない.
- 過去の履歴で良く購入する人
- 最近の購入履歴がある人
- クーポンの対象商品を過去に買った人  

などがそのようなクーポンを受け取る頻度が高くなる. 


このように「あらかじめ介入が行われている人たちがよりKPIを高める人たち」であるためにセレクションバイアスと呼ぶ. このようなセレクションバイアスは

単純な施策の差分 = 実際の効果 + セレクションバイアス

として現れる.


## 1.2 RCT

### 理想的な効果検証
全くおなじサンプルに対して介入を行った場合と行わなかった場合の２つを行い効果を比較するというのが最も理想的な効果検証であるが、これは現実にはできない. 

なぜならば, 一度介入を行ったもしくは行わなかった場合二度と「同じサンプル」にはならないためである.
例えば, クーポンメールを送った場合だと送らなかった場合のサンプルを得るためにはタイムマシンで過去に戻るしかなく, 逆に送らなかった場合その人は次の日に別のECサイトでクーポンの対象商品を買ってしまっているかもしれないからである.

このように介入を「行ったか状態」と「行っていない状態」のどちらかしか観測できないことを**因果推論の根本問題**と呼ぶ.

### RCT による検証
理想的な効果検証は行えないため統計的な手法を使う.　　つまり, 全く同じ状態の2つに対して介入を「行ったか状態」と「行っていない状態」を作成できないため, 統計的に均せば擬似的に全く同じ状態の2つに対して介入を「行ったか状態」と「行っていない状態」を作成を作成できるという考えである.

またセレクションバイアスを回避するための最も簡単なアイデアは母集団に対してメールを送る人とそうでない人を完全に無作為化する方法が考えらる.

このように効果を知りたい施策をランダムに割り振ることで効果の差分の検証を行うことを**RCT(randomized controlled trial ランダム化比較試験)**と呼ぶ.


## 1.3 効果を測る理想的な方法
セレクションバイアスとRCTの仮定を数式で表す

- $N$ 標本の数
- $i$をサンプル(今の例だとユーザー)を識別する文字として, $i=1,\cdots, N$とする
- $Z_{i}$ を介入を行ったかどうかを表し, 
   - $Z_{i} = 1 $介入を行った
   - $Z_{i} = 0 $介入を行わなかった  
  とする
- 介入を行ったサンプル数 $N^{(1)}$, 行わなかったユーザーを $N^{(0)}$とする. このとき$N=N^{(1)}+N^{(0)}$である.
- $Y_{i}$ をユーザー $i$の行動の結果(今だと購入額である)
   - $Y_{i} = Y_{i}^{1)} $ 介入を行った場合の効果
   - $Y_{i} = Y_{i}^{0)} $ 介入を行わなかった場合の効果
  とする. 因果推論の根本問題によって常にこのどちらかしか観測できない.
また次のようにして表せる.
```math
Y_{i} = Y_{i}^{(0)}(1-Z_{i}) + Y_{i}^{(1)}Z_{i}
```
- $\tau_{i} = Y_{i}^{(1)}-Y_{i}^{(0)}$ に本当の効果があると考えることを**ポテンシャルアウトカムフレームワーク**と呼ぶ

### ポテンシャルアウトカムフレームワークによる介入効果の推定

テキストのの表1.1では疑似データとしてユーザーが介入の有無による結果が記載されており, ここでは実際にメールを送ると100円の効果があると設定されている.

因果推論の根本問題のために直接 $\tau_{i}$を計算することができないため, 統計的に効果を推定するために介入を行った場合と行わなかった場合の平均の差 

```math
\tau = E\left[Y_{i}^{(1)}\right] -  E\left[Y_{i}^{(0)}\right]
```
を計算します. これを**平均処置効果**と呼びます.

実は表1.1の介入をされているユーザーはもともと購買意欲の高い人々であるためセレクションバイアスが発生しているそれを見てみる.

ま図単純に平均の比較
```math
\tau_{\text{naive}} = \frac{1}{N^{(1)}} \sum_{i=1}^{N} Y_{i}Z_{i} - \frac{1}{N^{(0)}} \sum_{i=1}^{N} Y_{i}(1-Z_{i})
```
を考える.  $\tau_{\text{naive}}$を表1.1をもとに計算すると600-300=300という結果になる. 
もともとメールを送ると100円分しか効果がないため実際よりも$200$分効果が出ていることになる.


これがセレクションバイアスで介入が行われた
- $E\left[Y^{(1)}\middle|  Z=1 \right]$ : 介入が行われときの $Y^{(1)}$, つまり$Z = 1 $となるように選ばれた人たちの $Y^{(1)}$ の期待値
- $E\left[Y^{(0)}\middle|Z=0\right]$ : 介入が行われなかったときの $Y^{(0)}$, つまり $Z = 0$ となるような人たちの $Y^{(0)}$ の期待値

であるためセレクションバイアスの結果と実際の効果がごちゃまぜになっている.

```math
\begin{align*}
\tau_{\text{naive}} 
&= 
E\left[Y^{(1)}\middle|  Z=1 \right] - 
E\left[Y^{(0)}\middle|Z=0\right]  \\
& = E\left[Y^{(1)}\middle|  Z=1 \right] - 
\left(
E\left[Y^{(0)}\middle|  Z=1 \right]
-E\left[Y^{(0)}\middle|  Z=1 \right]
\right)
-E\left[Y^{(0)}\middle|Z=0\right] \\
& =
E\left[Y^{(1)}-Y^{(0)}\middle|  Z=1 \right]
+\left(
E\left[Y^{(0)}\middle|  Z=1 \right]
-E\left[Y^{(0)}\middle|Z=0\right] 
\right)
\end{align*}
```


1. $E\left[Y^{(1)}-Y^{(0)}\middle|  Z=1 \right]$ をみるが、ここで一つ重要な仮定を置く. それは「 **効果の差分**　$(Y^{(1)}-Y^{(0)})$と **介入** $(Z)$ の間に相関がない, つまり介入に選ばれたユーザーとそうでないユーザーの間で効果は同じである」という仮定である. 
1. 上記の仮定のもとで $E\left[Y^{(1)}-Y^{(0)}\middle|  Z=1 \right] = E\left[Y^{(1)}-Y^{(0)}\right]$となる. つまりこれが**介入の本当の効果**である.
1. $E\left[Y^{(0)}\middle|  Z=1 \right] - E\left[Y^{(0)}\middle|Z=0\right] $ はセレクションバイアスである. 
  - $E\left[Y^{(0)}\middle|Z=1 \right]$ が 「介入が行われたユーザーの介入が行われなかったときの購買額」で潜在的な購買額である. 言い換えると, 介入で選ばれるユーザーの購買力である. 
  - 同様に $ E\left[Y^{(0)}\middle|Z=0\right]$は「介入に選ばれないユーザーの潜在的な購買額」である. 
よってこの項は「介入に選ばれたユーザーと選ばれなかったユーザーの潜在的な購買額の差分」を見ているおりまさしくセレクションバイアスとなる.


よってナイーブな平均の比較とRCTを行っていない実験ではセレクションバイアスが現れている事がわかった.

テキストの表1.2ではRCTによって完全にランダムに施策を行われており,
- $E\left[Y^{(0)}\middle|  Z=1 \right] = E\left[Y^{(0)}\middle|Z=0\right] $ であることが期待できる.
- **効果の差分**　$(Y^{(1)}-Y^{(0)})$と **介入** $(Z)$ の間に相関がない と仮定している

ため, 
```math
\begin{align*}
\tau_{\text{naive}} 
&= 
E\left[Y^{(1)}-Y^{(0)}\middle|  Z=1 \right]
+\left(
E\left[Y^{(0)}\middle|  Z=1 \right]
-E\left[Y^{(0)}\middle|Z=0\right] 
\right)\\
&= 
E\left[Y^{(1)}-Y^{(0)}\right]
\end{align*}
```
となる. 


最後に有意差検定とセレクションバイアスの関係についてコメントする.
有意差検定は必ずしも完璧な検定ではなく常にセレクションバイアスや実験方法と合わせて適応の限界を考える必要がある.例えば 
- セレクションバイアスが大きい場合は有意差検定の結果は差が大きくなるため有意であるという結果を導きやすい.
- 効果とセレクションバイアスが逆に相関している場合はこれらが相殺し合って実際には効果がるのに差が小さく現れるため「有意ではない」という結果になる


## 1.5 ビジネスにおける因果推論の必要性
RCT のデメリットについてであるがRCTはコストがかかる. 
RCTは介入の効果を測定するためのものでKPIを最大化するという目的とは関係ないからである.
例えば, クーポンメールを購買額が高いユーザーに送るとKPIを高めることができるが, RCTによって
購買額が低いユーザーにもメールが配信されると購買額が高いユーザーに比べて低いためKPIが大きくならない.


次にセレクションバイアスが発生するメカニズムであるが、これはKPIを最大化しようとする意思決定の結果である.
よってどのような意思が背後にあり介入が行われているかを考えることが常に必要であり, セレクションバイアスを減少させるために常に仮説を巡らせる必要がある.

最後にバイアスのループであるが,これはバイアスがあるまま効果検証し、介入に効果があるとなるとバイアスがあるままに次の意思決定を行う. その意思決定の効果検証もまたバイアスがあるうえで行われるので更にバイアスを助長してしまう.
例えば, １回目の介入で男女別に介入を行い, 男性により強い効果が得られるとわかると2回目は男性に絞って年代別でみて20代に強い効果があるという結果が得られたとする. 扱う商品が若い男性向けのものが多い場合これはセレクションバイアスによって効果が評価されており, 本当の効果ではなく単純に顧客の傾向であるかもしれない.

- KPIが介入によって改善しているかわからない施策にコストを払い続ける
- 効果検証の結果は知見としては単純にセレクションバイアスの作成方法にしかなっていない

などの可能性が考えられる.



# 参考文献
[効果検証入門](https://gihyo.jp/book/2020/978-4-297-11117-5)
[「効果検証入門」をPythonで書いた](https://qiita.com/nekoumei/items/648726e89d05cba6f432)


1.4 を Python で焼き直した記事です。参考になると思います.
https://github.com/nekoumei/cibook-python/blob/master/notebook/ch1_bias.ipynb