STATA Tidbits I:识别政策变动

前言

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

bysort provid (wave):
gen matching_policy_change = (e[_n] != e[_n-1])

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

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.

本文分享自微信公众号 - 一点ECON(little_econ)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-10-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券