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.

操作変数法

概要

観察データから結果変数YYへの処置XXの効果を測りたい場合、共変量UUをコントロールしない限り、推定量に欠落変数バイアスを生じさせる。

Loading...

他の変数から独立して処置XXを通じてのみYYに影響を与えるZZのような変数があれば、これを利用することでXYX\to Yの因果効果を識別することが可能になる。この場合のZZのような変数を操作変数(instrmental variable: IV)と呼ぶ。

Loading...

操作変数法の推定方法

2つの方法がある

  1. ZYZ \to Yの因果効果とZXZ\to Xの因果効果を割って推定する

  2. 二段階最小二乗法

どちらのアプローチでも同じ推定結果を得ることができる。

データの生成

Loading...
Source
import numpy as np
import pandas as pd

gamma = 2
beta = 4

n = 500
np.random.seed(0)
u = np.random.uniform(low=0, high=1, size=n)
z = np.random.uniform(low=-1, high=1, size=n)
x = 10 + gamma * z + 5 * u + np.random.normal(size=n)
y = 5 + beta * x + 5 * u + np.random.normal(scale=2, size=n)

df = pd.DataFrame(dict(y=y, x=x, z=z, u=u))
df.round(1).head()
Loading...
Source
import matplotlib.pyplot as plt
import seaborn as sns
sns.pairplot(df)
plt.show()
<Figure size 1000x1000 with 20 Axes>

そのまま推定した場合

次のような単回帰モデルを考える

Y=β0+β1X+εY = \beta_0 + \beta_1 X + \varepsilon

説明変数はXXのみで、E[ε]=0E[\varepsilon]= 0とする。

回帰係数β0,β1\beta_0, \beta_1を正しく推定するためには、説明変数の外生性が重要な条件となる。

説明変数が外生変数であるときE[Xε]=Cov(X,ε)=0E[X \varepsilon]=Cov(X, \varepsilon)=0が成立するので、

β1=Cov(X,Y)Var(X)(1)\beta_1 = \frac{Cov(X, Y)}{Var(X)} \tag{1}

となる。

説明変数が内生変数である場合、

E[Xε]=Cov(X,ε)0E[X \varepsilon] = Cov(X, \varepsilon) \neq 0

から

Cov(X,Y)=Var(X)β1+Cov(X,ε)Cov(X, Y) = Var(X) \beta_1 + Cov(X, \varepsilon)

から、(1)(1)式の右辺は

β1+Cov(X,ε)Var(X)内生変数バイアスβ1\beta_1 + \underbrace{ \frac{Cov(X, \varepsilon)}{Var(X)} }_{内生変数バイアス} \neq \beta_1

となる

Source
import statsmodels.api as sm
import statsmodels.formula.api as smf
from stargazer.stargazer import Stargazer

models = [
    smf.ols('y ~ x', data=df).fit(),
    smf.ols('y ~ x + z', data=df).fit(),
    smf.ols('y ~ x + u', data=df).fit(),
]
Stargazer(models)
Loading...

方法1:ZYZ \to Yの因果効果とZXZ\to Xの因果効果を割って推定する

ZYの因果効果=ZYの因果効果ZXの因果効果Z \to Y \text{の因果効果} = \frac{ Z \to Y \text{の因果効果} }{ Z \to X \text{の因果効果} }

であるため、ZYZ \to Yの因果効果とZXZ\to Xの因果効果を割って推定する。

XYX\to Yの因果効果をβ\betaZXZ\to Xの因果効果をγ\gammaとおくと、ZYZ\to Yの因果効果はその積β×γ\beta \times \gammaになる。

そのため

β=β×γγ\beta = \frac{\beta \times \gamma}{\gamma}

で推定するということ。

Loading...

ZXZ\to Xの検証を第一段階(first stage)の検証、ZYZ\to Yの検証を誘導型(reduced form)の検証という。

  • 第一段階:X=γ0+γ1Z+eX = \gamma_0 + \gamma_1 Z + e

  • 誘導型:Y=π0+π1Z+vY = \pi_0 + \pi_1 Z + v

from patsy import dmatrices

y, X = dmatrices("x ~ z", data=df, return_type="dataframe")
model1 = sm.OLS(y, X).fit()
model1.params
Intercept 12.537640 z 1.981999 dtype: float64
y, X = dmatrices("y ~ z", data=df, return_type="dataframe")
model2 = sm.OLS(y, X).fit()
model2.params
Intercept 57.638072 z 7.716850 dtype: float64
model2.params / model1.params
Intercept 4.597203 z 3.893468 dtype: float64

方法2:二段階最小二乗法

