2SLS部分重要原理理解及相关检验

假设我们的模型为

y=b_{0}+b_{1}c+u_{i} \cdot \cdot \cdot (1)

但是可能会有内生性,即Cov(c,u_{i})\neq 0

怎么办呢?我们的目标是

y=b_{0}+b_{1}\hat{c}+e_{i}\cdot \cdot \cdot (2)

其中 Cov(\hat{c},e_{i})=0

那么从(1)式出发到(2)式

 y=b_{0}+b_{1}c+u_{i}=b_{0}+b_{1}\hat{c}+[b_{1}\(c-\hat{c})+u_{i}]

那么 b_{1}\(c-\hat{c})+u_{i}=e_{i}

Cov(\hat{c},e_{i})=0那么就需要 

Cov(\hat{c},b_{1}\(c-\hat{c})+u_{i})=Cov(\hat{c},u_{i})+b_{1}Cov(\hat{c},c-\hat{c})=0\cdot \cdot \cdot (3)

c可分为\hat{c}以及与u_{i}相关的部分。那么这样

c=a_{0}+a_{1}x+v_{i}\cdot \cdot \cdot (4)

 \hat{c}=a_{0}+a_{1}x\cdot \cdot \cdot (5) and Cov(x, v_{i})=0

(4)&(5)代入(3)那么 b_{1}Cov(\hat{c},c-\hat{c})=b_{1}Cov(a_{0}+a_{1}x,v_{i})=0

则需要Cov(\hat{c},u_{i})=Cov(a_{0}+a_{1}x,u_{i})=0所以必须要满足Cov(x,u_{i})=0

所以工具变量(IV)x需要满足

Cov(x, \hat{c})\neq0相关性

Cov(x, v_{i})=0

Cov(x,u_{i})=0外生性

从整体角度来看:c与扰动项相关,那么就找一个工具变量x,使x与c相关但不与扰动项相关。那么x可以通过c影响y,但是不会影响到扰动项进而影响y,于是排除了c中与扰动项相关部分对于扰动项的影响(也就排除了进而对y的影响)。

关于代码检验我综合参考如下链接:
工具变量法IV丨原理、stata命令、例文_哔哩哔哩_bilibiliicon-default.png?t=M276https://www.bilibili.com/video/BV1sq4y197WT?spm_id_from=333.337.search-card.all.click(18条消息) Stata:2sls 内生变量 工具变量_hellolijunshy的博客-CSDN博客_工具变量2sls的结果怎么看icon-default.png?t=M276https://blog.csdn.net/Hellolijunshy/article/details/121442658从0开始学Stata-8 工具变量与2SLS - 知乎 (zhihu.com)icon-default.png?t=M276https://zhuanlan.zhihu.com/p/365597047(18条消息) Stata:工具变量法(两阶段最小二乘法2SLS)——解决模型内生性_宋锦纹的博客-CSDN博客_两阶段工具变量法icon-default.png?t=M276https://blog.csdn.net/weixin_47325163/article/details/119917609工具变量法(IV)的Stata操作 - celine227 - 博客园 (cnblogs.com)icon-default.png?t=M276https://www.cnblogs.com/celine227/p/15012128.htmlstata工具变量法:使用2SLS进行ivreg2估计及其检验 - 将军练码 - 博客园 (cnblogs.com)icon-default.png?t=M276https://www.cnblogs.com/kooshine/p/15374513.html

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python中,2SLS是指工具变量法(Instrumental Variable,IV)的一种实现方式。工具变量法是一种解决内生性问题的方法,通过引入工具变量来解决因果关系中的内生性问题。在回归的第一阶段,工具变量法将自变量拆分成拟合值和与扰动项相关部分,然后在第二阶段中,对去除了内生性部分的自变量进行回归,得到一致的估计。 在Python中,可以使用不同的库来实现2SLS回归,比如statsmodels和linearmodels。使用statsmodels库进行2SLS回归,可以通过构建工具变量模型来实现。首先,需要准备数据,可以使用pandas库读取数据并进行一些预处理,比如去除缺失值。然后,使用statsmodels的IV2SLS类来进行2SLS回归。 以下是一个使用statsmodels库进行2SLS回归的示例代码: import pandas as pd import statsmodels.api as sm # 准备数据 data = pd.read_csv('data.csv') # 假设数据保存在data.csv文件中 data = data.dropna() # 去除缺失值 # 定义自变量、因变量和工具变量 endog = data['y'] exog = data[['x1', 'x2']] # 自变量 instruments = data['z'] # 工具变量 # 构建工具变量模型 model = sm.OLS(endog, exog) iv_model = model.fit(cov_type='unadjusted', instrument=instruments) # 输出结果 print(iv_model.summary()) 通过以上代码,可以得到2SLS回归的结果,并且可以通过summary方法查看回归结果的统计信息。 注意,这只是一个示例,实际使用中需要根据具体情况进行调整和扩展。同时,还可以使用其他库如linearmodels来实现2SLS回归。希望这个例子可以帮助你理解Python中的2SLS回归实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值