查看原文
其他

小罗肥归升级啦|解锁Stata17之新命令xtmlogit

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:戴   雯,中南财经政法大学金融学院

本文编辑:陈梦华

技术总编:李婷婷

Stata&Python云端课程来啦!

好雨知时节,当春乃发生。为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~原价2400元的Python编程培训课程,现在仅需100元,详情请查看推文《Python云端课程福利大放送!0基础也能学~》。关于Stata,爬虫俱乐部推出了系列课程,内容包括字符串函数、正则表达式、爬虫专题和文本分析,可以随心搭配,价格美丽,物超所值,更多信息可查看Stata系列推文《与春天有个约会,爬虫俱乐部重磅推出正则表达式网络课程!》《与春天有个约会,爬虫俱乐部重磅推出基本字符串函数网络课程》等。变的是价格,不变的是课程质量和答疑服务。对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦!

导读
离散选择模型(discrete choice model)是微观计量经济学的常用模型。在Stata 17中,增加了以下离散选择模型的新命令:xtmlogit(面板多项logit模型)和 ziologit(零膨胀排序logit模型)。今天,我们就来学习一下 xtmlogit 命令,废话不多说,马上上车~
对于横截面数据的多项logit模型,Stata已有mlogit命令;而对于面板数据而言,此前Stata只能使用xtlogitxtprobit估计面板二值选择模型。Stata 17新增的xtmlogit命令则可使用面板数据估计多项logit模型,这无疑是Stata在离散选择模型方面的一大进步!!!
本文将通过一个简单的例子——估计家庭中有无18岁以下的子女对妇女就业状况的影响,为大家展示 xtmlogit 的魅力。
数据描述
本案例的数据集是一个典型的面板数据,包含了800位妇女在18-40岁之间的相关变量特征,变量如下:
被解释变量estatus是妇女当下的就业状况,包括「1.非劳动力(out of the labor force);2.失业(但仍在找工作)(unemployed);3.在职(employed)」。
解释变量包括家中是否有18岁以下的孩子hhchild(虚拟变量:1.是;0.否)、家庭年收入hhincome(连续变量)、配偶是否在家中居住hhsigno(虚拟变量:1.是;0.否)、是否是家庭中唯一(或主要)的劳动力bwinner(虚拟变量:1.是;0.否)、年龄age(连续变量)。
  • 通过 list命令查看数据集的构成情况:

use https://www.stata-press.com/data/r17/estatuslist id year estatus hhchild age in 22/41, sepby(id) noobs

上表中id为5的女性,在2002年到2008年一直有工作,2010-2012年是非劳动力,在2014年被访谈之前处于失业但正在找工作的状态。从变量hhchild的记录结果中可知,该女性在2002年家里有18岁以下的孩子,在2004年到2014年之间家里没有18岁以下的孩子。从变量age中可以看出该女性被观察的年龄在38到50岁之间。
  • 通过 tab命令对变量estatus进行描述性统计:

tabulate estatus

结果表明,有35%的女性表示她们是非劳动力,15%的女性失业(仍在找工作),50%的女性在职。
模型估计

1. 直接估计

我们采用xtmlogit命令估计多元回归模型。hhchildhhsignobwinner变量前的i.标识表明该变量为虚拟变量,这里默认将「就业状态为在职」作为基准组,如果想指定一个不同的类别作为基准组,可使用baseoutcome()选项。
xtset id //声明面板数据xtmlogit estatus i.hhchild age hhincome i.hhsigno i.bwinner
表头显示,估计样本由来自800组(800名女性)的4761个观测值组成,每组有5到7个观测值。
模型估计的输出结果主要包括 Out_of_labor_force 和 Unemployed 两部分 ( Employed 是基准组) 。实质上,多元 logit 模型可视为 estatus 变量中的 3 种就业状态两两配对后构成的 2 个二元 logit 模型实施联合估计 。这里的估计系数是胜算比对数(log odds),胜算比(odds)表示事件A出现的次数与非A事件出现的次数之比(P/1-p)。
Out_of_labor_force 部分hhchild的估计系数约为0.46。因此,我们可以说,与家庭中没有18岁以下孩子(hhchild=0)的妇女相比,有孩子(hhchild=1)的妇女就业状态为非劳动力相对于在职的胜算对数比(log odds)将增加0.46;通俗地说,与在职的女性相比,家庭中有18岁以下孩子的妇女比没有孩子的妇女更有可能是非劳动力。

