楼主: 冰清玉树
14308 18

[程序分享] Stata实证:安慰剂检验的代码实现 [推广有奖]

讲师

42%

还不是VIP/贵宾

-

威望
1
论坛币
6145 个
通用积分
258.5203
学术水平
20 点
热心指数
22 点
信用等级
20 点
经验
822 点
帖子
132
精华
0
在线时间
319 小时
注册时间
2019-3-11
最后登录
2024-4-17

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

Stata实证:安慰剂检验的代码实现

安慰剂检验常作为稳健性检验的内容,在DID模型中比较常见。安慰剂检验最早来自医学方法,在医学实验中,假如要测试某种新药的效果,为了排除“霍桑效应”,即排除参与实验的人员知道自己在实验组或者对照组而产生的心理差异而导致的对药效结果的影响,实验过程中会让所有参与实验人员服用“新药物”,当然,实验组服用的真正的“新药物”,而对照组的人员服用的是不会产生任何影响的“假药物”。

在计量实证中,也采用了这种思想,如,在因果识别中,为了识别某种政策或者冲击的影响,随机指定对照组与实验组,然后观测主要变量(交互项)的系数的分布情况,如果其核密度曲线为均值接近0的近似正态分布的曲线,则认为原有结果是稳健的,而不是随机的结果。换句话说,如果随机假设实验组与对照组,得到的结果仍与原有结果一致,不是证明,其实不是研究的政策或者冲击的影响吗?

任胜钢,郑晶晶,刘东华,陈晓红. 排污权交易机制是否提高了企业全要素生产率

———来自中国上市公司的证据. 中国工业经济 201955-23一文中就有安慰剂检验。其结果如下图所示:(图略,见下方word文件)

综上,我们可以了解到安慰剂检验的思想,就是打乱实验组与对照组,因此,本文将采取案例教学的方式,教大家使用stata实现安慰剂检验。


案例:如下表所示,案例文件panels.dta包含了30个省市的2004-2017年共计14年的面板数据,其中y为被解释变量,x为主要的解释变量,x1-x7为控制变量。

(1)我们将采用面板固定效应模型对模型进行估计,然后进行安慰剂检验,为了简化过程,我们将只做省份固定效应的回归,而略去加入时间固定效应的双向固定效应的回归与安慰剂检验(本质上依然一样)可留作读者自行修改代码实现。主要实现方法是打乱主要的解释变量x再进行回归,重复以上步骤1000次,然后观察系数分布情况。


(2)我们将使用DID模型,再重复一次,为了保证DID交互项的显著性,我们将首先设定一个政策冲击,将政策冲击年份设定为2014年,并指定10个省市为实验组(id为3的倍数),并对受政策冲击的省份的y都加上2,其余为对照组,不做任何处理。首先,我们将回归展示基准结果,然后,我们将随机打乱实验组与对照组,重复以上步骤1000次,然后观察系数分布情况。(注,此处主要解释变量不再是x而是交互项系数)。

另外,注:若do文件发生乱码,使用Windows自带的记事本打开do文件,然后复制出其中代码粘贴至stata新建空白do文件即可。

stata安慰剂检验实践.rar (1.26 MB, 需要: 5 个论坛币)



stata实证安慰剂检验的代码实现.docx (377.96 KB)




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Stata tata 安慰剂 Windows Panels

回帖推荐

1640012986 发表于3楼  查看完整内容

已用其他账号购买压缩包 请问 replace Di=0 replace Di=1 if mod(random_id,3)==0 这个命令适用于其他政策实验组吗 我看您最开始生成的Di,就是根据能被3整除的id而生成的 但我的实验组是根据实际政策实施地而分的 谢谢您啦
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
白杨九 + 5 + 5 + 5 + 5 精彩帖子

总评分: 论坛币 + 5  学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

沙发
冰清玉树 发表于 2021-5-17 16:06:09 来自手机 |只看作者 |坛友微信交流群
冰清玉树 发表于 2021-5-17 15:53
Stata实证:安慰剂检验的代码实现安慰剂检验常作为稳健性检验的内容,在DID模型中比较常见。安慰剂检验最早 ...
欢迎在下方评论。

使用道具

