Instrumental Variable Regression(도구변수를 활용한 회귀분석)

2020. 11. 8. 21:37계량경제학

반응형

회귀모형은 Omitted variable, measurement error 등과 같은 요인에 의해 모형 추정이 잘 못 될 수 있습니다. 만약 Omitted variable을 측정하기 어렵거나, 활용할 수 없다면 추정된 회귀모형은 오류를 가지고 있을 수 밖에 없습니다.(추정된 계수의 일치성을 보장할 수 없습니다.) 이런 이슈를 해결하기 위해서 Instrumental variable이라고 불리는 도구변수를 활용하여 회귀모형을 추정하는 것입니다.  

아래와 같은 회귀모형이 있다고 가정해보겠습니다

$$ Y_i = \beta_0 +\beta_1X_i+\mu_i $$

만약 $\mu_i$이 $X_i$관련이 있다면($X_i$가 내생성을 가짐(endogenous), OLS로 추정된 $\beta_1$은 일치성을 가지고 있지 않게 됩니다.(incosistent). 대부분의 간단한 case에서는 정확한 $\beta_1$을 가지기 위해서 하나의 도구변수 $Z$를 활용합니다.

이 때, $Z$는 도구변수로 활용되기 위해서 아래와 같은 2가지 조건을 만족해야 합니다.

(1) Instrument relevance condition:

- $X$와 도구변수 $Z$는 반드신 상관관계를 가져야 합니다.($\rho_{Z_i,X_i}\neq 0$) 

(2) Instrument exogeneity condition:

- 도구변수 $Z$는 반드신 error term $\mu$와 상관관계가 없어야 합니다.($\rho_{Z_i,\mu_i}= 0$)

[The Two-Stage Least Squared Estimator(2SLS)]

도구변수 $Z$를 추정하기 위해서 2SLS방법이 가장 활발히 적용되고 있습니다. 이름과 같이 두 단계로 이루어져 있습니다. 첫 번째 단계에서는 내생변수 $X$를 도구변수 $Z$로 표현하는 단계 입니다. 

첫 번째 단계에서의 회귀모형은 다음과 같습니다.

$$ X_i = \pi_0+\pi_1Z_i+v_i $$

$\pi_0+\pi_1Z_i$는 $Z_i$에 의해 설명되는 $X_i$의 부분입니다. 일단계에서 OLS 추정을 활용하여 $\pi_0$, $\pi_1$를 추정하고 예측값 $\widehat{X_i}$을 얻습니다. 이단계에서 예측값 $\widehat{X_i}$을 활용하여 종속변수 Y에 대한 회귀모형을 구성합니다. 

해당 두번째 단계에서 우리가 처음에 관심있었던 $\beta_0$과 $\beta_1$를 추정하게 됩니다. 2SLS를 활용하여 추정한 $\beta_1$은 다음과 같습니다.

https://www.econometrics-with-r.org/12-1-TIVEWASRAASI.html

 

R 패키지 AER에서 제공하는 데이터셋 "CigarettesSW"을 활용하여, Python에서 간단한 도구변수 추정을 해보겠습니다. 우리가 추정하고 싶은 회귀모형은 아래와 같습니다.

https://www.econometrics-with-r.org/12-1-TIVEWASRAASI.html

$Q_i$는 일인당 담배 Pack 구매량이며, $P_i$는 담배 Pack의 실제 판매 가격입니다. 이 때 $i$는 state를 나타냅니다.

먼저 도구변수를 활용하여 $P_i$를 표현하겠습니다.

https://www.econometrics-with-r.org/12-1-TIVEWASRAASI.html

도구변수(SalesTax)를 활용하여 가격 예측값을 구한 후 가격 예측값을 활용하여 처음에 우리가 추정하고자 하는 모형을 추정하여 가격$P_i$와 수요 $Q_i$의 관계를 추정하겠습니다.

import pandas as pd
import numpy as np
import statsmodels.api as sm
import statsmodels.formula.api as smf
import matplotlib.pyplot as plt
import seaborn as sns

## Data load
cigaret = pd.read_csv("cigaret.csv")

cigaret["rprice"]=cigaret["price"]/cigaret["cpi"]
cigaret["salestax"]=(cigaret["taxs"]-cigaret["tax"])/cigaret["cpi"]
c1995 = cigaret.loc[cigaret["year"]==1995]

## first stage
cig_s1 = smf.ols("np.log(rprice) ~ salestax", data = c1995).fit()
lcigp_pred = cig_s1.predict(c1995["salestax"])

## Second stage
cig_s2 = smf.ols("np.log(packs) ~ lcigp_pred", data = c1995).fit()
cig_s2.summary()

'''
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
Intercept      9.7199      1.801      5.396      0.000       6.094      13.345
lcigp_pred    -1.0836      0.377     -2.877      0.006      -1.842      -0.325
==============================================================================
'''

최종적으로 위와 같은 관계식을 추정해낼 수 있습니다.

이젠 Python에서 제공해주는 패키지를 활용하여, 추정해보겠습니다.

from linearmodels.iv import IV2SLS

dependent = np.log(c1995["packs"])
c1995["const"]=1
exog = c1995["const"]
endog = np.log(c1995["rprice"])
instruments = c1995["salestax"]
mod = IV2SLS(dependent, exog, endog, instruments).fit()
print(mod)

'''
==============================================================================
            Parameter  Std. Err.     T-stat    P-value    Lower CI    Upper CI
------------------------------------------------------------------------------
const          9.7199     1.4961     6.4966     0.0000      6.7875      12.652
rprice        -1.0836     0.3122    -3.4708     0.0005     -1.6955     -0.4717
==============================================================================
'''

추정된 계수가 같음을 확인할 수 있습니다. 다만, T-stat값이 다른데 우리가 수동으로 1단계, 2단계를 추정하는 것은 적절한 T-stat를 제공해주지 못합니다. 다만, 패키지를 활용하면 이러한 자동적으로 통계적 유의성을 조절해줍니다. 따라서 통계적 유의성을 볼 때는 패키지를 활용하여 추정하는 것이 효율적입니다.

도구변수의 개론적 내용에 대해서 다루어봤습니다. 다만 효과적인 도구변수를 찾는 것이 쉬운일은 아니고 조건에 맞는 도구변수를 찾는다고 해도 어떤 변수들은 설명력이 떨어져 보이기도 합니다. 그렇기 때문에 적절한 도구변수를 활용하는 것은 쉬운일은 아닌 것 같습니다.

참조:

danbi-ncsoft.github.io/study/2019/08/07/IV.html

www.econometrics-with-r.org/12-1-TIVEWASRAASI.html

반응형