Stata:内生转换模型及其应用-movestay-mspredict

发布时间:2022-01-06 阅读 10620

Stata连享会   主页 || 视频 || 推文 || 知乎 || Bilibili 站

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

New! lianxh 命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc, ihelp, rdbalance, gitee, installpkg

课程详情 https://gitee.com/lianxh/Course

课程主页 https://gitee.com/lianxh/Course

⛳ Stata 系列推文:

PDF下载 - 推文合集

作者:曹昊煜 (兰州大学)
邮箱caohy19@lzu.edu.cn

编者按:本文主要摘译自下文,特此致谢!
Source:Lokshin M, Sajaia Z. Maximum likelihood estimation of endogenous switching regression models[J]. The Stata Journal, 2004, 4(3): 282-289. -PDF-


目录


1. 简介

在多数实证研究中,个体观测很可能是一个选择后的结果,例如是否加入工会、是否在公共部门就业或是否买房。由于只能观测到个体的选择行为以及选择后的结果,直接将结果变量对决策变量回归可能存在遗漏变量的内生性问题。为了缓解上述问题对实证研究的影响,本文将介绍一种通过设定转换方程对决策变量建模的方法,即内生转换模型。

2. 内生转换模型

2.1 模型设定与 ML 估计

在内生转换模型中,需要构建两个回归模型,以及一个示性函数。其中,个体决策结果由示性函数决定。具体如下:

其中,

yji 是连续的被解释变量,X1i 和 X2i 是外生变量向量,β1β2 和 γ 是待估计的参数。三个方程中的干扰项 uiϵ1i 和 ϵ2i 满足零均值的联合正态分布,并且相关系数矩阵为:

其中,σu2 为选择方程中干扰项的方差,σj 为连续方程中干扰项方差,σju 为选择方程和连续方程干扰项的协方差。由于两种 yji 无法同时观测,因此没有定义二者干扰项之间的协方差。在给定方差的分布后,模型的对数似然函数为:

其中,

wi 是某种权重,ρj=σ1u2/σuσ1 是选择方程干扰项和连续方程干扰项的相关系数。为了将 ρj 的估计限定在 -1 到 1 之间,σj 始终为正,并且 ML 直接估计的是 lnσj,以及 atanh=12ln(1+ρj1ρj)

2.2 预测

除了参数估计外,内生转换模型还有一项重要的工作是预测不同状态下结果变量的情况。其中,无条件期望的预测为:

条件期望的预测为:

条件期望在部分情况下是对可观测结果的预测,但也包含了对不可观测情形下选择结果的预测。

3. 论文中的应用

3.1 差距估算

万相昱等 (2021) 对公共部门和私人部门的工资差距进行了估计。其内生转换模型为:

在估计了内生转换模型后,万相昱等 (2021) 又对部门工资的无条件期望进行了预测,进而得到公共部门和私人部门的拟合工资:

最后,近似计算了部门之间的工资差异。由于被解释变量是对数值,首先需要进行反对数计算:

3.2 估计处理效应

李亚娟和马骥 (2021) 使用内生转换模型,来估计采纳科学施肥技术处理组和控制组的平均处理效应。具体来看,分别用 Si 和 Yji 表示是否采纳科学施肥技术和不同选择下的收入,内生转换模型表示为:

根据估计结果,进一步应用内生转换模型预测了不同条件下的被解释变量。在可观测条件下,预测式是:

不可观测条件下,预测反事实:

从而可以定义处理组和控制组的平均因果效应:

文中还绘制了不同条件下的收入分布情况,可以直观表现采纳科学施肥技术对收入分布的影响效果,效果如下图。

