前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >STATA Tidbits I:识别政策变动

STATA Tidbits I:识别政策变动

作者头像
宋彦
发布2019-07-03 17:10:14
1.3K0
发布2019-07-03 17:10:14
举报
文章被收录于专栏:一点ECON一点ECON

前言

STATA Tidbits 将讨论STATA使用中的一些小技巧。

智库工作中常常需要分析某一类型的政策变动带来的影响。这一工作的前提就是从数据中找出政策改变的年份。下图为中国各省高考录取制度的数据库,其中的e变量代表了高考志愿填报中每个考生可以填报的平行志愿的数量。在2003年之前,各省只允许每个考生填写一个志愿,而从2003年开始,各省纷纷开始对这一政策进行改革,逐渐增加了平行志愿的数量。如果我们想要知道各省都是在哪些年份进行的改革,以及进行过几次改革,该如何在Stata里面实现呢?本文将提供一个使用STATA的 _n operator的解决方案。

STATA _n operator

找到政策开始变动年份

_n_N 是STATA系统自带的变量, _n代表的是目前这个观测值的排位,而N代表的是数据中的观测值的总数。我们经常使用n来找出靠近的观察值,例如 gen gdp_lag=gdp[_n-1]可以得到前一个观察值的GDP。

而我们可以把 bysort_n结合在一起使用,来达到识别政策变动的目的。我们只需要规定,在每个省内,按照年份排序后,当前观察值和前一个观察值的平行志愿数量不同时,我们即认为改革在该年份开始。

代码语言:javascript
复制
bysort provid (wave):
gen matching_policy_change = (e[_n] != e[_n-1])

通过上述代码,我们发现,总计有54次改革发生。然而,这样的计算结果是错误的。原因在于,STATA对于缺失值的处理。当我们在检查每个省份内的第一个变量时,即 _n==1时,前一个观察值并不存在,因此STATA认为 e[0]=.,因此 e[1]!=e[0],从而错误地将每一个省份的第一个观察值认为是改革开始的年份。我们只需要简单地修改上述代码即可得到正确的结果:

代码语言:javascript
复制
bysort provid (wave):gen matching_policy_change = 
(e[_n] != e[_n-1]) & e[_n-1]!=.

正确的改革次数因为24次。然而,这并不意味着有24个省份进行了改革,有些省份可能进行了多次改革,而我们的程序允许这种情况的出现。

Reference:

Cox, N. J. (2007). Speaking stata: Identifying spells. Stata Journal, 7(2), 249-265.

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-10-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一点ECON 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • STATA _n operator
      • 找到政策开始变动年份
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档