{ "cells": [ { "cell_type": "markdown", "id": "a5c186cc-e431-41cb-9033-8ee8264506da", "metadata": {}, "source": [ "# 欠落変数バイアス\n", "\n", "結果変数$Y$、処置変数$D$と、$Y,D$に影響を与える共変量(交絡因子)$X$があるとし、各変数の間には線形の関係があるとする。\n", "\n", "処置の効果を正しく推定するためには共変量をモデルに含める必要があるため、正しいモデルは次の式の形になる(「長いモデル」ということでLとつけている)。\n", "\n", "$$\n", "Y = \\alpha^L + \\beta^L D + \\gamma^L X + \\varepsilon^L\n", "$$\n", "\n", "\n", "\n", "ここで$X$を説明変数に入れない「短いモデル」\n", "\n", "$$\n", "Y = \\alpha^S + \\beta^S D + \\varepsilon^S\n", "$$\n", "\n", "を構築した場合、処置効果$\\beta^S$はどう推定されるのだろうか。" ] }, { "cell_type": "markdown", "id": "f7463dcb-24c4-4827-9f54-a0fcce9c114f", "metadata": {}, "source": [ "XをDに回帰する(Xの変動をDで説明する)モデルを立ててみる。\n", "\n", "$$\n", "X = \\alpha + \\beta D + \\varepsilon\n", "$$\n", "\n", "これを「長いモデル」に代入して整理すると、「短いモデル」との対応が見えてくる\n", "\n", "$$\n", "\\begin{align}\n", "Y &= \\alpha^L + \\beta^L D + \\gamma^L (\\alpha + \\beta D + \\varepsilon) + \\varepsilon^L \\\\\n", "&= \\alpha^L + \\gamma^L \\alpha + (\\beta^L + \\gamma^L \\beta) D + \\gamma^L \\varepsilon + \\varepsilon^L \\\\\n", "&= \\underbrace{\\alpha^L + \\gamma^L \\alpha}_{\\alpha^S}\n", " + \\underbrace{(\\beta^L + \\gamma^L \\beta)}_{\\beta^S} D\n", " + \\underbrace{\\gamma^L \\varepsilon + \\varepsilon^L}_{\\varepsilon^S} \\\\\n", "\\end{align}\n", "$$\n", "\n", "\n", "「短いモデル」の$\\beta^S$は\n", "\n", "$$\n", "\\beta^S = \\beta^L + \\gamma^L \\beta\n", "$$\n", "\n", "であるため、正しいモデルの推定量$\\beta^L$から$\\gamma^L \\beta$の分だけズレることがわかる。" ] }, { "cell_type": "markdown", "id": "4389bb9a-c9da-46e8-b116-fdfc58abc155", "metadata": {}, "source": [ "## 生成データで実験\n", "\n", "実際に回帰分析を行ってみる。乱数で生成する。" ] }, { "cell_type": "code", "execution_count": 1, "id": "f079993c-f12e-417f-a8dc-5d0de20fbc9a", "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "真の係数:α_L=3, β_L=5, γ_L=7\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
YDX
012.96833010.548814
111.92639410.715189
211.07187510.602763
311.37636210.544883
45.46755100.423655
\n", "
" ], "text/plain": [ " Y D X\n", "0 12.968330 1 0.548814\n", "1 11.926394 1 0.715189\n", "2 11.071875 1 0.602763\n", "3 11.376362 1 0.544883\n", "4 5.467551 0 0.423655" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import statsmodels.api as sm\n", "import statsmodels.formula.api as smf\n", "\n", "\n", "# generate data\n", "np.random.seed(0)\n", "\n", "n = 100\n", "X = np.random.uniform(low=0, high=1, size=n)\n", "\n", "# XがDと独立していれば共変量でないので欠落変数バイアスは生まれない\n", "# D = np.random.binomial(n=1, p=0.7, size=n)\n", "\n", "# XはDとYに影響を与える共変量であるため、xと処置確率が相関するとする\n", "D = np.array([np.random.binomial(n=1, p=x * 0.8) for x in X])\n", "\n", "epsilon_L = np.random.normal(size=n)\n", "alpha_L = 3\n", "beta_L = 5\n", "gamma_L = 7\n", "\n", "print(f\"真の係数:α_L={alpha_L}, β_L={beta_L}, γ_L={gamma_L}\")\n", "Y = alpha_L + beta_L * D + gamma_L * X + epsilon_L\n", "\n", "# data\n", "df = pd.DataFrame(dict(Y=Y, D=D, X=X))\n", "display(df.head())\n", "\n", "\n", "# plot\n", "fig, ax = plt.subplots(dpi=70)\n", "for d in np.unique(D):\n", " ax.scatter(X[D == d], Y[D == d], label=f\"D == {d}\")\n", "ax.legend()\n", "ax.set(xlabel=\"X\", ylabel=\"Y\")\n", "fig.show()" ] }, { "cell_type": "markdown", "id": "9373ff22-5d90-42a0-afbc-9263d6237caa", "metadata": {}, "source": [ "このデータからそれぞれのモデルを推定すると次のようになる。" ] }, { "cell_type": "code", "execution_count": 2, "id": "b27138c0-012f-4c3b-ac01-ad8a54009a1d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "「長いモデル」の推定値:α_L=3.16, β_L=5.04, γ_L=6.43\n", "「短いモデル」の推定値:α_S=5.32, β_S=7.14\n", "XをDに回帰したモデルの推定値:α=0.34, β=0.327\n" ] } ], "source": [ "# long model\n", "results = smf.ols('Y ~ D + X', data=df).fit()\n", "alpha_L_, beta_L_, gamma_L_ = results.params\n", "print(f\"「長いモデル」の推定値:α_L={alpha_L_:.2f}, β_L={beta_L_:.2f}, γ_L={gamma_L_:.2f}\")\n", "\n", "# short model\n", "results = smf.ols('Y ~ D', data=df).fit()\n", "alpha_S_, beta_S_ = results.params\n", "print(f\"「短いモデル」の推定値:α_S={alpha_S_:.2f}, β_S={beta_S_:.2f}\")\n", "\n", "# X ~ D\n", "results = smf.ols('X ~ D', data=df).fit()\n", "alpha_, beta_ = results.params\n", "print(f\"XをDに回帰したモデルの推定値:α={alpha_:.2f}, β={beta_:.3f}\")" ] }, { "cell_type": "markdown", "id": "3e33b3db-a9f2-4985-ae46-5079a884df0b", "metadata": {}, "source": [ "3つのモデルの関係性は\n", "\n", "$$\n", "Y = \\underbrace{\\alpha^L + \\gamma^L \\alpha}_{\\alpha^S}\n", " + \\underbrace{(\\beta^L + \\gamma^L \\beta)}_{\\beta^S} D\n", " + \\underbrace{\\gamma^L \\varepsilon + \\varepsilon^L}_{\\varepsilon^S}\n", "$$\n", "\n", "だったので、推定値で同様に計算すると" ] }, { "cell_type": "code", "execution_count": 3, "id": "f37370b7-bb3a-4f11-89f0-e9abf057b4a2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "α_Sの推定値 = 5.32\n", "β_Sの推定値 = 7.14\n", "β_Lとの差(欠落変数バイアス) = 2.10\n", "\n" ] } ], "source": [ "estimated_alpha_S = (alpha_L_ + gamma_L_ * alpha_)\n", "estimated_beta_S = (beta_L_ + gamma_L_ * beta_)\n", "bias_beta_S = gamma_L_ * beta_\n", "\n", "print(f\"\"\"\n", "α_Sの推定値 = {estimated_alpha_S:.2f}\n", "β_Sの推定値 = {estimated_beta_S:.2f}\n", "β_Lとの差(欠落変数バイアス) = {bias_beta_S:.2f}\n", "\"\"\")" ] }, { "cell_type": "markdown", "id": "9fd34e37-c0fd-4659-88ab-97c3ab9280b9", "metadata": {}, "source": [ "となり、「短いモデル」の推定値と同じものが得られた。また、「長いモデル」と比べたときの差(バイアス)も得られた" ] }, { "cell_type": "markdown", "id": "4da1ca05-7803-4218-a1a3-941f183d6c6b", "metadata": {}, "source": [ "## 誤差項との関係\n", "\n", "$$\n", "\\varepsilon^S = \\gamma^L \\varepsilon + \\varepsilon^L\n", "$$\n", "\n", "「短いモデル」の誤差項は説明変数と相関がある" ] }, { "cell_type": "code", "execution_count": 4, "id": "2161776c-4aac-4f67-bf92-110aeec23a57", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "residuals_L = Y - smf.ols('Y ~ D + X', data=df).fit().predict(df)\n", "\n", "fig, ax = plt.subplots(figsize=[8, 3], ncols=2, dpi=72)\n", "ax[0].scatter(X, residuals_L)\n", "ax[0].set(xlabel=\"X\", ylabel=\"residual\")\n", "\n", "ax[1].scatter(D, residuals_L, alpha=.5)\n", "ax[1].set(xlabel=\"D\", ylabel=\"residual\")\n", "\n", "fig.suptitle(\"Residuals of the long model\")\n", "fig.show()" ] }, { "cell_type": "code", "execution_count": 5, "id": "6152ddff-b776-40fa-ad9a-7296627cb275", "metadata": {}, "outputs": [ { "data": { "image/png": "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GX4FgCFDhuCll17CsmXLkJubizvvvDM4vN3ZmTNn4PP5UFhYGDxWWFgIh8MhOqZQOl+UpKamwu12w+/34+TJk6itre3yM3z22WdRX18f8jzvvvsutm7disLCQkydOhW7d+8Ofi8rKwsGg6HL67S2top6T1J+5p3l5eUF/22xWC75umPCY21tbZfX7xxDbW0t+vbti7S0tC7f6xDp74yQRKAETjRv6tSpuPfee/H4448DCHzoL1iwAE1NTcH/2trasHTpUgDAzJkzsX37dtTV1WH48OF44IEHLjlnfn4+qqurg18zxrp8nZaWhvb29uDXnWd+ezwe3HrrrXj88cdRX1+PpqYmzJ49u8s99M7uuusu7Nq1CydPngTHcfj1r399yWOys7NhNBpx8uTJ4LFTp07BbreL+hlxHCfqcR0GDBiAoqKiLj/DlpaWsL3L0tJSlJeXo6GhAXPnzsUdd9zR42uIeU/d45b6PnrSv3//Lq/fOYb8/HycP38ebW1tXb7Xoae/M0LijRI4SQqPPPIItm/fjm+++QZ33303Nm3ahG3btoHnebjdbuzcuRM1NTWor69HeXk52traYDKZYLVaodNd2gzmzJmDAwcO4L333oPf78fLL7/cJUmPHTsWn332GU6dOgWn09llBrzX64XH40FOTg4MBgM++OCDsMvTjhw5gh07dsDj8cBsNsNisYSMR6/X44477sD/+3//Dy0tLTh58iRWr14tek1yXl4ezp49C6fTKerxP/nJT5Ceno7nn38eLpcLPM+jqqoKX3311SWP9Xq9WLduHZxOJ4xGI/r06RPyPcjxnvLy8lBTUwOv1yvqffRk9uzZOHr0KN566y34/X6sX78eBw8exI033ojCwkKMHz8eTz31FLxeL3bt2oVNmzYFnxvp74yQRKAETpJCTk4OFi5ciN/97ncYMGAAysvL8eyzzyInJwcDBgzAypUrIQgCBEHA6tWr0b9/f2RmZuLTTz/FK6+8csn5srOzsWHDBixduhRZWVn4/vvvMXny5OD3Z8yYgXnz5mH06NG48sorceONNwa/l56ejpdffhl33HEH+vbti7feegs333xzyLg9Hg+WLl0aLMDS0NAQdjncH//4R6SlpaG4uBhXX3017rrrLtx3332ifj7Dhw/Hz372MxQXF8Nms4Ucpu9Mr9dj8+bN2L9/P4qKipCdnY37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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "residuals_S = Y - smf.ols('Y ~ D', data=df).fit().predict(df)\n", "\n", "fig, ax = plt.subplots(figsize=[8, 3], ncols=2, dpi=72)\n", "ax[0].scatter(X, residuals_S)\n", "ax[0].set(xlabel=\"X\", ylabel=\"residual\")\n", "\n", "ax[1].scatter(D, residuals_S, alpha=.5)\n", "ax[1].set(xlabel=\"D\", ylabel=\"residual\")\n", "\n", "fig.suptitle(\"Residuals of the short model\")\n", "fig.show()" ] }, { "cell_type": "markdown", "id": "1e05cb93-7f8f-4db0-b7c8-4730e0cb496c", "metadata": {}, "source": [ "## 外生性\n", "\n", "このことについては外生性・内生性といった言い方もされる。\n", "\n", "\n", "次の単回帰モデルを考える。\n", "\n", "$$\n", "Y_i = \\alpha + \\beta X_i + \\varepsilon_i, \\quad i=1,2,\\dots,n\n", "$$\n", "\n", "説明変数$X_i$と誤差項$\\varepsilon_i$が相関しないとき、説明変数$X_i$が**外生性**(exogeneity)をもつと言われる。またこのような変数は**外生変数**(exogenous variable)と呼ばれる。\n", "\n", ":::{info} 外生性\n", "\n", "$$\n", "E[X_i \\varepsilon_i] = Cov(X_i, \\varepsilon_i) = 0\n", "$$\n", ":::\n", "\n", "そうでないとき、説明変数$X_i$は**内生性**(endogeneity)をもつという。\n", "\n", ":::{info} 内生性\n", "\n", "$$\n", "E[X_i \\varepsilon_i] = Cov(X_i, \\varepsilon_i) \\neq 0\n", "$$\n", ":::\n", "\n", "モデルの式の両辺の期待値をとって$\\alpha$について解くと$\\alpha = E[Y_i] - \\beta E[X_i]$であり、これを代入すると\n", "\n", "$$\n", "Y_i - E[Y_i] = \\beta (X_i - E[X_i]) + \\varepsilon_i\n", "$$\n", "\n", "と書き換えることができる。両辺に$X$を乗じて期待値をとると\n", "\n", "$$\n", "\\underbrace{ E[X_i(Y_i - E[Y_i])] }_{ = E[X_i Y_i] - E[X_i] E[Y_i] \\\\ = Cov(X_i, Y_i) }\n", " = \\beta \\underbrace{ E[X_i (X_i - E[X_i])] }_{ = E[X_i^2] - E[X_i]^2 \\\\ = Var(X_i) }\n", " + \\underbrace{ E[X_i \\varepsilon_i] }_{ = Cov(X_i, \\varepsilon_i) \\\\ = 0}\n", "$$\n", "\n", "移項するとOLS推定量が得られる\n", "\n", "$$\n", "\\beta = \\frac{ Cov(X_i, Y_i) }{ Var(X_i) }\n", "$$\n", "\n", "もし$E[X_i \\varepsilon_i] = Cov(X_i, \\varepsilon_i) \\neq 0$であれば、\n", "\n", "$$\n", "\\frac{ Cov(X_i, Y_i) }{ Var(X_i) } = \\beta + \\frac{ Cov(X_i, \\varepsilon_i) }{ Var(X_i) }\n", "$$\n", "\n", "となり、$Cov(X_i, \\varepsilon_i) \\ / \\ Var(X_i)$の分だけバイアスのある推定量になる" ] }, { "cell_type": "markdown", "id": "7a8cb95b-c48f-4b03-ae9f-df993e69ce94", "metadata": {}, "source": [ "## 参考文献\n", "\n", "- [25. 重回帰分析(脱落変数バイアス・処置後変数バイアス)](http://www.ner.takushoku-u.ac.jp/masano/class_material/waseda/keiryo/R25_reg8_OBV.html)\n", "- 安井翔太. (2020). 効果検証入門: 正しい比較のための因果推論 計量経済学の基礎. Gijutsu hyōronsha.\n", "- 星野匡郎, 田中久稔, & 北川梨津. (2023). R による実証分析: 回帰分析から因果分析へ. 株式会社 オーム社.\n" ] }, { "cell_type": "markdown", "id": "d63afae0-9021-40b8-ae02-cc996a618e1c", "metadata": {}, "source": [ "### 関連論文(積読リスト)\n", "- [[2302.06518] SelectionBias: An R Package for Bounding Selection Bias](https://arxiv.org/abs/2302.06518)\n", " - RでSV boundsというバイアスの幅を推定するパッケージ\n", "- [[2208.00552] The Effect of Omitted Variables on the Sign of Regression Coefficients](https://arxiv.org/abs/2208.00552)" ] }, { "cell_type": "code", "execution_count": null, "id": "d769f57e-e4b9-4bad-a944-8e140bf451b3", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.13" } }, "nbformat": 4, "nbformat_minor": 5 }