4. 相关命令介绍

  • ounter(line
  • ounter(line
*命令安装ssc install movestay, replace
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
*命令语法movestay (depvar1 [=] varlist1) [(depvar2 [=] varlist2)] [weight] [if          exp] [in range] , select(depvar_s [=] [varlist_s]) [robust          cluster(varname) maximize_options]

其中,

  • (depvar1 [=] varlist1):设定连续方程 1 的形式;
  • [(depvar2 [=] varlist2)]:设定连续方程 2 的形式。仅当两个模型的解释变量存在冲突或被解释变量不同时设定;
  • select(depvar_s [=] [varlist_s]):设定选择方程的形式。该方程的估计基于两种解释变量,一种是连续方程中的所有外生变量,另一种是额外的工具变量,即必须至少加入一个连续方程中没有出现的变量;
  • robust/cluster:设定异方差稳健标准误或聚类稳健标准误;
  • maximize_options:设定最优化的选项。当模型不收敛或出现其它问题时,可以通过该选项调整模型。

上述命令设定连续方程形式和选择方程形式,当连续方程中加入的变量相同时,只需要设定一次。

内生转换模型估计结束后,可以使用 mspredict 进行预测。

  • ounter(line
  • ounter(line
*命令安装net install st0071_2, replace
  • ounter(line
  • ounter(line
*命令语法mspredict newvarname [if exp] [in range], statistic

5. Stata 范例

本例对应的研究是,在公共部门和私人部门就业对工资的影响。由于工资是就业部门选定后的结果,因此存在内生性问题。该模型的设定为:

其中,Ii 是个体选择的潜变量,lnwji 是在不同部门的工资对数值,Zi 是决定部门选择的因素,Xi 是影响部门工资的因素。可以观测的选择结果与潜变量之间的关系为:

直接估计该模型的问题是,可能存在不可观测的因素同时影响部门选择和个体工资,忽略这些选择效应很容易得出错误的结论。

本文使用的数据集中共包含了 12 个变量。其中,private 表示就业选择,如果个体在私有部门就业则取 1,否则取 0;被解释变量 lmo_wage 是月工资的对数值。估计连续方程使用的外生变量主要来自 Minser 方程,纳入年龄及其平方项 age-age2,教育水平虚拟变量 edu4edu5edu13,地区变量 reg2-reg4。估计选择方程使用的数据是婚姻情况 m_s1 和家庭成员就业情况 job_hold

首先使用 ML 估计内生转换模型:

  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
. lxhuse movestay_example.dta ,clear. movestay lmo_wage age age2 edu13 edu4 edu5 reg2 reg3 reg4, ///>     select(private = m_s1 job_hold) // 估计内生转换模型
Endogenous switching regression model Number of obs = 2094 Wald chi2(8) = 102.43Log likelihood = -2470.9304 Prob > chi2 = 0.0000------------------------------------------------------------------------------ | Coefficient Std. err. z P>|z| [95% conf. interval]-------------+----------------------------------------------------------------lmo_wage_1 | age | 0.042 0.029 1.45 0.147 -0.015 0.100 age2 | -0.001 0.000 -1.55 0.121 -0.001 0.000 edu13 | 0.344 0.279 1.23 0.219 -0.204 0.891 edu4 | -0.158 0.161 -0.98 0.326 -0.473 0.157 edu5 | -0.164 0.130 -1.26 0.207 -0.419 0.091 reg2 | -0.286 0.110 -2.61 0.009 -0.502 -0.071 reg3 | 0.708 0.143 4.96 0.000 0.428 0.987 reg4 | -0.138 0.141 -0.98 0.328 -0.416 0.139 _cons | 7.416 0.481 15.42 0.000 6.473 8.358-------------+----------------------------------------------------------------lmo_wage_0 | age | -0.037 0.011 -3.32 0.001 -0.059 -0.015 age2 | 0.000 0.000 2.91 0.004 0.000 0.001 edu13 | -0.507 0.089 -5.72 0.000 -0.680 -0.333 edu4 | -0.411 0.051 -8.08 0.000 -0.510 -0.311 edu5 | -0.297 0.039 -7.59 0.000 -0.374 -0.221 reg2 | -0.378 0.042 -8.99 0.000 -0.460 -0.296 reg3 | 0.705 0.053 13.26 0.000 0.601 0.810 reg4 | -0.236 0.047 -4.96 0.000 -0.329 -0.143 _cons | 9.322 0.238 39.21 0.000 8.856 9.788-------------+----------------------------------------------------------------private | age | -0.146 0.026 -5.62 0.000 -0.196 -0.095 age2 | 0.001 0.000 4.47 0.000 0.001 0.002 edu13 | 0.076 0.246 0.31 0.757 -0.406 0.558 edu4 | 0.069 0.142 0.49 0.626 -0.208 0.346 edu5 | 0.235 0.106 2.21 0.027 0.027 0.444 reg2 | -0.440 0.096 -4.59 0.000 -0.628 -0.252 reg3 | -0.596 0.119 -5.02 0.000 -0.829 -0.363 reg4 | -0.601 0.113 -5.33 0.000 -0.822 -0.380 m_s1 | 0.157 0.092 1.70 0.088 -0.024 0.338 job_hold | 0.055 0.036 1.53 0.127 -0.016 0.126 _cons | 2.505 0.579 4.33 0.000 1.371 3.640-------------+---------------------------------------------------------------- /lns1 | -.5903432 .0562427 -10.50 0.000 -.7005769 -.4801095 /lns2 | -.4220208 .0186565 -22.62 0.000 -.4585869 -.3854546 /r1 | .1456952 .3195504 0.46 0.648 -.480612 .7720024 /r2 | 1.353759 .0813975 16.63 0.000 1.194222 1.513295-------------+---------------------------------------------------------------- sigma_1 | .5541371 .0311662 .4962989 .6187156 sigma_2 | .6557204 .0122335 .6321763 .6801414 rho_1 | .144673 .3128621 -.4467336 .6480923 rho_2 | .8749375 .0190864 .8318838 .907522------------------------------------------------------------------------------LR test of indep. eqns. : chi2(1) = 86.94 Prob > chi2 = 0.0000------------------------------------------------------------------------------

可以看出,Stata 同时汇报了两个连续方程和选择方程的估计结果。我们可以根据系数的显著性解读模型结果,进而确定哪些因素影响了私人、公共部分的工资以及个体关于就业部门的选择。不过,更为重要的是通过预测来估算部门间的工资差距和处理效应。

首先进行无条件预测,并估计部门之间的工资差异。根据计算结果可知,私人部门的工资比公共部门高 0.012 个水平值。

  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
. mspredict lnwage1, xb1             // 私人部门的对数工资. mspredict lnwage0, xb2             // 公共部门的对数工资. tempvar w_np w_p. gen `w_p' = exp(lnwage1)           // 私人部门工资反对数值. gen `w_np' = exp(lnwage0)          // 公共部门工资反对数值. gen w_diff = (`w_np'-`w_p')/`w_p'  // 个体工资差异. qui sum w_diff                     // 求平均工资差异. dis "私人部门与公共部门的工资差异为:`r(mean)' "
私人部门与公共部门的工资差异为:.0117846367684842

接下来进行条件预测潜在结果,并估计 ATT 和 ATUT。可以看出,二者的估计结果分别为 -0.765 和 0.133,即进入私人部门的个体如果在公共部门工作,平均收入可能上升。

  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
. mspredict yc11, yc1_1          // 私人部门工作的个体在私人部门就业收入的预测. mspredict yc10, yc1_2          // 公共部门工作的个体在私人部门就业收入的预测. mspredict yc01, yc2_1          // 私人部门工作的个体在公共部门就业收入的预测. mspredict yc00, yc2_2          // 公共部门工作的个体在公共部门就业收入的预测. qui sum yc11. local yc11_m = r(mean). qui sum yc01. local yc01_m = r(mean). dis "ATT = mean(yc11) - mean yc(01) = " `yc11_m'-`yc01_m'ATT = mean(yc11) - mean yc(01) = -.76548519
. qui sum yc10. local yc10_m = r(mean). qui sum yc00. local yc00_m = r(mean). dis "ATT = mean(yc10) - mean yc(00) = " `yc10_m'-`yc00_m'ATT = mean(yc10) - mean yc(00) = .13282834

最后可以应用如下代码绘制不同分组的收入密度函数图像,来进行直接比较。

  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
  • ounter(line
kdensity yc11,legend(label(1 "kdensity of y11") label(2 "kdensity of y01") col(2)) ///    title("") xtitle("") addplot(kdensity yc01,lp(dash)) saving(graph1.gph,replace)kdensity yc10,legend(label(1 "kdensity of y10") label(2 "kdensity of y00") col(2)) ///    title("") xtitle("") addplot(kdensity yc00,lp(dash)) saving(graph2.gph,replace)	 graph combine graph1.gph graph2.gph ,cols(1)

6. 参考文献

  • Lokshin M, Sajaia Z. Maximum likelihood estimation of endogenous switching regression models[J]. The Stata Journal, 2004, 4(3): 282-289. -PDF-
  • 万相昱, 唐亮, 张晨. 公共部门和非公共部门劳动力收入差距研究——基于内生转换模型的实证检验[J]. 产业经济评论, 2021(02): 93-105. -Link-
  • 李亚娟, 马骥. 科学施肥技术的收入效应差异分析——基于粮农初始禀赋的实证估计[J]. 农业技术经济, 2021(07): 18-32. -Link-

7. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh 内生, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

相关课程

免费公开课

最新课程-直播课

专题 嘉宾 直播/回看视频
最新专题 文本分析、机器学习、效率专题、生存分析等
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]
  • Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。

课程主页

课程主页

关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 连享会-主页知乎专栏,700+ 推文,实证分析不再抓狂。直播间 有很多视频课程,可以随时观看。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会-常见问题解答:
https://gitee.com/lianxh/Course/wikis

New! lianxhsongbl 命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh