\[\begin{equation} Y = \alpha D + g(W) + \varepsilon \end{equation}\]
Model | \(R^2_D\) | \(R^2_Y\) | Estimate | Std. Err. | 95% CI |
---|---|---|---|---|---|
Tree | 0.40 | 0.19 | -0.109 | 0.018 | [-0.143, -0.074] |
Boost | 0.41 | 0.17 | -0.102 | 0.019 | [-0.139, -0.064] |
Forest | 0.49 | 0.26 | -0.134 | 0.019 | [-0.171, -0.096] |
NNet | 0.47 | 0.21 | -0.132 | 0.020 | [-0.171, -0.093] |
参考: Table4.3
Model | \(R^2_D\) | \(R^2_Y\) | Estimate | Std. Err. | 95% CI |
---|---|---|---|---|---|
OLS (\(p = 242\)) | - | - | 0.005 | 0.016 | [-0.026, 0.036] |
OLS (\(p = 2068\)) | - | - | -0.003 | 0.021 | [-0.045, 0.039] |
OLS (\(p = 2072\)) | - | - | -0.033 | 0.022 | [-0.076, 0.010] |
Double Lasso | 0.09 | 0.32 | -0.064 | 0.018 | [-0.099, -0.029] |
Double Selection | - | - | -0.074 | 0.019 | [-0.111, -0.037] |
Desparsified Lasso | - | - | -0.062 | 0.017 | [-0.096, -0.028] |
\(\rightarrow\) 非線形モデルが共変量をより適切にコントロールできることが示唆
<!-- rnb-plot-begin -->
<img src=\data:image/png;base64
次の interactive regression model (IRM) と propensity score の2つの回帰モデルの組を考える
\[\begin{align} Y & = g_0(D, X) + \varepsilon, \quad \mathbb{E}[\varepsilon | X, D] = 0, \tag{10.3.1} \\ D & = m_0(X) + \tilde{D}, \quad \mathbb{E}[\tilde{D} | X] = 0. \tag{10.3.2} \end{align}\]
興味のあるパラメタ (parameter of interest): 平均予測効果 (APE)
\[\begin{equation} \theta_0 = \mathbb{E}[g_0(1, X) - g_0(0, X)] \tag{10.3.3} \end{equation}\]
\[\begin{equation} \theta_0 = \mathbb{E}[\varphi_0(W)], \tag{10.3.4} \end{equation}\]
\[\begin{equation} \varphi_0(W) = \varphi_0(Y,D,X) = g_0(1, X) - g_0(0, X) + (Y - g_0(D, X))H_0, \end{equation}\]
重み\(H_0\) は、傾向スコアの逆数によって重み付けされた Horvitz-Thompson weight である \[\begin{equation} H_0 = \frac{1(D = 1)}{m_0(X)} - \frac{1(D = 0)}{1 - m_0(X)}. \end{equation}\]
補足: “doubly robust” な定式化でもある
\[\begin{equation} \theta_0=\mathrm{E}\left[g_0(1, X)-g_0(0, X)\right], \end{equation}\]
\[\begin{equation} \theta_0=\mathrm{E}\left[Y H_0\right] . \end{equation}\]
Cross-fitting
\[\begin{equation} \hat{\varphi}(W_i) = \hat{g}_{[k]}(1, X_i) - \hat{g}_{[k]}(0, X_i) + (Y_i - \hat{g}_{[k]}(D_i, X_i))\hat{H}_i, \end{equation}\] ここで: \[\begin{equation} \hat{H}_i = \frac{1(D_i = 1)}{\hat{m}_{[k]}(X_i)} - \frac{1(D_i = 0)}{1 - \hat{m}_{[k]}(X_i)}. \end{equation}\]
推定量から、\(\theta\) の推定値を得る \[\begin{equation} \hat{\theta} = \frac{1}{n} \sum_{i=1}^n \hat{\varphi}(W_i). \end{equation}\]
標準誤差の計算
以下の条件を満たすと仮定する
局外母数 (nuisance parameter) の推定誤差は、処置効果 \(\hat{\theta}\) の推定に影響を与えない \[\begin{equation} \sqrt{n}\left(\hat{\theta}-\theta_0\right) \approx \sqrt{n} \mathbb{E}_n\left[\varphi_0(W)-\theta_0\right] . \end{equation}\]
推定量は \(\sqrt{n}\)一致性を満たし、次の分布に収束する \[\begin{equation} \sqrt{n}(\hat{\theta} - \theta_0) \approx \mathcal{N}(0, V), \end{equation}\] ここで、 \[\begin{equation} V = \mathbb{E}[(\varphi_0(W) - \theta_0)^2]. \end{equation}\]
\(g_0\) と \(m_0\) の推定にはトレードオフがある可能性があると書いてあったが、なぜ?
特定のグループにおける平均処置効果 (GATE) を推定することもできる \[\begin{equation} \theta_0 = \mathbb{E}[g_0(1, X) - g_0(0, X) \mid G = 1] \end{equation}\]
例: ワクチンが与える年齢階層別の影響を知りたい
次の推定量で推定が可能 \[\begin{equation} \theta_0=\mathrm{E}\left[\varphi_0(X) \mid G=1\right]=\mathrm{E}\left[\varphi_0(X) G\right] / \mathrm{P}(G=1) . \end{equation}\]
\[\begin{equation} \theta_0 = \mathbb{E}[g_0(1, X) - g_0(0, X) \mid D = 1] \end{equation}\]
\[\begin{equation} \tilde{Y}=\tilde{D}\left(g_0(1, X)-g_0(0, X)\right)+\epsilon . \end{equation}\]
\[\begin{equation} \beta:=\{b: E[(\tilde{Y}-b \tilde{D}) \tilde{D}]=0\}=\left(\mathrm{E}\left[\tilde{D}^2\right]\right)^{-1} \mathrm{E}[\tilde{D} \tilde{Y}], \end{equation}\]
\[\begin{align} &\beta = \frac{\mathrm{E}[\tilde{D} \tilde{Y}]}{\mathrm{E}\left[\tilde{D}^2\right]} \\ \Rightarrow &\beta = \frac{\mathrm{E}[\tilde{D} \left\{\tilde{D}\left(g_0(1, X)-g_0(0, X)\right)+\epsilon\right\}]}{\mathrm{E}\left[m_0(X)\left(1-m_0(X)\right)\right]} \quad \because \text{$\tilde{Y}$ を代入} \\ \Rightarrow &\beta = \frac{\mathrm{E}[\tilde{D}^2\left(g_0(1, X)-g_0(0, X)\right)]}{\mathrm{E}\left[m_0(X)\left(1-m_0(X)\right)\right]} + \frac{\mathrm{E}[\tilde{D} \epsilon]}{\mathrm{E}\left[m_0(X)\left(1-m_0(X)\right)\right]} \\ \therefore ~ &\beta = \frac{\mathbb{E}[m_0(X)(1 - m_0(X))(g_0(1, X) - g_0(0, X))]}{\mathbb{E}[m_0(X)(1 - m_0(X))]} \end{align}\]
<補足: \(\mathrm{E}\left[\tilde{D}^2 \mid X\right]=m_0(X)\left(1-m_0(X)\right)\) の導出>
(10.3.2)式より、残差 \(\tilde{D}\) は以下のように表される \[\begin{align} &D = m_0(X) + \tilde{D}, \quad \mathbb{E}[\tilde{D} | X] = 0 \\ \tag{10.3.2} \Rightarrow & \tilde{D} = D - m_0(X) \end{align}\]
\(\mathbb{E}[\tilde{D}^2 \mid X]\) は \[\begin{align} &\mathbb{E}[\tilde{D}^2 \mid X] = \mathbb{E}[(D - m_0(X))^2 \mid X] \\ \Rightarrow &\mathbb{E}[\tilde{D}^2 \mid X] = \mathbb{E}[D^2 \mid X] - 2m_0(X)\mathbb{E}[D \mid X] + m_0(X)^2 \end{align}\]
\(D \in \{0, 1\}\) であり、\(D^2 = D\) であることと \(\mathbb{E}[D \mid X] = m_0(X)\) を利用すると、 \[\begin{align} &\mathbb{E}[\tilde{D}^2 \mid X] = \mathbb{E}[D \mid X] - 2m_0(X)m_0(X) + m_0(X)^2 \\ \Rightarrow &\mathbb{E}[\tilde{D}^2 \mid X] = m_0(X) - 2m_0(X)^2 + m_0(X)^2 \\ \Rightarrow &\mathbb{E}[\tilde{D}^2 \mid X] = m_0(X) - m_0(X)^2 \\ \because ~ &\mathbb{E}[\tilde{D}^2 \mid X] = m_0(X)(1 - m_0(X)). \end{align}\]
連続的な処置 \(D \in [0, 1]\) の場合も、\(g_0(D, X)\) をベースライン + \(D\) による効果として分解して記述できる \[\begin{equation} g_0(D, X) = g_0(0, X) + \int_0^D t \cdot g_0'(t, X) dt \end{equation}\]
すると、\(\beta\) を weighted average derivative として書ける \[\begin{equation} \beta = \frac{\mathbb{E}[w(D, X) g_0'(D, X)]}{\mathbb{E}[w(D, X)]} \end{equation}\] ここで、重み \(w(D, X)\) は次のように定義される \[\begin{equation} w(D, X) = \frac{\mathbb{E}[\tilde{D} \mid D > d, X]}{f(D \mid X)} \end{equation}\]
binary にせよ continuous にせよ、解釈が難しいものになっている
Poterba et al. (1994, 1995) の、企業型確定拠出年金制度401(k)への加入資格 が個人の金融資産に与える影響を、本節で説明してきたDMLを用いて再分析する
推定における課題
解決策
条件付き独立性と関数型に関する議論
git clone
を実行すれば良いrenv
による仮想環境を使うことで、パッケージのバージョン管理を行っている
renv::restore()
を行うことで、このノートブックで使用しているパッケージをインストール可能renv
パッケージをダウンロードしていない人は、最初に
install.packages("renv")
を実行する必要があるpacman::p_load()
がおすすめ
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuIyBpbnN0YWxsLnBhY2thZ2VzKFwicmVudlwiKVxuIyByZW52OjpyZXN0b3JlKClcbiMgcmVtb3Rlczo6aW5zdGFsbF9naXRodWIoXCJtbHItb3JnL21scjNleHRyYWxlYXJuZXJzXCIsIGZvcmNlID0gVFJVRSkgIyBuZWVkZWQgdG8gcnVuIGJvb3N0aW5nXG5cbnBhY21hbjo6cF9sb2FkKFxuICBkYWdpdHR5LFxuICBnZ2RhZyxcbiAgeHRhYmxlLFxuICBoZG0sXG4gIHNhbmR3aWNoLFxuICBnZ3Bsb3QyLFxuICByYW5kb21Gb3Jlc3QsXG4gIGRhdGEudGFibGUsXG4gIGdsbW5ldCxcbiAgcnBhcnQsXG4gIGdibSxcbiAgRG91YmxlTUwsIFxuICBtbHIzbGVhcm5lcnMsIFxuICBtbHIzLCBcbiAgZGF0YS50YWJsZSwgXG4gIHJhbmRvbUZvcmVzdCwgXG4gIHJhbmdlcixcbiAgbWxyM2V4dHJhbGVhcm5lcnMsXG4gIG1ib29zdFxuKVxuYGBgIn0= -->
```r
# install.packages(\renv\)
# renv::restore()
# remotes::install_github(\mlr-org/mlr3extralearners\, force = TRUE) # needed to run boosting
pacman::p_load(
dagitty,
ggdag,
xtable,
hdm,
sandwich,
ggplot2,
randomForest,
data.table,
glmnet,
rpart,
gbm,
DoubleML,
mlr3learners,
mlr3,
data.table,
randomForest,
ranger,
mlr3extralearners,
mboost
)
```
<!-- rnb-source-end -->
```r
# install.packages(\renv\)
# renv::restore()
# remotes::install_github(\mlr-org/mlr3extralearners\, force = TRUE) # needed to run boosting
pacman::p_load(
dagitty,
ggdag,
xtable,
hdm,
sandwich,
ggplot2,
randomForest,
data.table,
glmnet,
rpart,
gbm,
DoubleML,
mlr3learners,
mlr3,
data.table,
randomForest,
ranger,
mlr3extralearners,
mboost
)
<!-- rnb-source-end -->
<!-- rnb-output-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
---
#### **Figure 10.6: $X$ を調整すれば因果推定が可能な構造**
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVJeUJuWlc1bGNtRjBaU0JoSUVSQlIzTWdZVzVrSUhCc2IzUWdkR2hsYlZ4dVhHNUhNU0E4TFNCa1lXZHBkSFI1S0Nka1lXZDdYRzVaSUZ0dmRYUmpiMjFsTEhCdmN6MWNJalFzSURCY0lsMWNia1FnVzJWNGNHOXpkWEpsTEhCdmN6MWNJakFzSURCY0lsMWNibGdnVzJOdmJtWnZkVzVrWlhJc0lIQnZjejFjSWpJc0xURmNJbDFjYmtZZ1czVnZZbk5sY25abFpDd2djRzl6UFZ3aU1Dd2dMVEZjSWwxY2JrUWdMVDRnV1Z4dVdDQXRQaUJFWEc1R0lDMCtJRmhjYmtZZ0xUNGdSRnh1V0NBdFBpQlpmU2NwWEc1Y2JrY3hYMlJoWnlBOExTQm5aMlJoWnloSE1Ta2dLeUIwYUdWdFpWOWtZV2NvS1Z4dVhHNUhNVjlrWVdja2JHRjVaWEp6VzFzelhWMGtiV0Z3Y0dsdVp5QThMU0JjYmlBZ1lXVnpLR052Ykc5MWNpQTlJR01vWENKUFluTmxjblpsWkZ3aUxDQmNJbFZ1YjJKelpYSjJaV1JjSWlsYllYTXViblZ0WlhKcFl5aHVZVzFsSUQwOUlGd2lSbHdpS1NBcklERmRLVnh1UnpGZlpHRm5JQ3NnYzJOaGJHVmZZMjlzYjNKZmJXRnVkV0ZzS0haaGJIVmxjeUE5SUdNb1hDSmliR0ZqYTF3aUxDQmNJbUpzZFdWY0lpa3BJQ3RjYmlBZ2RHaGxiV1VvYkdWblpXNWtMbkJ2YzJsMGFXOXVMbWx1YzJsa1pTQTlJR01vTUM0NExDQXdMamdwS1Z4dVlHQmdJbjA9IC0tPlxuXG5gYGByXG4jIGdlbmVyYXRlIGEgREFHcyBhbmQgcGxvdCB0aGVtXG5cbkcxIDwtIGRhZ2l0dHkoJ2RhZ3tcblkgW291dGNvbWUscG9zPVxcNFxuIn0= -->
# generate a DAGs and plot them
G1 <- dagitty('dag{
Y [outcome,pos=\4
```r
# generate a DAGs and plot them
G1 <- dagitty('dag{
Y [outcome,pos=\4
<!-- rnb-plot-begin eyJoZWlnaHQiOjQzMi42MzI5LCJ3aWR0aCI6NzAwLCJzaXplX2JlaGF2aW9yIjowLCJjb25kaXRpb25zIjpbXX0= -->
<img src=\data:image/png;base64
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYWRqdXN0bWVudFNldHMoRzEsIFwiRFwiLCBcIllcIiwgZWZmZWN0ID0gXCJ0b3RhbFwiKVxuYGBgIn0= -->
```r
adjustmentSets(G1, \D\, \Y\, effect = \total\)
```
<!-- rnb-source-end -->
```r
adjustmentSets(G1, \D\, \Y\, effect = \total\)
<!-- rnb-source-end -->
<!-- rnb-output-end -->
<!-- rnb-output-begin eyJkYXRhIjoieyBYIH1cbiJ9 -->
{ X }
<!-- rnb-output-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVJeUJuWlc1bGNtRjBaU0JoSUdOdmRYQnNaU0J2WmlCRVFVZHpJR0Z1WkNCd2JHOTBJSFJvWlcxY2JseHVSeklnUEMwZ1pHRm5hWFIwZVNnblpHRm5lMXh1V1NCYmIzVjBZMjl0WlN4d2IzTTlYQ0kwTENBd1hDSmRYRzVFSUZ0bGVIQnZjM1Z5WlN4d2IzTTlYQ0l3TENBd1hDSmRYRzVZSUZ0amIyNW1iM1Z1WkdWeUxDQndiM005WENJeUxDMHhYQ0pkWEc1R0lGdDFiMkp6WlhKMlpXUXNJSEJ2Y3oxY0lqQXNJQzB4WENKZFhHNUVJQzArSUZsY2JsZ2dMVDRnUkZ4dVdDQXRQaUJHWEc1R0lDMCtJRVJjYmxnZ0xUNGdXWDBuS1Z4dVhHNWNia2N5WDJSaFp5QThMU0JuWjJSaFp5aEhNaWtnS3lCMGFHVnRaVjlrWVdjb0tWeHVYRzVITWw5a1lXY2tiR0Y1WlhKelcxc3pYVjBrYldGd2NHbHVaeUE4TFNCY2JpQWdZV1Z6S0dOdmJHOTFjaUE5SUdNb1hDSlBZbk5sY25abFpGd2lMQ0JjSWxWdWIySnpaWEoyWldSY0lpbGJZWE11Ym5WdFpYSnBZeWh1WVcxbElEMDlJRndpUmx3aUtTQXJJREZkS1Z4dVJ6SmZaR0ZuSUNzZ2MyTmhiR1ZmWTI5c2IzSmZiV0Z1ZFdGc0tIWmhiSFZsY3lBOUlHTW9YQ0ppYkdGamExd2lMQ0JjSW1Kc2RXVmNJaWtwSUN0Y2JpQWdkR2hsYldVb2JHVm5aVzVrTG5CdmMybDBhVzl1TG1sdWMybGtaU0E5SUdNb01DNDRMQ0F3TGpncEtWeHVZR0JnSW4wPSAtLT5cblxuYGBgclxuIyBnZW5lcmF0ZSBhIGNvdXBsZSBvZiBEQUdzIGFuZCBwbG90IHRoZW1cblxuRzIgPC0gZGFnaXR0eSgnZGFne1xuWSBbb3V0Y29tZSxwb3M9XFw0XG4ifQ== -->
# generate a couple of DAGs and plot them
G2 <- dagitty('dag{
Y [outcome,pos=\4
```r
# generate a couple of DAGs and plot them
G2 <- dagitty('dag{
Y [outcome,pos=\4
<!-- rnb-plot-begin eyJoZWlnaHQiOjQzMi42MzI5LCJ3aWR0aCI6NzAwLCJzaXplX2JlaGF2aW9yIjowLCJjb25kaXRpb25zIjpbXX0= -->
<img src=\data:image/png;base64
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYWRqdXN0bWVudFNldHMoRzIsIFwiRFwiLCBcIllcIiwgZWZmZWN0ID0gXCJ0b3RhbFwiKVxuYGBgIn0= -->
```r
adjustmentSets(G2, \D\, \Y\, effect = \total\)
```
<!-- rnb-source-end -->
```r
adjustmentSets(G2, \D\, \Y\, effect = \total\)
<!-- rnb-source-end -->
<!-- rnb-output-end -->
<!-- rnb-output-begin eyJkYXRhIjoieyBYIH1cbiJ9 -->
{ X }
<!-- rnb-output-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVSek1nUEMwZ1pHRm5hWFIwZVNnblpHRm5lMXh1V1NCYmIzVjBZMjl0WlN4d2IzTTlYQ0kwTENBd1hDSmRYRzVFSUZ0bGVIQnZjM1Z5WlN4d2IzTTlYQ0l3TENBd1hDSmRYRzVZSUZ0amIyNW1iM1Z1WkdWeUxDQndiM005WENJeUxDMHhYQ0pkWEc1R0lGdDFibTlpYzJWeWRtVmtMQ0J3YjNNOVhDSXdMQ0F0TVZ3aVhWeHVWU0JiZFc1dlluTmxjblpsWkN3Z2NHOXpQVndpTWl3Z0xUSmNJbDFjYmtRZ0xUNGdXVnh1V0NBdFBpQkVYRzVHSUMwK0lFUmNibFVnTFQ0Z1JseHVWU0F0UGlCWVhHNVZJQzArSUVSY2JsZ2dMVDRnV1gwbktWeHVYRzVITTE5a1lXY2dQQzBnWjJka1lXY29Sek1wSUNzZ2RHaGxiV1ZmWkdGbktDbGNibHh1UnpOZlpHRm5KR3hoZVdWeWMxdGJNMTFkSkcxaGNIQnBibWNnUEMwZ1hHNGdJR0ZsY3loamIyeHZkWElnUFNCaktGd2lUMkp6WlhKMlpXUmNJaXdnWENKVmJtOWljMlZ5ZG1Wa1hDSXBXMkZ6TG01MWJXVnlhV01vYm1GdFpTQWxhVzRsSUdNb1hDSkdYQ0lzWENKVlhDSXBLU0FySURGZEtWeHVSek5mWkdGbklDc2djMk5oYkdWZlkyOXNiM0pmYldGdWRXRnNLSFpoYkhWbGN5QTlJR01vWENKaWJHRmphMXdpTENCY0ltSnNkV1ZjSWlrcElDdGNiaUFnZEdobGJXVW9iR1ZuWlc1a0xuQnZjMmwwYVc5dUxtbHVjMmxrWlNBOUlHTW9NQzQ0TENBd0xqZ3BLVnh1WUdCZ0luMD0gLS0+XG5cbmBgYHJcbkczIDwtIGRhZ2l0dHkoJ2RhZ3tcblkgW291dGNvbWUscG9zPVxcNFxuIn0= -->
G3 <- dagitty('dag{
Y [outcome,pos=\4
```r
G3 <- dagitty('dag{
Y [outcome,pos=\4
<!-- rnb-plot-begin eyJoZWlnaHQiOjQzMi42MzI5LCJ3aWR0aCI6NzAwLCJzaXplX2JlaGF2aW9yIjowLCJjb25kaXRpb25zIjpbXX0= -->
<img src=\data:image/png;base64
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuXG5hZGp1c3RtZW50U2V0cyhHMywgXCJEXCIsIFwiWVwiLCBlZmZlY3QgPSBcInRvdGFsXCIpXG5gYGAifQ== -->
```r
adjustmentSets(G3, \D\, \Y\, effect = \total\)
```
<!-- rnb-source-end -->
```r
adjustmentSets(G3, \D\, \Y\, effect = \total\)
<!-- rnb-source-end -->
<!-- rnb-output-end -->
<!-- rnb-output-begin eyJkYXRhIjoieyBYIH1cbiJ9 -->
{ X }
<!-- rnb-output-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
- **$F$ が直接アウトカム $Y$ に影響を与える場合、識別はできない**
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVSelFnUEMwZ1pHRm5hWFIwZVNnblpHRm5lMXh1V1NCYmIzVjBZMjl0WlN4d2IzTTlYQ0kwTENBd1hDSmRYRzVFSUZ0bGVIQnZjM1Z5WlN4d2IzTTlYQ0l3TENBd1hDSmRYRzVZSUZ0amIyNW1iM1Z1WkdWeUxDQndiM005WENJeUxDMHhYQ0pkWEc1R0lGdDFibTlpYzJWeWRtVmtMQ0J3YjNNOVhDSXdMQ0F0TVZ3aVhWeHVWU0JiZFc1dlluTmxjblpsWkN3Z2NHOXpQVndpTWl3Z0xUSmNJbDFjYmtRZ0xUNGdXVnh1V0NBdFBpQkVYRzVHSUMwK0lFUmNibFVnTFQ0Z1JseHVWU0F0UGlCWVhHNVZJQzArSUVSY2JrWWdMVDRnV1Z4dVdDQXRQaUJaZlNjcFhHNWNibHh1UnpSZlpHRm5JRHd0SUdkblpHRm5LRWMwS1NBcklIUm9aVzFsWDJSaFp5Z3BYRzVjYmtjMFgyUmhaeVJzWVhsbGNuTmJXek5kWFNSdFlYQndhVzVuSUR3dElGeHVJQ0JoWlhNb1kyOXNiM1Z5SUQwZ1l5aGNJazlpYzJWeWRtVmtYQ0lzSUZ3aVZXNXZZbk5sY25abFpGd2lLVnRoY3k1dWRXMWxjbWxqS0c1aGJXVWdKV2x1SlNCaktGd2lSbHdpTEZ3aVZWd2lLU2tnS3lBeFhTbGNia2MwWDJSaFp5QXJJSE5qWVd4bFgyTnZiRzl5WDIxaGJuVmhiQ2gyWVd4MVpYTWdQU0JqS0Z3aVlteGhZMnRjSWl3Z1hDSmliSFZsWENJcEtTQXJYRzRnSUhSb1pXMWxLR3hsWjJWdVpDNXdiM05wZEdsdmJpNXBibk5wWkdVZ1BTQmpLREF1T0N3Z01DNDRLU2xjYm1CZ1lDSjkgLS0+XG5cbmBgYHJcbkc0IDwtIGRhZ2l0dHkoJ2RhZ3tcblkgW291dGNvbWUscG9zPVxcNFxuIn0= -->
G4 <- dagitty('dag{
Y [outcome,pos=\4
```r
G4 <- dagitty('dag{
Y [outcome,pos=\4
<!-- rnb-plot-begin eyJoZWlnaHQiOjQzMi42MzI5LCJ3aWR0aCI6NzAwLCJzaXplX2JlaGF2aW9yIjowLCJjb25kaXRpb25zIjpbXX0= -->
<img src=\data:image/png;base64
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuXG5hZGp1c3RtZW50U2V0cyhHNCwgXCJEXCIsIFwiWVwiLCBlZmZlY3QgPSBcInRvdGFsXCIpXG5gYGAifQ== -->
```r
adjustmentSets(G4, \D\, \Y\, effect = \total\)
```
<!-- rnb-source-end -->
```r
adjustmentSets(G4, \D\, \Y\, effect = \total\)
<!-- rnb-source-end -->
<!-- rnb-output-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
---
#### **Figure 10.7: mediator $M$ がある場合**
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVSelVnUEMwZ1pHRm5hWFIwZVNnblpHRm5lMXh1V1NCYmIzVjBZMjl0WlN4d2IzTTlYQ0kwTENBd1hDSmRYRzVFSUZ0bGVIQnZjM1Z5WlN4d2IzTTlYQ0l3TENBd1hDSmRYRzVZSUZ0amIyNW1iM1Z1WkdWeUxDQndiM005WENJeUxDMHlYQ0pkWEc1R0lGdDFibTlpYzJWeWRtVmtMQ0J3YjNNOVhDSXdMQ0F0TWx3aVhWeHVWU0JiZFc1dlluTmxjblpsWkN3Z2NHOXpQVndpTWl3Z0xUTmNJbDFjYmswZ1czVnViMkp6WlhKMlpXUXNJSEJ2Y3oxY0lqTXNJQzB1TVZ3aVhWeHVSQ0F0UGlCWlhHNVlJQzArSUVSY2JrWWdMVDRnUkZ4dVZTQXRQaUJHWEc1VklDMCtJRmhjYmxVZ0xUNGdSRnh1UkNBdFBpQk5YRzVOSUMwK0lGbGNibGdnTFQ0Z1RWeHVXQ0F0UGlCWmZTY3BYRzVjYmtjMVgyUmhaeUE4TFNCbloyUmhaeWhITlNrZ0t5QjBhR1Z0WlY5a1lXY29LVnh1WEc1SE5WOWtZV2NrYkdGNVpYSnpXMXN6WFYwa2JXRndjR2x1WnlBOExTQmNiaUFnWVdWektHTnZiRzkxY2lBOUlHTW9YQ0pQWW5ObGNuWmxaRndpTENCY0lsVnViMkp6WlhKMlpXUmNJaWxiWVhNdWJuVnRaWEpwWXlodVlXMWxJQ1ZwYmlVZ1l5aGNJa1pjSWl4Y0lsVmNJaXdnWENKTlhDSXBLU0FySURGZEtWeHVSelZmWkdGbklDc2djMk5oYkdWZlkyOXNiM0pmYldGdWRXRnNLSFpoYkhWbGN5QTlJR01vWENKaWJHRmphMXdpTENCY0ltSnNkV1ZjSWlrcElDdGNiaUFnZEdobGJXVW9iR1ZuWlc1a0xuQnZjMmwwYVc5dUxtbHVjMmxrWlNBOUlHTW9NQzQ0TENBd0xqZ3BLVnh1WUdCZ0luMD0gLS0+XG5cbmBgYHJcbkc1IDwtIGRhZ2l0dHkoJ2RhZ3tcblkgW291dGNvbWUscG9zPVxcNFxuIn0= -->
G5 <- dagitty('dag{
Y [outcome,pos=\4
```r
G5 <- dagitty('dag{
Y [outcome,pos=\4
<!-- rnb-plot-begin eyJoZWlnaHQiOjQzMi42MzI5LCJ3aWR0aCI6NzAwLCJzaXplX2JlaGF2aW9yIjowLCJjb25kaXRpb25zIjpbXX0= -->
<img src=\data:image/png;base64
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuXG5wcmludChhZGp1c3RtZW50U2V0cyhHNSwgXCJEXCIsIFwiWVwiLCBlZmZlY3QgPSBcInRvdGFsXCIpKVxuYGBgIn0= -->
```r
print(adjustmentSets(G5, \D\, \Y\, effect = \total\))
```
<!-- rnb-source-end -->
```r
print(adjustmentSets(G5, \D\, \Y\, effect = \total\))
<!-- rnb-source-end -->
<!-- rnb-output-end -->
<!-- rnb-output-begin eyJkYXRhIjoieyBYIH1cbiJ9 -->
{ X }
<!-- rnb-output-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
- **$F$ が直接 Mediator $M$ に影響を与える場合、識別はできない**
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVSellnUEMwZ1pHRm5hWFIwZVNnblpHRm5lMXh1V1NCYmIzVjBZMjl0WlN4d2IzTTlYQ0kwTENBd1hDSmRYRzVFSUZ0bGVIQnZjM1Z5WlN4d2IzTTlYQ0l3TENBd1hDSmRYRzVZSUZ0amIyNW1iM1Z1WkdWeUxDQndiM005WENJeUxDMHlYQ0pkWEc1R0lGdDFibTlpYzJWeWRtVmtMQ0J3YjNNOVhDSXdMQ0F0TWx3aVhWeHVWU0JiZFc1dlluTmxjblpsWkN3Z2NHOXpQVndpTWl3Z0xUTmNJbDFjYmswZ1czVnViMkp6WlhKMlpXUXNJSEJ2Y3oxY0lqTXNJQzB1TVZ3aVhWeHVSQ0F0UGlCWlhHNVlJQzArSUVSY2JrWWdMVDRnUkZ4dVZTQXRQaUJHWEc1VklDMCtJRmhjYmtRZ0xUNGdUVnh1UmlBdFBpQk5YRzVWSUMwK0lFUmNiazBnTFQ0Z1dWeHVXQ0F0UGlCTlhHNVlJQzArSUZsOUp5bGNibHh1UnpaZlpHRm5JRHd0SUdkblpHRm5LRWMyS1NBcklIUm9aVzFsWDJSaFp5Z3BYRzVjYmtjMlgyUmhaeVJzWVhsbGNuTmJXek5kWFNSdFlYQndhVzVuSUR3dElGeHVJQ0JoWlhNb1kyOXNiM1Z5SUQwZ1l5aGNJazlpYzJWeWRtVmtYQ0lzSUZ3aVZXNXZZbk5sY25abFpGd2lLVnRoY3k1dWRXMWxjbWxqS0c1aGJXVWdKV2x1SlNCaktGd2lSbHdpTEZ3aVZWd2lMQ0JjSWsxY0lpa3BJQ3NnTVYwcFhHNUhObDlrWVdjZ0t5QnpZMkZzWlY5amIyeHZjbDl0WVc1MVlXd29kbUZzZFdWeklEMGdZeWhjSW1Kc1lXTnJYQ0lzSUZ3aVlteDFaVndpS1NrZ0sxeHVJQ0IwYUdWdFpTaHNaV2RsYm1RdWNHOXphWFJwYjI0dWFXNXphV1JsSUQwZ1l5Z3dMamdzSURBdU9Da3BYRzVnWUdBaWZRPT0gLS0+XG5cbmBgYHJcbkc2IDwtIGRhZ2l0dHkoJ2RhZ3tcblkgW291dGNvbWUscG9zPVxcNFxuIn0= -->
G6 <- dagitty('dag{
Y [outcome,pos=\4
```r
G6 <- dagitty('dag{
Y [outcome,pos=\4
<!-- rnb-plot-begin eyJoZWlnaHQiOjQzMi42MzI5LCJ3aWR0aCI6NzAwLCJzaXplX2JlaGF2aW9yIjowLCJjb25kaXRpb25zIjpbXX0= -->
<img src=\data:image/png;base64
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuXG5wcmludChhZGp1c3RtZW50U2V0cyhHNiwgXCJEXCIsIFwiWVwiKSwgZWZmZWN0ID0gXCJ0b3RhbFwiKVxuYGBgIn0= -->
```r
print(adjustmentSets(G6, \D\, \Y\), effect = \total\)
```
<!-- rnb-source-end -->
```r
print(adjustmentSets(G6, \D\, \Y\), effect = \total\)
<!-- rnb-source-end -->
<!-- rnb-output-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
**観測されない交絡因子$U$が直接アウトカム$Y$に影響を与える場合、識別はできない**
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHVSemM4TFNCa1lXZHBkSFI1S0Nka1lXZDdYRzVaSUZ0dmRYUmpiMjFsTEhCdmN6MWNJalFzSURCY0lsMWNia1FnVzJWNGNHOXpkWEpsTEhCdmN6MWNJakFzSURCY0lsMWNibGdnVzJOdmJtWnZkVzVrWlhJc0lIQnZjejFjSWpJc0xUSmNJbDFjYmtZZ1czVnViMkp6WlhKMlpXUXNJSEJ2Y3oxY0lqQXNJQzB5WENKZFhHNVZJRnQxYm05aWMyVnlkbVZrTENCd2IzTTlYQ0l5TENBdE0xd2lYVnh1VFNCYmRXNXZZbk5sY25abFpDd2djRzl6UFZ3aU15d2dMUzR4WENKZFhHNUVJQzArSUZsY2JsZ2dMVDRnUkZ4dVJpQXRQaUJFWEc1VklDMCtJRVpjYmxVZ0xUNGdXRnh1UkNBdFBpQk5YRzVWSUMwK0lFUmNiazBnTFQ0Z1dWeHVXQ0F0UGlCTlhHNVlJQzArSUZsY2JsVWdMVDRnV1gwbktWeHVYRzVITjE5a1lXY2dQQzBnWjJka1lXY29SemNwSUNzZ2RHaGxiV1ZmWkdGbktDbGNibHh1UnpkZlpHRm5KR3hoZVdWeWMxdGJNMTFkSkcxaGNIQnBibWNnUEMwZ1hHNGdJR0ZsY3loamIyeHZkWElnUFNCaktGd2lUMkp6WlhKMlpXUmNJaXdnWENKVmJtOWljMlZ5ZG1Wa1hDSXBXMkZ6TG01MWJXVnlhV01vYm1GdFpTQWxhVzRsSUdNb1hDSkdYQ0lzWENKVlhDSXNJRndpVFZ3aUtTa2dLeUF4WFNsY2JrYzNYMlJoWnlBcklITmpZV3hsWDJOdmJHOXlYMjFoYm5WaGJDaDJZV3gxWlhNZ1BTQmpLRndpWW14aFkydGNJaXdnWENKaWJIVmxYQ0lwS1NBclhHNGdJSFJvWlcxbEtHeGxaMlZ1WkM1d2IzTnBkR2x2Ymk1cGJuTnBaR1VnUFNCaktEQXVPQ3dnTUM0NEtTbGNibUJnWUNKOSAtLT5cblxuYGBgclxuRzc8LSBkYWdpdHR5KCdkYWd7XG5ZIFtvdXRjb21lLHBvcz1cXDRcbiJ9 -->
G7<- dagitty('dag{
Y [outcome,pos=\4
```r
G7<- dagitty('dag{
Y [outcome,pos=\4
<!-- rnb-plot-begin eyJoZWlnaHQiOjQzMi42MzI5LCJ3aWR0aCI6NzAwLCJzaXplX2JlaGF2aW9yIjowLCJjb25kaXRpb25zIjpbXX0= -->
<img src=\data:image/png;base64
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuXG5wcmludChhZGp1c3RtZW50U2V0cyhHNywgXCJEXCIsIFwiWVwiKSwgZWZmZWN0ID0gXCJ0b3RhbFwiKVxuYGBgIn0= -->
```r
print(adjustmentSets(G7, \D\, \Y\), effect = \total\)
```
<!-- rnb-source-end -->
```r
print(adjustmentSets(G7, \D\, \Y\), effect = \total\)
```