XXの変動のうちZZの変動に起因する変動分X^\hat{X}を推定し、その後X^Y\hat{X}\to Yの因果効果を推定する(それによりUUに起因するXXの変動を除く)

第一段階

XXZZに回帰する(eeは誤差項)

X=γ0+γ1Z+eX = \gamma_0 + \gamma_1 Z + e

XXの予測値X^\hat{X}を得る

X^=γ^0+γ^1Z\hat{X} = \hat{\gamma}_0 + \hat{\gamma}_1 Z

第二段階

XXX^\hat{X}に置き換えて回帰分析を行う

Y=β0+β1X^+εY = \beta_0 + \beta_1 \hat{X} + \varepsilon

この推定量は二段階最小二乗(two-stage least squares: TSLS)推定量と呼ばれる。

単回帰かつ操作変数が1つの場合のTSLS推定量は

β^1TSLS=ZYの標本共分散ZXの標本共分散\hat{\beta}^{TSLS}_1 = \frac{ ZとYの標本共分散 }{ ZとXの標本共分散 }

となる。

OLSを用いてTSLSを行う

IV系のパッケージを使わずに推定する方法。TSLS推定値は得られるが標準誤差の推定はできない。

y, X = dmatrices("x ~ z", data=df, return_type="dataframe")
model1 = sm.OLS(y, X).fit()
model1.params
Intercept 12.537640 z 1.981999 dtype: float64
x_hat = model1.predict(X)
y, X = dmatrices("y ~ x_hat", data=df.assign(x_hat=x_hat), return_type="dataframe")
model2 = sm.OLS(y, X).fit()
Stargazer([model2])
Loading...

TSLS

専用のメソッドを用いる方法。標準誤差も適切に推定できるはずだが、statsmodelsのIV2SLSはバグってる様子

from statsmodels.sandbox.regression.gmm import IV2SLS

y, X = dmatrices("y ~ x", data=df, return_type="dataframe")
result = IV2SLS(y, X, instrument=df["z"]).fit()
result.summary()
/usr/local/lib/python3.9/site-packages/statsmodels/regression/linear_model.py:1883: RuntimeWarning: invalid value encountered in sqrt
  return np.sqrt(np.diag(self.cov_params()))
Loading...
from linearmodels.iv import IV2SLS
model = IV2SLS.from_formula("y ~ [x ~ z]", df).fit()
model
Loading...

学習効果

Stinebrickner, T. R., & Stinebrickner, R. (2007). The causal effect of studying on academic performance (Working Paper No. 13341). National Bureau of Economic Research. Retrieved April, 23, 2015.

方法

  • YY:最初のセメスターのGPA

  • XX:1日あたりの平均勉強時間

  • ZZ:ルームメイトがビデオゲームを買ったらZ=1Z=1、買わなかったらZ=0Z=0

    • ルームメイトはランダムに割り当てられる

  • n=210n=210

    • 対象は Berea College の大学1年生(2001年)

結果

  • IV(TSLS)推定量:0.360

  • 勉強時間が1時間減ったことによるGPAの減少幅は0.36ポイント

操作変数法の推定量の特性

操作変数の妥当性の条件

次の2つの条件を満たす操作変数ZZが必要

  1. 操作変数の関連性corr(Z,X)0corr(Z, X) \neq 0

  2. 操作変数の外生性corr(Z,ε)=0corr(Z, \varepsilon) = 0

TSLS推定量の一致性

関連性と外生性が満たされるとき、TSLS推定量は一致性をもつ。

(証明)

単回帰モデルにおけるTSLS推定量

β^1TSLS=ZYの標本共分散ZXの標本共分散=sZ,YsZ,X\hat{\beta}_1^{TSLS} = \frac{ ZとYの標本共分散 }{ ZとXの標本共分散 }\\ = \frac{ s_{Z, Y} }{ s_{Z, X} }\\

を例にとる。

推定モデルY=β0+β1X+εY = \beta_0 + \beta_1 X + \varepsilonより、

Cov(Z,Y)=Cov(Z,β0+β1X+ε)=Cov(Z,β0)+Cov(Z,β1X)+Cov(Z,ε)=0+Cov(Z,β1X)+0=β1Cov(Z,X)\begin{align} Cov(Z, Y) &= Cov(Z, \beta_0 + \beta_1 X + \varepsilon)\\ &= Cov(Z, \beta_0) + Cov(Z, \beta_1 X) + Cov(Z, \varepsilon)\\ &= 0 + Cov(Z, \beta_1 X) + 0\\ &= \beta_1 Cov(Z, X) \end{align}

したがって

β1=Cov(Z,Y)Cov(Z,X)\beta_1 = \frac{ Cov(Z, Y) }{ Cov(Z, X) }