2. 使用胜算比(rrr)进行估计

可以看出,这种估计系数(胜算比对数)的经济含义解释显然不够直观。

一种更有用的方法是直接使用胜算比(odds),即处于非劳动力(out of the labor force)或失业状态(unemployed)的概率与处于在职状态(基准组)的概率的比值,这一比值也称为相对风险比(relative-risk ratios),可以通过对估计系数取幂得到。在Stata中加入 rrr选项,即可得到相对风险比。
xtmlogit estatus i.hhchild age hhincome i.hhsigno i.bwinner, rrr

加入rrr选项后, Out_of_labor_force 部分hhchild的相对风险比(RRR)约为1.6,表明与家庭中没有18岁以下孩子的妇女相比,有18岁以下孩子的妇女就业状态为非劳动力的相对风险是在职情况下相对风险的1.6倍。这样做虽然可以为我们提供更多的信息,但仍然不够直观。

3. 用margins命令预测概率值

由于解释变量的系数值始终不能直接代表该变量对因变量的边际效应值,解释起来也具有挑战性,我们可以借助 margins命令获得样本内的预测概率。
margins hhchild

从在职(Employed)的结果中可以看出,在有18岁以下孩子的家庭中,女性在职的平均预测概率约为0.47,而在没有18岁以下孩子的家庭中,这个概率约为0.53。因此,如果没有年幼的孩子和她们住在一起,女性在职的概率会更高;也就是说,如果家里没有18岁之下的孩子,女性在职的概率会比家中有孩子的高7%。这样解释起来是不是清晰了很多!
在变量前加上 r.可以直接计算这种差异:
margins r.hhchild

呈现结果时利用图表会更加一目了然。我们采用 marginsplot命令绘制了 hhchild 对不同 estatus 类别的预测概率图。其中marginsplot命令绘制的散点图是基于前面执行的margins命令,在margins命令中添加at选项可以看出相关概率随着家庭收入hhincome变化的变化,如下图所示。
quietly margins hhchild, at(hhincome=(20(20)100))marginsplot, by(_predict, label("Out of labor force" "Unemployed" "Employed"))///byopts(rows(1) title("Marginal probabilities of employment status"))///legend(order(4 "Child under 18 at home" 3 "No child under 18 at home"))
如此一来,家中是否有18岁以下的孩子对女性就业的影响就十分明了了!从图中可以看出,家中有18岁以下孩子的女性是非劳动力的概率比无孩子的女性更大,且家庭收入的变化对两者概率的差值影响不大;家中有18岁以下孩子的女性暂时失业但仍在找工作的概率比无孩子的女性更小,且这种概率差值随着家庭收入的增加而减小;家中有18岁以下孩子的女性在职的概率比无孩子的女性更小,且这种概率差值随着家庭收入的增加而增加。
xtmlogit的发布给Stata中离散选择模型带来了double倍升级,用面板数据估计多项logit模型再也不用愁!Stata作为实证研究中不可替代的软件,使用感着实是越来越优秀了,是科研党的福音!
最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。

欢迎大家点赞、评论、转发哟~

对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!

往期推文推荐
       
速度大比拼之Stata17有多快?

初识PyStata

辞旧迎新——Stata17之Do-file编辑器优化

Stata17新亮点——解放表格输出生产力

【爬虫+可视化】链家网北京租房信息

 手把手教你如何获取股票数据和可视化

  Countvalues——数数的超级小帮手

         frame框架进阶篇

 下拉选择框如何变成“小猫咪” | selenium小技巧

  Python中的运算符知多少?

  快来get缺失值的正确打开方式

  frame框架——我到底在哪个“房间”

如何使用Pandas读取txt文件?

基于MySQL数据库实现增量式爬取

寻找春日气息|本月最受欢迎的景点都在这里!

问世间情为何物,大数据也想参悟——后考研时代,何以解忧?唯有数据!

Python与数据库交互—浅述pymysql

偷懒小妙招|selenium之玩转鼠标键盘操作--鼠标篇

大家用Stata来“找茬”

“粉墨登场”——多期双重差分法(DID)的Stata操作

Python与百度地图合璧,绘制棒呆的热力地图

【数据可视化】统计图绘制神器:Seaborn

检索Stata推文的“任意门”学会了这些,分分钟提升你的毕业体验

【爬虫实战】双一流大学的月关注度

【爬虫实战】“中国人不吃这一套”——人民日报微博评论分析

关于我们 


微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。



此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存