楼主: r7mickey
18240 30

[面板数据求助] 求救:多期DID安慰剂检验出现问题:( [推广有奖]

  • 2关注
  • 0粉丝

本科生

81%

还不是VIP/贵宾

-

威望
0
论坛币
8 个
通用积分
0.9439
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
456 点
帖子
6
精华
0
在线时间
250 小时
注册时间
2010-11-9
最后登录
2025-7-7

楼主
r7mickey 发表于 2022-1-5 11:30:18 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
求助各位大牛:
      学习了连玉君老师以及B站两位UP主的视频,自己进行了多期DID,样本总数是165个,其中实验组59个。由于用的季度数据,在安慰剂检验时,季度时间无法识别,所以时间那里进行了转换,那里应该没有问题。代码如下,可是到最后画图的时候,失败了,附上图形,然后查看了下生成的三个矩阵,每个里面的数是一样的,应该是这里出问题了,可是怎么也检查不出问题了,求助大牛能给予指点!
mat b = J(500,1,0)
mat se = J(500,1,0)
mat p = J(500,1,0)
forvalues i = 1/500{
use "C:\Users\86186\Desktop\安慰剂检验\1.dta", clear
xtset id TIME
keep if TIME==21275 //这里是季度时间无法识别,进行了转换
sample 59,count
keep id
save matchid.dta,replace
merge 1:m id using "C:\Users\86186\Desktop\安慰剂检验\1.dta"
gen treat1=(_merge==3)
save matchid`i'.dta,replace
use "C:\Users\86186\Desktop\安慰剂检验\1.dta", clear
bsample 1,strata(id)
keep TIME
save matchyear.dta,replace
mkmat TIME,matrix(sampleTIME)
use matchid`i'.dta,replace
xtset id TIME
gen time=0
foreach j of numlist 1/165{
replace time=1 if (id == `j' & TIME >= sampleTIME[`j',1])
}
gen did=treat*post
qui xtreg ROA did ncfo shr npms goper Asset age tp,fe r
mat b[`i',1] = _b[did]
mat se[`i',1] = _se[did]
scalar df_r = e(N) - e(df_m) -1
mat p[`i',1] = 2*ttail(df_r,abs(_b[did]/_se[did]))
}
svmat b, names(coef)
svmat se, names(se)
svmat p, names(pvalue)

drop if pvalue1 == .
label var pvalue1 p值
label var coef1 估计系数

twoway (scatter pvalue1 coef1, xlabel(-1(0.1)1, grid) yline(0.1,lp(shortdash)) xline(0.12,lp(shortdash)) xtitle(估计系数) ytitle(p值) msymbol(smcircle_hollow) mcolor(blue) legend(off))(kdensity coef1,title(安慰剂检验))



结果啊啊啊








二维码

扫码加我 拉你入群

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

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

关键词:DID 安慰剂 Stata 多期DID 安慰剂检验

回帖推荐

Carrie_xgb 发表于8楼  查看完整内容

replace time=1 if (id == `j' & TIME >= sampleTIME[`j',1]) } gen did=treat*post //问题应该出在这里 qui xtreg ROA did ncfo shr npms goper Asset age tp,fe r 这里应该新生成一个did项放入回归模型,用虚拟的处理组treat1与time相乘得到,即应该将gen did = treat*post 改成 gen did1=treat1*time;qui xtreg ROA did ...也要改成qui xtreg ROA did1 ... did项没有变化的话,所有的回归肯定还是和基准回归结果一样的呀 ...

沙发
uxk652108 发表于 2022-1-26 16:07:59
我也遇到同样的问题,问题应该是在  foreach j of numlist 1/165{
replace time=1 if (id == `j' & TIME >= sampleTIME[`j',1])
}    这里,会一直显示    (0 real changes made)     ,然后就没有回归结果,画图就是空白,但是我也还没有找到解决方法。。。。

藤椅
zhengyihope 发表于 2022-2-26 12:14:41
连老师的什么课程讲解了多期did,我没有找到,求告知

板凳
别再掉头发了 学生认证  发表于 2022-3-10 23:49:11
请问解决了吗,我也是这个情况

报纸
海贼王的大肉棒 发表于 2022-4-11 00:09:25
请问楼主和其他小伙伴解决了嘛~遇到了同样问题

地板
13663722193 发表于 2022-4-21 22:44:18
zhengyihope 发表于 2022-2-26 12:14
连老师的什么课程讲解了多期did,我没有找到,求告知
建议同时观看连玉君老师的帖子https://www.lianxh.cn/news/0a63a4fb8eb70.html以及B站一位up的视频https://b23.tv/kdFjdW,很详细

7
Danny0215 学生认证  发表于 2022-4-27 16:35:09
13663722193 发表于 2022-4-21 22:44
建议同时观看连玉君老师的帖子https://www.lianxh.cn/news/0a63a4fb8eb70.html以及B站一位up的视频https: ...
并不是很详细啊....

8
Carrie_xgb 发表于 2022-7-15 15:36:16
replace time=1 if (id == `j' & TIME >= sampleTIME[`j',1])
}
gen did=treat*post  //问题应该出在这里
qui xtreg ROA did ncfo shr npms goper Asset age tp,fe r
这里应该新生成一个did项放入回归模型,用虚拟的处理组treat1与time相乘得到,即应该将gen did = treat*post 改成 gen did1=treat1*time;qui xtreg ROA did ...也要改成qui xtreg ROA did1 ...  did项没有变化的话,所有的回归肯定还是和基准回归结果一样的呀

9
chi19990313 发表于 2022-8-17 11:29:37
楼主解决了么?为什么我修改完之后,结果还是跟你贴的图结果一样?

10
wsxka 学生认证  发表于 2022-9-28 17:18:44
uxk652108 发表于 2022-1-26 16:07
我也遇到同样的问题,问题应该是在  foreach j of numlist 1/165{
replace time=1 if (id == `j' & TIME  ...
我也遇到了同样的问题,请问同学你解决了吗

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-5 21:29