2020. 11. 10. 23:20ㆍ계량경제학
앞선 포스팅(direction-f.tistory.com/57)에서 간단히 도구변수와 2SLS(Two-Stage Least Squares)의 추정방법에 대해서 정리하였습니다. 이번에는 일반화된 도구변수를 활용한 회귀 분석에 대해서 살펴보겠습니다.
$$ Y_i =\beta_0 + \beta_1X_{1i} + \cdots + \beta_kX_{ki}+\beta_{k+1}W_{1i}+\cdots+\beta_{k+r}W_{ri}+\mu_i $$
위와 같은 모형이 있다고 가정해보겠습니다.
$Y_i$는 종속변수이며, $X_{ki}$는 내생변수, $W_{ri}$는 외생변수($\mu_i$와 uncorrelated)를 나타냅니다. 이 때 도구변수는 $Z_{mi}$ 이며 $m>k$라면 overidentified이고 $m=k$라면 exactly identified이고 $m<k$라면 underidentified입니다. 따라서 도구변수 개수 m은 내생변수의 수 k보다 크거나 같아야 합니다.
일반화된 도구변수를 활용한 회귀 분석에서 2SLS 단계는 다음과 같이 구성됩니다.
(1) First-Stage 회귀분석
모든 내생변수에 대해 모든 도구변수/외생변수/Intercept를 활용하여 OLS를 추정하고 예측값(Fitted value)를 구합니다.
(2) Second-Stage 회귀분석
모든 내생변수 예측값/외생변수/Intercept를 활용하여 종속변수에 관한 OLS를 추정하여 Parmeter값을 도출합니다.
이제 Python을 활용하여 아래와 같은 식을 추정해보겠습니다. 내생변수인 담배가격($P_i$)을 도구변수를 활용하여 추정하겠습니다.
cigaret["rincome"]=cigaret["income"]/cigaret["population"]/cigaret["cpi"]
c1995 = cigaret.loc[cigaret["year"]==1995]
dependent = np.log(c1995["packs"])
exog = sm.add_constant(np.log(c1995["rincome"]))
endog = np.log(c1995["rprice"])
instruments = c1995["salestax"]
mod2 = IV2SLS(dependent, exog, endog, instruments).fit()
mod2
'''
==============================================================================
Parameter Std. Err. T-stat P-value Lower CI Upper CI
------------------------------------------------------------------------------
const 9.4307 1.2194 7.7338 0.0000 7.0407 11.821
rincome 0.2145 0.3018 0.7107 0.4773 -0.3771 0.8061
rprice -1.1434 0.3605 -3.1718 0.0015 -1.8499 -0.4368
==============================================================================
'''
##
cigaret["cigtax"]=cigaret["tax"]/cigaret["cpi"]
c1995 = cigaret.loc[cigaret["year"]==1995]
dependent = np.log(c1995["packs"])
exog = sm.add_constant(np.log(c1995["rincome"]))
endog = np.log(c1995["rprice"])
instruments = c1995[["salestax","cigtax"]]
mod3 = IV2SLS(dependent, exog, endog, instruments).fit()
mod3
'''
==============================================================================
Parameter Std. Err. T-stat P-value Lower CI Upper CI
------------------------------------------------------------------------------
const 9.8950 0.9288 10.654 0.0000 8.0746 11.715
rincome 0.2804 0.2458 1.1407 0.2540 -0.2014 0.7622
rprice -1.2774 0.2417 -5.2855 0.0000 -1.7511 -0.8037
==============================================================================
'''
위 코드는 도구변수를 하나만 썼을 때와, 두개를 썼을 때를 비교한 것입니다. 우리는 어떠한 것을 활용해야 할까요? 이제 도구변수의 타당성을 확보/검증할 수 있는 방안에 대해서 정리해보도록 하겠습니다.
먼저 도구변수는 내생변수와 관련성이 있어야 합니다. 따라서 도구변수를 활용하여 내생변수에 대한 OLS를 추정하고 F-test를 통해서 도구변수 중 하나라도 내생변수와 관련성이 있는지를 체크합니다.
추가적으로 J-statistic을 활용하여 도구변수의 타당성을 검증하는데 이는 종속변수에 관한 모형의 오차항과 도구변수가 관련없음을 증명하기 위함입니다.(아래 모형)
우리가 검증해야할 가설은 아래와 같습니다. 만약 모든 $\delta$가 0이라면 Error term과 correlation이 없는 것이므로 도구변수의 타당성을 확보했다고 판단할 수 있습니다.
이와 같은 가설을 검증하기 위해 J-statistic을 활용하며, J-statistic은 아래와 같이 계산됩니다.
Python에서는 anova_lm을 활용하여 계산을 수행하면 됩니다. 이 때 J-statistic은 $\chi_{m-k}$를 따릅니다. $m$은 도구변수의 수, $k$는 내생변수의 수를 뜻합니다.
'계량경제학' 카테고리의 다른 글
Experiments and Quasi-Experiments(실험/준실험 연구) (2) | 2020.11.15 |
---|---|
Instrumental Variable Regression(도구변수를 활용한 회귀분석)3 (0) | 2020.11.15 |
Instrumental Variable Regression(도구변수를 활용한 회귀분석) (0) | 2020.11.08 |
Binary 변수를 가지는 회귀분석(로짓 모형) (0) | 2020.11.02 |
Binary 변수를 가지는 회귀분석(프로빗 모형) (2) | 2020.11.01 |