標本による推定量β^1TSLS\hat{\beta}_1^{TSLS}は母集団の共分散Cov(Z,Y),Cov(Z,X)Cov(Z, Y), Cov(Z, X)を標本の共分散sZ,Y,sZ,Xs_{Z, Y}, s_{Z, X}に置き換えたものであり、標本サイズが大きくなればβ1\beta_1に近づく

β^1TSLS=sZ,YsZ,XCov(Z,Y)Cov(Z,X)\hat{\beta}_1^{TSLS} = \frac{ s_{Z, Y} }{ s_{Z, X} } \to \frac{ Cov(Z, Y) }{ Cov(Z, X) }

TSLS推定量の標準誤差

二段階最小二乗法を行う場合、二段階目のOLS推定量の標準誤差は正しくない(第一段階で推定した予測値を用いていることの考慮がされていないため)

実際に使うときは手作業で二段階最小二乗法を行うのではなく、統計分析ソフトに任せるほうがよい(更にいうと不均一分散に対して頑健な標準誤差を使うのがよい)

漸近的に(大規模標本では)、TSLSを推定量の標本分布は正規分布N(β1,σβ^1TSLS2)N(\beta_1, \sigma^2_{\hat{\beta}_1^{TSLS}})に従う。

σβ^1TSLS2=1nVar[(ZE[Z])μ]Cov(Z,X)2\sigma^2_{\hat{\beta}_1^{TSLS}} = \frac{1}{n} \frac{ Var[(Z-E[Z])\mu] }{ Cov(Z, X)^2 }

(S&W、App. 12.3)

ワルド推定量

単回帰モデルY=β0+β1X+εY=\beta_0 + \beta_1 X + \varepsilonを想定する。

Xは内生変数E(εX)0E(\varepsilon|X)\neq 0とする。

次の条件を満たす操作変数ZZがあるとする。

  • ダミー変数である:Z{0,1}Z \in \{0, 1\}

  • 外生性を満たす:E(εZ)=0E(\varepsilon|Z)=0

  • 関連性を満たす:E(XZ)0E(X|Z) \neq 0

β1\beta_1は次の2つのモデルを用いて推定することができる

  • 第一段階:X=π0+π1Z+vX = \pi_0 + \pi_1 Z + v

  • 誘導形:Y=γ0+γ1Z+wY = \gamma_0 + \gamma_1 Z + w

β1=E(YZ=1)E(YZ=0)E(YX=1)E(YX=0)=γ1π1\beta_1 = \frac{ E(Y|Z=1) - E(Y|Z=0) }{ E(Y|X=1) - E(Y|X=0) } = \frac{\gamma_1}{\pi_1}

上記の方法による推定量をワルド推定量(Wald estimator)と呼ぶ。

LATE

操作変数は母集団全体ではなく特定のサブグループの処置割り当てに影響を与える事が多い

→ IV推定量は「母集団全体の平均処置効果」ではなく、「操作変数の変動の影響を受けるサブグループの処置効果」を捉えている

このような推定量の解釈として、局所的平均処置効果(local average treatment effect: LATE)という概念がある

誰が操作変数の影響を受けるか?

操作変数も処置変数も二値変数のケースでは、処置変数DDの操作変数ZZについての潜在的結果D(Z)D(Z)の組み合わせは4パターンになる

  • Always-Taker: ZZがなんであれ必ずD=1D=1

  • Never-Taker: ZZがなんであれ必ずD=0D=0

  • Complier: Z=1Z=1ならばD=1D=1を選択し、Z=0Z=0ならばT=0T=0を選択

  • Defier: Z=0Z=0ならばD=1D=1を選択し、Z=1Z=1ならば=0=0を選択

