第10章 工具變數法
OLS成立的前提:前定變數或同期外生=解釋變數與擾動項不相關
- 內生性(解釋變數與擾動項相關)來源:
- 遺漏變數偏差
- 聯立方程偏差(雙向因果關係)
- 測量誤差偏差(measurement error bias)
解決內生性問題的方法之一:工具變數法
10.1 聯立方程偏差
解釋變數與被解釋變數直接存在多個函式關係,形成聯立方程關係,存在聯立方程偏差,使OLS估計不一致。
- 聯立方程將導致X與y的多種函式關係,透過變換,可解釋為雙向因果。
10.2 測量誤差偏差
有些變數無法觀測,只能觀測其他替代變數。這樣形成的偏差稱為測量誤差偏差。
- 資料質量是影響研究準確性的重要因素。
- 如果被解釋變數存在測量誤差,後果缺不嚴重。
10.3 工具變數法的例子
定義 工具變數
有效的 工具變數滿足2個條件:
- 內生性(相關):與解釋變數相關
- 外生性(不相關):與擾動項不相關
10.4 二階段最小二乘法
定義 二階段最小二乘法(2SLS)
做兩個迴歸。
- stage1:用內生解釋變數對工具變數回歸,得到擬合值
- stage2:用被解釋變數對stage1的擬合值做迴歸
本質:將內生解釋變數分成兩部分:
- 工具變數所造成的外生部分
- 擾動項相關的其餘部分
階條件(Order Condition):進行2SLS估計的必要條件是工具變數個數不少於內生解釋變數的個數
三種情況:
- 不可識別,工具變數數 < 內生解釋變數數 不可使用2SLS
- 恰好識別,工具變數數 = 內生解釋變數數 可使用2SLS
- 過度識別,工具變數數 > 內生解釋變數數 可使用2SLS
另外:解釋變數中如果有外生變數,應將外生變數與工具變數一起用於stage1的迴歸,stage2不變。
在存在異方差情況下,
- stage2使用異方差穩健標準誤
- 更有效率的工具:廣義矩估計GMM
使用工具變數時,面對如下問題:
- 弱工具變數
- 過度識別情況下的工具變數外生性
10.5 弱工具變數
工具變數僅包含極少的內生解釋變數相關資訊
檢驗方法:
- 對一階段的迴歸的一些統計量進行觀察
解決方法: - 尋找更強的工具變數
- 使用有限資訊最大似然估計法(LIML,Limited Information Maximum likelihood Estimation)
10.6 對工具變數外生性的過度識別檢驗
工具變數是否外生?
- 恰好識別時,無法檢驗
- 過度識別時,可做檢驗,檢驗的前提是該模型至少是恰好識別的,即有效工具變數數至少與內生變數一樣多
檢驗方法:Sargan統計量
- 原理:在過度識別時,可用不同工具變數組合進行工具變數法估計,如果所有工具變數都有效,則這些工具變數估計量 \(\hat\beta_{IV}\) 都將收斂到相同的真實引數 \(\beta\)。
10.7 對解釋變數內生性的豪斯曼檢驗:究竟該用OLS還是IV?
使用工具變數法的前提是存在內生解釋變數,需要做檢驗
- 豪斯曼檢驗 (Hausman specification test):理想情況——同方差
- 改進版:杜賓-吳-豪斯曼檢驗(Durbin_Wu_Hausman):適用於異方差
10.8 如何獲得工具變數
步驟:
- 列出與內生解釋變數相關的儘可能多的變數
- 從清單中剔除與擾動項相關的變數
很隨緣啊。
10.9 工具變數法的Stata命令及例項
案例流程圖:
![[10-1-工具變數法流程.png]]
statsmodel的IV2SLS方法還沒寫完,但是有另一個包可以實現:linearmodels 6.0 (bashtage.github.io)
這個案例也不錯: Further Examples - linearmodels 6.0 (bashtage.github.io)
先讀取資料:
import pandas as pd
import statsmodels.api as sm
from linearmodels.iv import IV2SLS
grilic = pd.read_stata('../2_Data/Data-2e/grilic.dta')
dependent = grilic['lnw']
exog = grilic[['s','expr', 'tenure', 'rns', 'smsa']]
exog = sm.add_constant(exog)
endog = grilic['iq']
instruments = grilic[['med','kww']]
exog_iq = grilic[['s','expr', 'tenure', 'rns', 'smsa','iq']]
exog_iq = sm.add_constant(exog_iq)
(1)構建參照OLS
發現:教育投資回報率太高,可能存在“遺漏變數”,考慮引入遺漏變數“能力”
res_ols = IV2SLS(dependent, exog, None,None).fit()
(2)引入“智商(iq)”作為“能力”的代理變數,進行OLS
發現:教育投資回報率依然很高
res_ols_iq = IV2SLS(dependent, exog_iq,None,None).fit()
(3)由於用“iq”度量“能力”存在“測量誤差”,考慮引入工具變數進行2SLS,使用穩健標準誤。
工具變數:
- med:母親的教育年限
- kww:kww測試成績
都與iq成正相關,且假設都外生。
發現:教育投資回報率將為6.08%。
iv_model = IV2SLS(dependent=dependent,
exog=exog,
endog=endog,
instruments=instruments
)
res_iv = iv_model.fit()
(4)進行工具變數外生性的過度識別檢驗
print(res_iv.wooldridge_overid)
print(res_iv.sargan)
print(res_iv.anderson_rubin)
print(res_iv.basmann)
這幾種方法都是用於過度識別時,外生性檢驗用的。
(5)弱工具變數檢驗:工具變數與解釋變數的相關性檢驗
第一階段:標準OLS/穩健標準誤OLS 的工具變數係數都顯著不為0,F統計量都>10!
# OLS-穩健標準誤第一階段
print(res_iv.first_stage.diagnostics)
print(res_iv.first_stage.individual) # 第一階段完整結果
## 工具變數都顯著不為0.
# 標準OLS第一階段
print(iv_model.fit(cov_type='unadjusted').first_stage.diagnostics) #模型診斷
print(iv_model.fit(cov_type='unadjusted').first_stage.individual) #完整模型結果
(6)穩健起見,使用LIML再次估計
from linearmodels.iv import IVLIML
iv_liml_model = IVLIML(dependent=dependent,
exog=exog,
endog=endog,
instruments=instruments
)
res_iv_liml = iv_liml_model.fit()
print(res_iv_liml.summary)
kappa=1.00 說明與2SLS一樣
(7)檢驗存在內生解釋變數
print(res_iv.wu_hausman())
print(res_iv.durbin()) # 暫不清楚是什麼檢驗原理
(8)彙報結果
from linearmodels.iv.results import compare
from collections import OrderedDict
od = OrderedDict()
od['ols_without_iq'] = res_ols
od['ols_with_iq'] = res_ols_iq
od['2sls'] = res_iv
od['liml_iq'] = res_iv_liml
print(compare(od))
結果:
Model Comparison
=============================================================================
ols_without_iq ols_with_iq 2sls liml_iq
-----------------------------------------------------------------------------
Dep. Variable lnw lnw lnw lnw
Estimator OLS OLS IV-2SLS IV-LIML
No. Observations 758 758 758 758
Cov. Est. robust robust robust robust
R-squared 0.3521 0.3600 0.2775 0.2768
Adj. R-squared 0.3478 0.3548 0.2718 0.2710
F-statistic 423.58 435.33 370.04 369.62
P-value (F-stat) 0.0000 0.0000 0.0000 0.0000
================== ============ =========== =========== ===========
const 4.1037*** 3.8952*** 3.2180*** 3.2150***
(46.996) (33.756) (8.0781) (8.0345)
s 0.1026*** 0.0928*** 0.0608*** 0.0606***
(16.595) (13.362) (3.2073) (3.1857)
expr 0.0381*** 0.0393*** 0.0433*** 0.0433***
(5.7860) (5.9347) (5.8452) (5.8424)
tenure 0.0356*** 0.0342*** 0.0296*** 0.0296***
(4.4702) (4.3528) (3.5643) (3.5593)
rns -0.0841*** -0.0745** -0.0435 -0.0434
(-2.8583) (-2.4979) (-1.2625) (-1.2566)
smsa 0.1397*** 0.1367*** 0.1272*** 0.1272***
(4.9980) (4.9466) (4.2776) (4.2735)
iq 0.0033*** 0.0139** 0.0140**
(2.9099) (2.3063) (2.3032)
==================== ============== ============= ============= =============
Instruments med med
kww kww
-----------------------------------------------------------------------------
T-stats reported in parentheses