双重差分DID平行趋势检验中 完全共线性及coefplot画图问题 解决方法-经管之家官网!

人大经济论坛-经管之家 收藏本站
您当前的位置> 考研考博>>

考研

>>

双重差分DID平行趋势检验中 完全共线性及coefplot画图问题 解决方法

双重差分DID平行趋势检验中 完全共线性及coefplot画图问题 解决方法

发布:smztsmzt | 分类:考研

关于本站

人大经济论坛-经管之家:分享大学、考研、论文、会计、留学、数据、经济学、金融学、管理学、统计学、博弈论、统计年鉴、行业分析包括等相关资源。
经管之家是国内活跃的在线教育咨询平台!

经管之家新媒体交易平台

提供"微信号、微博、抖音、快手、头条、小红书、百家号、企鹅号、UC号、一点资讯"等虚拟账号交易,真正实现买卖双方的共赢。【请点击这里访问】

提供微信号、微博、抖音、快手、头条、小红书、百家号、企鹅号、UC号、一点资讯等虚拟账号交易,真正实现买卖双方的共赢。【请点击这里访问】

如何解决双重差分DID平行趋势检验中完全共线性及coefplot画图问题按照目前网上推荐的常见做法进行DID平行趋势检验时,如果数据库(平衡面板数据)所有时点均编码且参与模型运算会出现共线性问题,如果指定某一时点不 ...
免费学术公开课,扫码加入