藤椅
1640012986 发表于 2021-6-8 00:10:39 |只看作者 |坛友微信交流群
已用其他账号购买压缩包
请问
replace Di=0
replace Di=1 if mod(random_id,3)==0
这个命令适用于其他政策实验组吗
我看您最开始生成的Di,就是根据能被3整除的id而生成的
但我的实验组是根据实际政策实施地而分的
谢谢您啦

使用道具

板凳
冰清玉树 发表于 2021-6-9 11:15:23 来自手机 |只看作者 |坛友微信交流群
1640012986 发表于 2021-6-8 00:10
已用其他账号购买压缩包
请问
replace Di=0
        不一定适合,主要看你想让多少个id进入实验组。指定进入实验组的id的规则其实可以很多种,并不影响随机性,这里案例原定的就是id能被三整除的为实验组,所以为了简便,打乱后可以依旧采用原有规则,其实也可以使用新规则,只要保证随机即可。<br>
       如果你想根据自己实际的分组来,其实可以按原定的方式指定实验组,只要把实验组的id打乱即可。打乱实验组与对照组的思路有很多,目的无非是打乱实验组与对照组原有所对应的id分组关系。<br>
      这里的方法是依然按原有方法指定特定的id数字进入实验组,但是随机打乱各组的id。你也可以不用打乱原有id,但是打乱进入实验组id的数字。当然,也可以同时打乱id与进入实验组的id的数字。这些操作可以说本质上依旧是一样的,都会打乱原有的对应关系。<br>
    楼主采用打乱id的方式,是觉得这方法灵活性比较高。打乱id后,其实你可以按任意方式选择进入实验组id的规则。例如,本案例中,还可以指定id为1-10的进入实验组。假如你实际的情况,总体id有100个,需要指定15个id进入实验组,可以直接选择id为1-15的样本进入实验组,结果仍然是随机的。
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
henryliberty + 5 + 5 + 5 + 5 感谢作者如此热诚的分享

总评分: 论坛币 + 5  学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

使用道具

报纸
冰清玉树 发表于 2021-8-21 13:01:53 |只看作者 |坛友微信交流群
https://bbs.pinggu.org/thread-10721455-1-1.html这里改进了打乱实验组对照组的方法,感兴趣可以去看看。

使用道具

地板
努力努力加 发表于 2021-9-5 23:43:19 来自手机 |只看作者 |坛友微信交流群
冰清玉树 发表于 2021-5-17 15:53
Stata实证:安慰剂检验的代码实现安慰剂检验常作为稳健性检验的内容,在DID模型中比较常见。安慰剂检验最早 ...
倾向得分匹配的安慰剂检验该如何操作呢

使用道具

7
冰清玉树 发表于 2021-9-6 15:57:36 |只看作者 |坛友微信交流群
努力努力加 发表于 2021-9-5 23:43
倾向得分匹配的安慰剂检验该如何操作呢
三步走,
1、随机打乱实验组对照组
2、PSM匹配
3、DID回归,并记录回归系数、p值等参数,然后绘图。
根据这个思想,然后修改楼主程序即可。

使用道具

冰清玉树 发表于 2021-6-9 11:15
不一定适合,主要看你想让多少个id进入实验组。指定进入实验组的id的规则其实可以很多种,并不影 ...
楼主您好,你选择3的倍数10个进入,代码为if mod(id,3)==0,如果我想制定多少个,比如11个进入,代码应该怎么写啊,谢谢。

使用道具

9
冰清玉树 发表于 2021-9-22 20:52:18 |只看作者 |坛友微信交流群
你是一头猪母 发表于 2021-9-22 15:52
楼主您好,你选择3的倍数10个进入,代码为if mod(id,3)==0,如果我想制定多少个,比如11个进入,代码应该 ...
直接任选11个,结果一样,都是随机打乱了,所以可以直接选1-11.

使用道具

10
你是一头猪母 发表于 2021-9-24 09:05:59 来自手机 |只看作者 |坛友微信交流群
冰清玉树 发表于 2021-9-22 20:52
直接任选11个,结果一样,都是随机打乱了,所以可以直接选1-11.
这一行的代码具体应该怎么写呢?还有就是我每次都是随机进入,没有确定多少个样本,但是我的真实值完全不在安慰剂检验的值里面,这是对的吗?谢谢!

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 18:49