第四节 利用python进行工具变量两阶段最小二乘回归
FBI WARNING:
关于如何用statsmodels做OLS回归可以见我之前的文章,这篇讲的是如何用python的statsmodels统计工具包实现工具变量的两阶段最小二乘回归(IV2SLS)。关于内生性和工具变量的知识这里不阐述,直接用代码演示过程结果~
1.statsmodels的IV2SLS()方法
- 官方的IV2SLS()方法:

- 参数说明:
endog
:因变量exog
:自变量instrument
:工具变量(还除了内生的变量在内的全部自变量)
- 用法:
假如我这里数据集的变量有["Y","const","X1","X2","X3","Z1","Z2"],
其中Y是因变量,const是常数项列,自变量有X1,X2,X3。
X3是内生的,Z1、Z2是我找来的工具变量。
from statsmodels.sandbox.regression.gmm import IV2SLS
regressionIV2SLS = IV2SLS(data['Y'],
data[["const","X1","X2","X3"]], #所有原始自变量
data[["const","X1","X2","Z1","Z2"]]) #工具变量,还包含除去内生的自变量以外的全部自变量
2.自己演示的代码
在这里我随机生成了一个数据集来展示整个工具变量两阶段最小二乘回归的过程。
import pandas as pd
import numpy as np
import statsmodels.api as sm
from statsmodels.sandbox.regression.gmm import IV2SLS #两阶段最小二乘回归的包
# 数据生成
data4IV = pd.DataFrame(np.random.randint(1,10,(30,6)),
columns=["Y","X1","X2","X3","Z1","Z2"])
data4IV = sm.add_constant(data4IV) #增加常数项列
y = "Y" #因变量
X =["const","X1","X2","X3"] #自变量,这里假设X3是内生的变量,加了常数项
Z =["const","X1","X2","Z1","Z2"] #工具变量,包含了非内生变量在内的全部自变量 记得加常数项
#两阶段最小二乘回归
regression = IV2SLS(data4IV[y],data4IV[X],data4IV[Z])
model =regression.fit()
model.summary()
这里因为是随机生成的数据,所以显著性并不好,但只是为了展示这个过程。我的可爱宝贝学会了吗~嘬嘬 (((o(゚▽゚)o)))