Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

欠落変数バイアス

線形回帰モデルに含めるべき説明変数を含めず、外生性の仮定が満たされない場合に生じるバイアスのことを 欠落変数バイアス(omitted variable bias) という。

背景

外生性

単回帰モデルY=α+βX+uY = \alpha + \beta X + uを例にとる。

証明
E(Xu)=EX[E(XuX)]=EX[XE(uX)=0]=EX(X0)=0E(u)=EX[E(uX)=0]=0E(X u) = E_{X}[ E(X u | X) ] = E_{X}[ X \underbrace{ E(u|X) }_{ =0 } ] = E_{X}(X\cdot 0) = 0 \\ E(u) = E_{X}[ \underbrace{ E(u|X) }_{ =0 } ] = 0
Cov(X,u)=E(Xu)=0E(X)E(u)=0=0\operatorname{Cov}(X, u) = \underbrace{ E(X u) }_{ =0 } - E(X) \underbrace{ E(u) }_{ =0 } = 0

OLS推定量の一致性

単回帰モデル Y=α+βX+uY=\alpha+\beta X+u は両辺をXXと共分散をとると

Cov(X,Y)=Cov(X,α+βX+u)=Cov(X,α)定数との共分散0+βCov(X,X)=Var(X)+Cov(X,u)=βVar(X)+Cov(X,u)\begin{aligned} \operatorname{Cov}(X, Y) &= \operatorname{Cov}(X, \alpha + \beta X + u)\\ &= \underbrace{ \operatorname{Cov}(X, \alpha) }_{定数との共分散 → 0} + \beta \underbrace{ \operatorname{Cov}(X, X) }_{=\operatorname{Var}(X) } +\operatorname{Cov}(X, u) \\ &= \beta \operatorname{Var}(X) + \operatorname{Cov}(X, u)\\ \end{aligned}

傾き係数のOLS推定量に代入すると

β^=Cov(X,Y)Var(X)=βVar(X)+Cov(X,u)Var(X)=β+Cov(X,u)Var(X)\begin{aligned} \hat{\beta} &= \frac{\operatorname{Cov}(X, Y)}{\operatorname{Var}(X)}\\ &= \frac{ \beta \operatorname{Var}(X) + \operatorname{Cov}(X, u) }{\operatorname{Var}(X)}\\ &= \beta + \frac{\operatorname{Cov}(X, u)}{\operatorname{Var}(X)} \end{aligned}

という形に整理できる。

XXが外生変数のとき、Cov(X,u)=0\operatorname{Cov}(X, u) = 0より

β^=β+Cov(X,u)=0Var(X)=β\hat{\beta} = \beta + \frac{ \overbrace{\operatorname{Cov}(X, u)}^{=0} }{\operatorname{Var}(X)} = \beta

となり、OLS推定量β^\hat{\beta}と真のパラメータβ\betaは一致する。

欠落変数バイアス

単回帰モデル

Y=α+βX+uY=\alpha+\beta X+u

を構築することを考える。

説明変数はXXのみであるため、それ以外のYYの変動はuuに含まれることになる。

もし、真のデータ生成過程において、変数ZZがあり真の誤差がvv

Y=α+βX+θZ+vY = \alpha + \beta X + \theta Z + v

のようになっていたとすると、単回帰モデルの誤差項uuにはθZ\theta Zが含まれていることになる。

Y=α+βX+uθZ+vY = \alpha + \beta X + \underbrace{ u }_{\theta Z + v}

もしZZYYに影響を与えているだけでなく、XXにも影響を与えている(=ZZは交絡因子)であるとすると、XXは外生性を満たさない

Cov(X,u)0\operatorname{Cov}(X, u) \neq 0

ということになる。そうなるとOLS推定量

β^=β+Cov(X,u)Var(X)\hat{\beta} = \beta + \frac{\operatorname{Cov}(X, u)}{\operatorname{Var}(X)}

Cov(X,u)Var(X)\frac{\operatorname{Cov}(X, u)}{\operatorname{Var}(X)}

の項が消えないため、その分だけ真のパラメータβ\betaからずれることになる

数値例

人工データを生成し、欠落変数バイアスが Cov(X,u)Var(X)\frac{\operatorname{Cov}(X, u)}{\operatorname{Var}(X)} であることを確認する

Source
import numpy as np
import pandas as pd
import statsmodels.formula.api as smf
import matplotlib.pyplot as plt

# Data Generation
def simulate(n=20000, alpha=1.0, beta=2.0, theta=3.0, delta=0.8, seed=42):
    rng = np.random.default_rng(seed)
    Z = rng.normal(size=n)          # confounder
    eps = rng.normal(size=n)        # shock to X
    v = rng.normal(size=n)          # shock to Y
    X = delta * Z + eps             # X depends on Z if delta≠0
    Y = alpha + beta * X + theta * Z + v
    u = theta * Z + v              # omitted-term when regressing Y on X only
    return pd.DataFrame({"Y": Y, "X": X, "Z": Z, "u": u})

beta_true = 2.0
df = simulate(delta=0.8, theta=3.0, beta=beta_true, n=1000, seed=123)

omit_model = smf.ols(formula='Y ~ X', data=df).fit()
full_model = smf.ols(formula='Y ~ X + Z', data=df).fit()
beta_hat_omit = omit_model.params["X"]
beta_hat_full = full_model.params["X"]

# Empirical bias
cov_Xu = np.cov(df["X"], df["u"], bias=True)[0,1]
var_X  = np.var(df["X"])
bias_empirical = cov_Xu / var_X

pd.DataFrame({
    "quantity": [
        "β (true)",
        "β_hat_omit (Y~X)",
        "β_hat_full (Y~X+Z)",
        "Bias (β_hat_omit − β)",
        "Cov(X,u) / Var(X)"
    ],
    "value": [
        beta_true,
        beta_hat_omit,
        beta_hat_full,
        beta_hat_omit - beta_true,
        bias_empirical
    ]
}).round(3)
Loading...

参考文献

関連論文(積読リスト)