LATE

  1. 独立性(independence):{Y(0),Y(1),D(0),D(1)} ⁣ ⁣ ⁣Z\newcommand{\indep}{\mathop{\hspace{0.1em} \perp\!\!\!\perp \hspace{0.1em}}} \{Y(0), Y(1), D(0), D(1)\} \indep Z

  2. 除外制約(exclusion restriction):ZZからYYへの影響はDDを通じてのみ存在

  3. 関連性(relevance):ZZDDに影響を与えうる:E[D(1)D(0)]0E[D(1)-D(0)]\neq 0

  4. 単調性(monotonicity):D(1)D(0)0 for all i, or vice versa D(1)-D(0) \geq 0 \text{ for all } i, \text{ or vice versa }(no defier)

  5. 上記の4つの仮定が成り立つとき、

    β1,Wald=E(YZ=1)E(YZ=0)E(DZ=1)E(DZ=0)=E[Y(1)Y(0)complier]=β1,LATE\begin{align} \beta_{1, Wald} &= \frac{ E(Y|Z=1) - E(Y|Z=0) }{ E(D|Z=1) - E(D|Z=0) }\\ &= E[Y(1) - Y(0)|complier]\\ &= \beta_{1, LATE} \end{align}

    となる

    証明

    Defierが居ないと仮定すると

    E[YiZi=1]=E[YiZi=1,i が Always-Taker ]P(i が Always-Taker Zi=1)+E[YiZi=1,i が Never-Taker ]P(i が Never-Taker Zi=1)+E[YiZi=1,i が Complier ]P(i が Complier Zi=1)=E[Yi(1)i が Always-Taker ]pAT+E[Yi(0)i が Never-Taker ]pNT+E[Yi(1)i が Complier ]pC\begin{align} E[Y_i \mid Z_i=1 ]&\\ = & E\left[Y_i \mid Z_i=1, i \text { が Always-Taker }\right] \cdot \mathrm{P}\left(i \text { が Always-Taker } \mid Z_i=1\right) \\ &+ E\left[Y_i \mid Z_i=1, i \text { が Never-Taker }\right] \cdot \mathrm{P}\left(i \text { が Never-Taker } \mid Z_i=1\right) \\ &+ E\left[Y_i \mid Z_i=1, i \text { が Complier }\right] \cdot \mathrm{P}\left(i \text { が Complier } \mid Z_i=1\right) \\ = & E\left[Y_{i}(1) \mid i \text { が Always-Taker }\right] \cdot p_{A T} \\ &+E\left[Y_{i}(0) \mid i \text { が Never-Taker }\right] \cdot p_{N T} \\ &+E\left[Y_{i}(1) \mid i \text { が Complier }\right] \cdot p_C \end{align}

    同様に

    E[YiZi=0]=E[Yi(1)i が Always-Taker ]pAT+E[Yi(0)i が Never-Taker ]pNT+E[Yi(0)i が Complier ]pC\begin{align} E[Y_i \mid Z_i=0 ] = & E\left[Y_{i}(1) \mid i \text { が Always-Taker }\right] \cdot p_{A T} \\ &+E\left[Y_{i}(0) \mid i \text { が Never-Taker }\right] \cdot p_{N T} \\ &+E\left[Y_{i}(0) \mid i \text { が Complier }\right] \cdot p_C \end{align}

    なので、

    E[YiZi=1]E[YiZi=0]={E[Yi(1)i が Complier ]E[Yi(0)i が Complier ]}pC\begin{aligned} & \mathrm{E}\left[Y_i \mid Z_i=1\right]-\mathrm{E}\left[Y_i \mid Z_i=0\right] \\ & \quad=\left\{\mathrm{E}\left[Y_{i}(1) \mid i \text { が Complier }\right]-\mathrm{E}\left[Y_{i}(0) \mid i \text { が Complier }\right]\right\} \cdot p_C \end{aligned}

    LATEの意味

    IV推定量は、操作変数によって処置変数の状況が変わるグループ(complier)における平均処置効果を捉える

    β1,LATE=E[Y(1)Y(0)T=complier]\beta_{1, LATE} = E[Y(1) - Y(0)|T=complier]

    Complierか否かは観測不可能→LATEは観測不可能なグループについての因果効果

    操作変数が異なればLATEも異なる

    外的妥当性については常に留意が必要

    ITTとLATE

    実験(RCT)において、処置をランダムに割り当てても、処置に従わない人たち(non-complier)もいる

    intention-to-treat (ITT) effect:処置を割り当てられた人たちにおける「処置のオファー」の平均効果

    処置に従った人たち(complier)における平均処置効果は

    ITT効果compliance比率\frac{ITT効果}{compliance比率}

    処置の無作為割り当て(オファー)がZZ、処置が実現されたかどうかをDDとする

    defierもalways-takerもなしと仮定すると?Z=0Z=0なら常にD(Z)=0D(Z)=0となるため

    β1,Wald=E(YZ=1)E(YZ=0)E(DZ=1)E(DZ=0)=E(YZ=1)E(YZ=0)E(DZ=1)0=E(YZ=1)E(YZ=0)P(D=1Z=1)=ITT effectcompliance rate\begin{align} \beta_{1, Wald} &= \frac{ E(Y|Z=1) - E(Y|Z=0) }{ E(D|Z=1) - E(D|Z=0) }\\ &= \frac{ E(Y|Z=1) - E(Y|Z=0) }{ E(D|Z=1) - 0 }\\ &= \frac{ E(Y|Z=1) - E(Y|Z=0) }{ P(D=1|Z=1) }\\ &= \frac{ \text{ITT effect} }{ \text{compliance rate} }\\ \end{align}