楼主: dreistein94
8837 11

[面板数据求助] stata在面板数据中计算某一变量连续n年之和 [推广有奖]

  • 0关注
  • 0粉丝

本科生

46%

还不是VIP/贵宾

-

威望
0
论坛币
9 个
通用积分
60.7131
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
215 点
帖子
19
精华
0
在线时间
167 小时
注册时间
2016-10-27
最后登录
2023-10-14

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
比如我有一个为期5年的短面板数据,其结构是firm_code year date value。我希望生成一个变量previous来表示前两年该公司的value的和。请问该如何计算?

PS: 现实情况,比如我想知道这家公司前两年发起并购的总次数,此时,考虑到同一年有可能有多次并购,针对每个事件(date不同)我都需要计算year-2到year-1
的次数,且只需要前两年。因此使用bys firm: gen previous = sum(value)的方式无效(不能控制只计算前两年),如果要加条件语句,请问应该怎么加呢?求指教
二维码

扫码加我 拉你入群

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

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

关键词:Stata 面板数据 tata previous value

沙发
dreistein94 学生认证  发表于 2019-7-1 22:07:24 |只看作者 |坛友微信交流群
该问题如果再进一步抽象化的话,其实就是如何在stata中指定符合要求的行(row)来进行列(column)运算:
例如,通过bysort指定到某一observation时,如何对这个observation前/后n行进行运算

使用道具

藤椅
ritaing 发表于 2019-7-2 01:04:27 |只看作者 |坛友微信交流群
dreistein94 发表于 2019-7-1 22:07
该问题如果再进一步抽象化的话,其实就是如何在stata中指定符合要求的行(row)来进行列(column)运算:
例如 ...
  1. bys firm: gen previous = value[_n-1]+value[_n-2]
复制代码

类似这种,建议用help dataex将问题和数据展示清楚

使用道具

板凳
黃河泉 在职认证  发表于 2019-7-2 07:04:43 |只看作者 |坛友微信交流群
你若要问程序,永远附上相关资料;若附上资料,永远用 dataex 印出资料。
1.        先 ssc install dataex (并见说明),将原始 Stata 资料中具有”代表性”的一部分资料列出,以供有意回答者实验之用,并能提供具体操作指令。
2.        请参考说明 https://bbs.pinggu.org/thread-5048204-1-1.html

使用道具

报纸
dreistein94 学生认证  发表于 2019-7-2 10:27:52 |只看作者 |坛友微信交流群
附上sample-file以供大神参考:如果附件下载不便,请用以下代码输入:
  1. clear
  2. input double event_id int event_date str6 ac_cusip double year
  3. 2028862040 17855 "00005M" 2008
  4. 2028864040 17855 "00005M" 2008
  5. 2319400040 18794 "00005M" 2011
  6. 3085014040 20902 "00008K" 2017
  7. 1830804040 17183 "00011X" 2007
  8. 1884739040 17350 "00011X" 2007
  9. 1884842040 17350 "00011X" 2007
  10. 1906282040 17426 "00011X" 2007
  11. 1938101040 17520 "00011X" 2007
  12. 1953716040 17582 "00011X" 2008
  13. 2287077040 18691 "00011X" 2011
  14. 2337962040 18857 "00011X" 2011
  15. 2337902040 18857 "00011X" 2011
  16. 2388325040 18939 "00011X" 2011
  17. 2426573040 19165 "00011X" 2012
  18. 2610863040 19773 "00011X" 2014
  19. 2657268040 19922 "00011X" 2014
  20. 2709021040 20079 "00011X" 2014
  21. 3024640040 20751 "00011X" 2016
  22. 3030636040 20751 "00011X" 2016
  23. end
  24. format %tdCCYY-NN-DD event_date
复制代码
其中ac_cusip代表公司代码,event_id是事件编号

sample.dta

3.51 KB

使用道具

地板
dreistein94 学生认证  发表于 2019-7-2 10:32:03 |只看作者 |坛友微信交流群
ritaing 发表于 2019-7-2 01:04
类似这种,建议用help dataex将问题和数据展示清楚
感谢你的回复,但是这个不符合我的要求,因为这个代码是假定没有缺失值的情况下做出的。实际情况是,就如同我在主楼的举例,如果我希望知道某公司在前两年的并购次数,但我现在有的是事件数据(参考新附上的样本数据),那就会出现:
1. 一家公司在某一年的前两年可能完全没有并购(即前两年连观测值都没有)
2. 不同公司在某一年的前两年并购次数不一样(即不能确定究竟要计算多少行)
一种可能的解决方法是手动计算该年的次数,再将数据转化为公司-年度(collapse)并通过0来补全缺失年份的观测值,但这种做法大幅修改了数据结构,不适合事件研究法的数据

使用道具

7
黃河泉 在职认证  发表于 2019-7-2 11:29:50 |只看作者 |坛友微信交流群
dreistein94 发表于 2019-7-2 10:27
附上sample-file以供大神参考:如果附件下载不便,请用以下代码输入:
其中ac_cusip代表公司代码,event_i ...
1. 尔后请用回复。 2. value 变量呢?

使用道具

8
dreistein94 学生认证  发表于 2019-7-2 20:45:59 |只看作者 |坛友微信交流群
黃河泉 发表于 2019-7-2 11:29
1. 尔后请用回复。 2. value 变量呢?
就只是计数,计算某公司在某年的前两年事件个数,如果硬要有个value,那就全是1的变量

使用道具

9
黃河泉 在职认证  发表于 2019-7-3 07:35:58 |只看作者 |坛友微信交流群
dreistein94 发表于 2019-7-2 20:45
就只是计数,计算某公司在某年的前两年事件个数,如果硬要有个value,那就全是1的变量
请先 ssc install rangestat,并试试
  1. gen value = 1
  2. rangestat (sum) value, interval(year -2 -1) by(ac_cusip)
复制代码
我假设你的前两年 (去年与前年) 是不包括本年!

使用道具

10
QRRZ 发表于 2023-3-12 00:01:33 |只看作者 |坛友微信交流群
黃河泉 发表于 2019-7-3 07:35
请先 ssc install rangestat,并试试我假设你的前两年 (去年与前年) 是不包括本年!
请问,如果要统计前面很多年份的呢,这个我加了-3 -2 -1好像就不行了

使用道具

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

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

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

GMT+8, 2024-5-1 16:38