如何解决 双重差分DID平行趋势检验中 完全共线性及coefplot画图问题
按照目前网上推荐的常见做法进行DID平行趋势检验时,如果数据库(平衡面板数据)所有时点均编码且参与模型运算会出现共线性问题,如果指定某一时点不纳入模型会在后期使用coefplot命令绘制图形无法加入该时点,以下给出另外一种思路进行平行趋势检验,同时解决相关问题。如有不当,请指正。
  1. /*
  2. 如何解决 双重差分DID平行趋势检验中 完全共线性 及 coefplot绘制被剔除变量的问题
  3. 以 爬虫俱乐部 2017-06-02 的帖子数据为例
  4. Author:ypp
  5. Date:2018-12-10
  6. */

  7. // 生成平衡面板数据
  8. clear
  9. set more off
  10. set obs 200
  11. set seed 123456789

  12. gen Treat=(uniform()<=0.6)

  13. //bysort Treat: gen int group=(uniform()+0.2)*90+Treat*90+1 // 原帖此处生成的是非平衡面板
  14. gen group=_n // 以下生成平衡面板数据
  15. gen test=10 // 每个个体10年的记录
  16. expand test
  17. sort Treat group
  18. drop test

  19. bysort group: gen year=2016-_n+1 // 2007年-2016年

  20. gen Post=(year>=2012) // 2012年 实验组 Treat=1 受到一个外生政策影响
  21. gen y=ln(1+uniform()*100)
  22. replace y=y + ln(uniform()*10+rnormal()*3) if Treat==1 & Post==1 // 受rnormal影响有缺失值
  23. gen x1=rnormal()*3
  24. gen x2=rnormal()+uniform()

  25. gen Dyear=year-2012

  26. // 方法一:以下代码按照网络推荐的普遍做法 将Dyear与Treat=1设置交互项 数据库里所有年份都设置
  27. gen Before5=(Dyear==-5 & Treat==1) // 2007年
  28. lab var Before5 "5 Year Prior"

  29. gen Before4=(Dyear==-4 & Treat==1) // 2008年
  30. lab var Before4 "4 Year Prior"

  31. gen Before3=(Dyear==-3 & Treat==1) // 2009年
  32. lab var Before3 "3 Year Prior"

  33. gen Before2=(Dyear==-2 & Treat==1) // 2010年
  34. lab var Before2 "2 Year Prior"

  35. gen Before1=(Dyear==-1 & Treat==1) // 2011年
  36. lab var Before1 "1 Year Prior"

  37. gen Current=(Dyear==0 & Treat==1) // 2012年
  38. lab var Current "Year of Adoption"

  39. gen After1=(Dyear==1 & Treat==1) // 2013年
  40. lab var After1 "1 Year After"

  41. gen After2=(Dyear==2 & Treat==1) // 2014年
  42. lab var After2 "2 Year After"

  43. gen After3=(Dyear==3 & Treat==1) // 2015年
  44. lab var After3 "3 Year After"

  45. gen After4=(Dyear==4 & Treat==1) // 2016年
  46. lab var After4 "4 Year After"

  47. xtset group year

  48. // After4因为完全共线性被自动剔除 2016年因为完全共线性被自动剔除
  49. // Treat为个体异质性不随时间变化被自动剔除
  50. xi:xtreg y Treat Post Before5 Before4 Before3 Before2 Before1 Current ///
  51. After1 After2 After3 After4 x1 x2 i.year,fe vce(robust)
  52. est store reg1_1

  53. // 不包含Current在模型,After4不因为完全共线性被自动剔除 其他变量自动剔除原因同上模型
  54. // 没有包含在模型的Current在后续coefplot绘图中难以绘制 被模型自动剔除的可以绘制
  55. xi:xtreg y Treat Post Before5 Before4 Before3 Before2 Before1 ///
  56. After1 After2 After3 After4 x1 x2 i.year,fe vce(robust)
  57. est store reg1_2

  58. // 方法二:以下方法可以解决coefplot绘制时无法加入current的问题 结果同reg1_2
  59. // 这种方法适用于平衡面板,所有时间全部编码并参与模型运算

  60. tabulate Dyear,gen(ytest)
  61. replace ytest6=0 // 2012年 对应上述方法的Current当Treat=1时
  62. tabulate ytest6 Current if Treat==1,m

  63. // 参考本论坛《倍差法(双重差分 DID)的推导与扩展》帖子中的多期两组DID模型推导
  64. // 与标准的DID模型一致 纳入Treat Time Treat#Time 普通DID模型中Time为两期,在平行趋势检验中Time为多期
  65. // 1.ytest6作为参照组被自动剔除 ytest6#Treat作为参照组被自动剔除
  66. xtreg y i.Treat /// // Treat为组别变量 标示干预组 对照组
  67. i.ytest1 i.ytest2 i.ytest3 i.ytest4 i.ytest5 i.ytest6 i.ytest7 i.ytest8 i.ytest9 i.ytest10 /// // ytest为干预时点变量 标示干预前后每个时点 包含干预当期 不需纳入Post变量
  68. i.ytest1#i.Treat i.ytest2#i.Treat i.ytest3#i.Treat i.ytest4#i.Treat i.ytest5#i.Treat /// // ytest和Treat的交互项 干预每个时点和组别的交互项
  69. i.ytest6#i.Treat i.ytest7#i.Treat i.ytest8#i.Treat i.ytest9#i.Treat i.ytest10#i.Treat ///
  70. x1 x2 /// // 其他控制的协变量
  71. ,fe vce(robust)
  72. est store reg2

  73. /*
  74. 比较模型reg1_2和reg2
  75. reg2中ytest1#Treat的系数与标准误 与 reg1_2中的Before1完全一致 都是-1.686,0.204
  76. 同理,reg2中其他ytest?#Treat的交互项 与 reg1_2中对应的Before或者After完全一致
  77. 两个模型 x1 x2 估计结果也一致
  78. reg2中1.ytest? 与 reg1_2对应的年份估计结果不一致 因为参照标准不一样 且 除对照年份外其他年份没有被剔除
  79. re2中无需纳入Post变量,reg1_2中不纳入Post变量,其他参数估计结果也无变化
  80. */

  81. // 在轴属性中查看"编辑或添加单个刻度和标签" ,可以看见所有的干预时点都在图形中包括参照组
  82. coefplot reg2, drop (0.ytest6 1.ytest1 1.ytest2 1.ytest3 1.ytest4 1.ytest5 1.ytest7 1.ytest8 1.ytest9 1.ytest10 x1 x2 1.Treat _cons) ///
  83. vertical recast(connect) yline(0) omitted

  84. /*
  85. 综上,按照多期两组模型来检验平行趋势更好 参考本论坛《倍差法(双重差分 DID)的推导与扩展》
  86. 一是便于理解 与 普通两期两组模型理解完全一致
  87. 二是不会出现共线性问题
  88. 三是方便绘制图形
  89. */
复制代码
「经管之家」APP:经管人学习、答疑、交友,就上经管之家!
免流量费下载资料----在经管之家app可以下载论坛上的所有资源,并且不额外收取下载高峰期的论坛币。
涵盖所有经管领域的优秀内容----覆盖经济、管理、金融投资、计量统计、数据分析、国贸、财会等专业的学习宝库,各类资料应有尽有。
来自五湖四海的经管达人----已经有上千万的经管人来到这里,你可以找到任何学科方向、有共同话题的朋友。
经管之家(原人大经济论坛),跨越高校的围墙,带你走进经管知识的新世界。
扫描下方二维码下载并注册APP
本文关键词:

本文论坛网址:https://bbs.pinggu.org/thread-6809863-1-1.html

人气文章

1.凡人大经济论坛-经管之家转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
经管之家 人大经济论坛 大学 专业 手机版