👇 连享会 · 推文导航 | www.lianxh.cn
🍎 Stata:Stata基础 | Stata绘图 | Stata程序 | Stata新命令 📘 论文:数据处理 | 结果输出 | 论文写作 | 数据分享 💹 计量:回归分析 | 交乘项-调节 | IV-GMM | 时间序列 | 面板数据 | 空间计量 | Probit-Logit | 分位数回归 ⛳ 专题:SFA-DEA | 生存分析 | 爬虫 | 机器学习 | 文本分析 🔃 因果:DID | RDD | 因果推断 | 合成控制法 | PSM-Matching 🔨 工具:工具软件 | Markdown | Python-R-Stata 🎧 课程:最新专题 | 计量专题 | 关于连享会
🍓 课程推荐:2024 机器学习与因果推断专题
主讲老师:司继春 (上海对外经贸大学) ;张宏亮(浙江大学)
课程时间:2024 年 11 月 9-10 日 ;16-17日
课程咨询:王老师 18903405450(微信)
课程特色 · 2024机器学习与因果推断:
懂原理、会应用。本次课程邀请了两位老师合作讲授,目的在于最大限度地实现理论与应用的有机结合。为期四天的课程,分成两个部分:第一部分讲解常用的机器学习算法和适用条件,以及文本分析和大语言模型;第二部分通过精讲 4-6 篇发表于 Top 期刊的论文,帮助大家理解各类机器学习算法的应用场景,以及它们与传统因果推断方法的巧妙结合。 以 Top 期刊论文为范例。目前多数人的困惑是不清楚如何将传统因果推断方法与机器学习结合起来。事实上,即便是 MIT 和 Harvard 的大牛们也都在「摸着石头过河」。为此,通过论文精讲和复现来学习这部分内容或许是目前最有效的方式了。张宏亮老师此前在浙江大学按照这一模式教授了「因果推断和机器学习」课程,效果甚佳:学生们能够逐渐建立起研究设计的理念,并在构造识别策略时适当地嵌入机器学习方法。
江 鑫 (安徽大学),jiangxin199566@foxmail.com
曹昊煜 (兰州大学),caohy19@lzu.edu.cn
编者按:本文主要摘译自下文,特此致谢!
Source:Kripfganz S, Kiviet J F. kinkyreg: Instrument-free inference for linear regression models with endogenous regressors[J]. Community (contributed Stata program. Mimeo in preparation, 2020. -PDF-
目录
1. 背景介绍
2. 理论模型
2.1 线性回归模型
2.2 Kinky 最小二乘估计
3. 命令介绍
4. Stata 实操
4.1 假设 iq 为内生变量
4.2 假设 kww 为内生变量
4.3 具有 2 个内生变量的 KLS 估计
4. 结论
5. 参考资料
6. 相关推文
温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:
1. 背景介绍
众所周知,工具变量在解决内生性问题中发挥着重要作用。在具有内生变量的模型中,标准回归方法是通过使用工具变量来利用恰好或过度识别的正交性条件。在恰好识别的模型中,如果不强加其他不可测试的假设,正交性假设就无法识别。虽然对过度识别限制的正式测试是可能的,其解释仍然取决于一组初始的不可测试的恰好识别正交性条件的有效性。
我们编写了 kinkyreg
命令,用于 kinky 最小二乘 (KLS) 推理,该程序采用了另一种识别方法。通过利用内生性可接受程度界限形式的非正交条件,可以构建不需要工具变量的可行测试程序。KLS 置信区间比从工具变量估计获得的置信区间提供更多信息,尤其是当工具较弱时。此外,该方法有助于标准工具变量推断的敏感性分析。特别是,它允许评估以前无法测试的仅识别排除限制的有效性。进一步,基于 KLS 的检验包括异方差、函数形式和序列相关检验。
2. 理论模型
2.1 线性回归模型
考虑如下线性回归模型:
其中, 为内生变量, 为外生变量的向量,,并且
该模型可以推广到多个内生回归量 (Kiviet, 2020)。OLS 是不一致的,因为 ,对于非零内生相关性 。
2.2 Kinky 最小二乘估计
虽然 2SLS 使用正交条件 ,但 KLS 使用非正交条件 (除了外生变量 的正交条件)。对于给定的相关性 , 可以一致地估计为:
其中,, 代表OLS残差。方差估计值 , 和 很容易从数据中获得。
KLS 估计修正 OLS 估计的不一致性:
Kiviet (2020) 推导出 KLS 估计量的方差-协方差矩阵 的解析表达式,作为回归量峰态 和误差项峰态的函数 。 的估计值可以从数据中获得,,表示KLS 残差。
对于 的易处理表达式,Kiviet (2020) 假设所有回归量的峰态 相同。通过选择 作为个体峰度估计的最大值,我们获得 (渐近) 保守置信区间。与内生性相关的 未知,但假设位于区间 中。KLS 估计量 是针对一系列值 计算的,受如下可行性限制:
对于显著性水平 ,在 范围内的 KLS 置信区间的并集具有至少 的渐近覆盖率。
3. 命令介绍
*命令安装
cnssc install kinkyreg, replace
*命令语法
kinkyreg depvar [varlist1] (varlist2 [= varlist_iv]) [if] [in] [, options]
varlist1
代表一系列外生变量;varlist2
代表一系列内生变量;varlist_iv
代表一系列排除的工具变量。
options
选择项及其含义如下:
模型:
endogeneity(numlist)
:指定内生性相关值;range(#_1 #_2)
:内生变量的准许范围;stepsize(#)
:考虑内生性的处理步骤;ekurtosis(#)
:指定误差项的峰度;xkurtosis(#)
:指定右侧变量的峰度;noconstant
:除去常数项。汇报项:
correlation(#)
:回归输出的特定内生性;level(#)
:设置置信水平,默认值为 95%;small
:进行自由度调整并报告小样本统计量;inference(varlist)
:为 KLS 推断指定变量;lincom(#: exp)
:为 KLS 推断指定线性组合,可以多次指定;twoway(twoway_spec)
:指定双向图的选项,可以多次指定;coefplot(coefplot_spec)
:指定系数图的选项,可以多次指定;ciplot(ciplot_spec)
:指定置信区间图的选项,可以多次指定;namestub(namestub)
:为双向图名称设置前缀;ivperfect
:不检查内生变量和外生工具变量之间的共线性;coeflegend
:显示图例而不是统计数据;nograph
:不绘图;noheader
:不输出标题;notable
:不输出系数表;novstore
:不要为每个网格点存储方差-协方差矩阵,很少使用;display_options
:控制列和列格式、行间距、行宽、省略变量的显示以及基本和空单元格,及因子变量标签。
4. Stata 实操
下面调用数据集,举个栗子,使用 kinkyreg
得出估计系数和置信区间:
4.1 假设 iq 为内生变量
. use http://www.stata-press.com/data/imeus/griliches.dta, clear
. set scheme s1color
. kinkyreg lw s expr tenure rns smsa _I* (iq = age mrt), range(-0.75 0.75) small inference(iq s)
可以使用 correlation(#)
轻松获得特定内生相关性的 KLS 回归输出。假设轻度到中度的测量误差是内生性的来源,一个合理的选择可能是 。
. kinkyreg, correlation(-0.4)
Kinky least squares estimation Number of obs = 758
Postulated endogeneity of iq = -0.4000
------------------------------------------------------------------------------
lw | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
iq | .0178505 .0016046 11.12 0.000 .0147003 .0210006
s | .018874 .0090898 2.08 0.038 .0010293 .0367187
expr | .036647 .0074092 4.95 0.000 .0221016 .0511925
tenure | .0355367 .0085142 4.17 0.000 .0188221 .0522514
rns | -.0527647 .0315098 -1.67 0.094 -.1146233 .0090939
smsa | .1196815 .0301968 3.96 0.000 .0604005 .1789625
_Iyear_67 | -.0638234 .0543385 -1.17 0.241 -.1704981 .0428514
_Iyear_68 | .0872164 .0509777 1.71 0.088 -.0128607 .1872935
_Iyear_69 | .1878763 .0498298 3.77 0.000 .0900528 .2856998
_Iyear_70 | .1661179 .0556755 2.98 0.003 .0568184 .2754174
_Iyear_71 | .1882715 .0490242 3.84 0.000 .0920295 .2845134
_Iyear_73 | .3048592 .04619 6.60 0.000 .2141811 .3955373
_cons | 3.255792 .1420164 22.93 0.000 2.976992 3.534592
------------------------------------------------------------------------------
工具变量的排除性检验:
. estat exclusion, twoway(, ylabel(0.01 0.05 0.1, grid)) notable
估计结果展示如下图:
4.2 假设 kww 为内生变量
系数与置信区间估计:
. kinkyreg lw s expr tenure rns smsa _I* age mrt (kww = iq), ///
> range(-0.75 0.75) small inference(kww s)
结果展示如下:
工具变量的排除检验:
. estat exclusion, twoway(, ymtick(0.05 0.1, grid))
Endogeneity of kww compatible with valid exclusion
-----------------------------------------------
| Corr. [95% Confid. Bounds]
-------------+---------------------------------
iq | -.3183786 -.5207143 -.1120693
-----------------------------------------------
交互项的排除检验:
. estat exclusion c.expr#c.expr c.tenure#c.tenure c.age#c.age ///
> c.expr#c.tenure c.expr#c.age c.tenure#c.age, ///
> twoway(, ymtick(0.05 0.1, grid)) nojoint notable
边际效应:tenure 变量边际效应的 KLS 估计为 ,可以使用 lincom()
选项生成选定的年龄值。
. kinkyreg lw s expr tenure rns smsa _I* age mrt c.tenure#c.age (kww), ///
> range(-0.75 0.75) small lincom(1: tenure+c.tenure#c.age*20) ///
> lincom(2: tenure+c.tenure#c.age*30) ///
> twoway(, ytitle("marginal effect of tenure") ylabel(-0.15(0.05)0.2) ///
> ytick(0, grid) legend(off)) twoway(1, title("age = 20")) ///
> twoway(2, title("age = 30"))
Kinky least squares estimation Number of obs = 758
结果展示如下:
线性假设检验:原假设是对于更高的年龄,tenure 和 expr 边际效应相等会被拒绝。
. estat test tenure+c.tenure#c.age*20=expr, twoway(, title("age == 20") ///
> ylabel(0(0.2)1) name(kinkyreg_test1))
. estat test tenure+c.tenure#c.age*30=expr, twoway(, title("age == 30") ///
> ymtick(0.05 0.1, grid) name(kinkyreg_test2))
Ramsey 回归规范误差测试 (RESET):RESET 是对内生性校正拟合值 (默认选项 xb
) 或右侧变量 (选项 rhs
) 的排除性检验。
. estat reset, twoway(, ymtick(0.05 0.1, grid) legend(rows(1)) ///
> name(kinkyreg_reset_xb))
. estat reset, rhs order(2 3) twoway(, ymtick(0.05 0.1, grid) ///
> name(kinkyreg_reset_rhs))
结果展示如下:
Breusch-Pagan 异方差检验:原假设是不存在条件异方差性,minp
选项显示单个显著性检验中的最小 值。
. estat hettest () (iq) (c.expr#c.expr c.tenure#c.tenure c.age#c.age ///
> c.expr#c.tenure c.expr#c.age), xb rhs twoway(, ymtick(0.05 0.1, grid) ///
> name(kinkyreg_hett))
. estat hettest () (iq) (c.expr#c.expr c.tenure#c.tenure c.age#c.age ///
> c.expr#c.tenure c.expr#c.age), rhs minp twoway(, ylabel(0(0.2)1) ///
> ymtick(0.05 0.1, grid) name(kinkyreg_hett_minp))
4.3 具有 2 个内生变量的 KLS 估计
系数估计与置信区间:
. *未限制显示范围:
. kinkyreg lw s expr tenure rns smsa _I* age mrt c.tenure#c.age (iq kww), ///
> endogeneity(-0.2 .) range(-0.75 0.75) small inference(s) ///
> twoway(s,name(kinkyreg_s1))
Kinky least squares estimation Number of obs = 758
. *使用选项 yrange() 限制显示范围:
. kinkyreg lw s expr tenure rns smsa _I* age mrt c.tenure#c.age (iq kww), ///
> endogeneity(-0.2 .) range(-0.75 0.75) small inference(s) ///
> twoway(s, yrange(-0.2 0.2) name(kinkyreg_s2))
Kinky least squares estimation Number of obs = 758
曲面图和等高线图:
set scheme s1mono
forvalues endo = -40/0{
quietly kinkyreg lw s expr tenure rns smsa _I* age mrt c.tenure#c.age ///
(iq kww), endogeneity (`=`endo'/100' .) range(-0.4 0) small nograph
matrix b = (nullmat(b), e(b_kls)[., "s"])
estat test s, nograph
matrix p = (nullmat(p), r(p_kls))
}
frame create kinkyreg
frame change kinkyreg
quietly svmat double b, name(s)
svmat double p, name(p)
generate double endo_kww = -0.4 + 0.01 * (_n - 1)
quietly reshape long s p, i(endo_kww) j(endo_iq)
recast double endo_iq
quietly replace endo_iq = (endo_iq - 41) / 100
label var s "s coefficient estimate"
label var p "p-value"
label var endo_kww "postulated endogeneity of kww"
label var endo_iq "postulated endogeneity of iq"
surface endo_iq endo_kww s, plotregion(lpattern(blank)) ytitle(endog. kww) ///
nodraw name(surface_s)
surface endo_iq endo_kww p, plotregion(lpattern(blank)) ytitle(endog. kww) ///
nodraw name(surface_p)
twoway contour s endo_kww endo_iq, ccuts(-0.06(0.01)0.03) nodraw name(contour_s)
twoway contour p endo_kww endo_iq, ccuts(0.01 0.05 0.1) nodraw name(contour_p)
graph combine surface_s surface_p contour_s contour_p, altshrink
4. 结论
kinkyreg
程序包提供了新工具,用于 (主要是图形) 在具有任意数量内生变量的线性回归模型中进行无工具变量推断。KLS 推理有利于基于工具变量的敏感性检查。KLS 方法通常比基于工具变量的方法产生更窄的置信区间,但仅与可接受的内生相关性的所选界限一样好。因此,将 KLS 视为对基于工具变量法的补充而不是替代更为合理的。
5. 参考资料
Kripfganz S, Kiviet J F. kinkyreg: Instrument-free inference for linear regression models with endogenous regressors[J]. Community (contributed Stata program. Mimeo in preparation, 2020. -PDF- Kiviet J F. Testing the impossible: identifying exclusion restrictions[J]. Journal of Econometrics, 2020, 218(2): 294-316. -PDF- Kiviet J. Instrument-free inference under confined regressor endogeneity; derivations and applications[J]. 2019. -PDF- Mander A. 3D surface plots[J]. Stata Technical Bulletin, 2000, 9(51). -Link-
6. 相关推文
Note:产生如下推文列表的 Stata 命令为:
lianxh 工具变量, m
安装最新版lianxh
命令:
ssc install lianxh, replace
专题:Stata命令 Lasso一下:再多的控制变量和工具变量我也不怕-T217 Stata新命令-pdslasso:众多控制变量和工具变量如何挑选? 专题:IV-GMM 找不到IV?基于异方差构造工具变量 IV在哪里?奇思妙想的工具变量 twostepweakiv:弱工具变量有多弱? 多个(弱)工具变量如何应对-IV-mivreg? IV:工具变量不满足外生性怎么办? IV-工具变量法:第一阶段系数符号确定时的小样本无偏估计 IV:可以用内生变量的滞后项做工具变量吗? Stata: 工具变量法 (IV) 也不难呀! IV-估计:工具变量不外生时也可以用! 专题:内生性-因果推断 工具变量-IV:排他性约束及经典文献解读
🍓 课程推荐:2024 机器学习与因果推断专题
主讲老师:司继春 (上海对外经贸大学) ;张宏亮(浙江大学)
课程时间:2024 年 11 月 9-10 日 ;16-17日
课程咨询:王老师 18903405450(微信)
尊敬的老师 / 亲爱的同学们:
连享会致力于不断优化和丰富课程内容,以确保每位学员都能获得最有价值的学习体验。为了更精准地满足您的学习需求,我们诚挚地邀请您参与到我们的课程规划中来。请您在下面的问卷中,分享您 感兴趣的学习主题或您希望深入了解的知识领域 。您的每一条建议都是我们宝贵的资源,将直接影响到我们课程的改进和创新。我们期待您的反馈,因为您的参与和支持是我们不断前进的动力。感谢您抽出宝贵时间,与我们共同塑造更加精彩的学习旅程!https://www.wjx.cn/vm/YgPfdsJ.aspx# 再次感谢大家宝贵的意见!
New! Stata 搜索神器:
lianxh
和songbl
GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉 使用:
. lianxh DID 倍分法
. songbl all
🍏 关于我们
连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。