楼主: 匿名
6746 10

[面板数据求助] 如何对面板数据中每家公司最近N年的数据进行回归并保留系数? [推广有奖]

匿名网友
楼主
匿名网友  发表于 2015-7-17 10:47:10 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

需要看上市公司年度利润的波动性,采用的方法是对每一家公司用最近五年profit(自变量)和year (因变量)做回归,保存回归系数生成新的变量,

基本的保存系数的命令:bcoeffyear profit, by(stkcd) g(b) se(se)

但是如何限定每一次回归都是用的最近五年(year[_n]/year[_n-5])的数据呢?


1.bmp


二维码

扫码加我 拉你入群

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

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

关键词:面板数据 Profit stkcd year Prof 如何

沙发
andruw 在职认证  发表于 2015-7-17 16:02:32
  1. bysort stkcd (year): gen year_order = _N - _n + 1
  2. bcoeff year profit if year_order <=5, by(stkcd) g(b) se(se)
复制代码
已有 2 人评分经验 论坛币 热心指数 收起 理由
夏目贵志 + 10 + 2 热心帮助其他会员
hustchen2012 + 10 精彩帖子

总评分: 经验 + 10  论坛币 + 10  热心指数 + 2   查看全部评分

藤椅
hlweiping 发表于 2015-7-17 17:44:05
下面是我根据 andruw 的命令做的结果,跟我预想的不太一样。我现在得到的是每家公司2010-2014这五年数据回归的回归系数和标准误,并且值都是一样的。我想要的是另外一种: 比如2006年的 b,se 由2002-2006年的数据回归得到,2007年的 b,se 由2003-2007年的数据回归得到,这个有没有办法通过命令实现?即每一年的回归系数b和标准误se都由离其最近五年的数据回归得到。急需各位帮助,多谢了! 2.bmp

板凳
andruw 在职认证  发表于 2015-7-17 18:00:40
试试这个
  1. bysort stkcd (year): gen year_order = _n
  2. gen b1 = .
  3. gen se1 = .
  4. forvalue i = 14(-1)5  {
  5. bcoeff year profit if inrange(year_order, `i'-4, `i'), by(stkcd) g(b) se(se)
  6. replace b1 = b if year_order == `i'
  7. replace se1 = se if year_order == `i'
  8. drop b
  9. drop se
  10. }
复制代码
复制代码

报纸
hlweiping 发表于 2015-7-18 00:12:54
谢谢andruw! 我运行了上面你给出的程序,结果如下图所示,可是为什么有些年份以后的b se值全部没有呢?比如第一家公司2004年以后的值全部缺失。




3.png

地板
andruw 在职认证  发表于 2015-7-18 00:38:44
hlweiping 发表于 2015-7-18 00:12
谢谢andruw! 我运行了上面你给出的程序,结果如下图所示,可是为什么有些年份以后的b 跟se值全部没有呢?比 ...
因为你之前的年份为2002-2014,现在改一数字就成。
  1. forvalue i = 29(-1)5
复制代码

7
hlweiping 发表于 2015-7-18 22:53:19
forvalue i = 29(-1)5  这个语句的意思能解释一下吗?

8
hlweiping 发表于 2015-7-18 23:32:02
我改成以下命令语句后:
bysort stkcd (year): gen year_order = _n
gen b1 = .
gen se1 = .
forvalue i = 29(-1)5  {
bcoeff year don if inrange(year_order, `i'-4, `i'), by(stkcd) g(b) se(se)
replace b1 = b if year_order == `i'
replace se1 = se if year_order == `i'
drop b
drop se
}

得到的部分结果如下,还请 andruw帮我看看有么有问题,多谢了! 4.png

9
hlweiping 发表于 2015-7-19 00:01:18
每一家公司的年份跨度都不一样(最大年份跨度为29) 会影响到 forvalue i = 29(-1)5 的设定吗?

10
hlweiping 发表于 2015-7-19 10:39:56
麻烦 andruw 再帮我回复一下上面的问题,急用,感激不尽!

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-5 13:49