作者gn01208307 (丹尼尔)
看板Statistics
标题[程式] 使用stata分年分组计算出一阶自我相关
时间Mon Mar 30 14:58:25 2015
------------------------------------------------------------------------
[软体程式类别]:
Stata
[程式问题]:
一阶自我相关(first-order autocorrelation)
[软体熟悉度]:
中(3个月到1年)
[问题叙述]:
需计算各公司各年(共四年)的前16季EPS的一阶自我相关(first-order autocorrelation)
目前我已经将各公司以及分年设为panel data了
但卡在corrgram eps, lags(1)--->这个程式码後面不能加上if
因此我无法利用回圈计算出各公司各年之first-order autocorrelation
然而,如果我将资料删减至只剩一家公司的16季资料时,就可以顺利跑出来了..
也就是说土法炼钢的方法下...我一家公司做4次...但我样本有1000家公司..
那我需要共跑4000次...才能计算出4000个一阶自我相关的变数
希望版上有强人可以帮我解惑...让我知道如何使用回圈或其他的程式码
顺利计算出一阶自我相关(亦即earnings persistence)
如果顺利跑出来的话...我愿意花全部的P币...目前是也没多少钱XD
[程式范例]:
以下是我资料的摘录:(每一id都有28季的资料,我将每16季分为一组,用year_2008,2009..)
id month eps year_2008 year_2009
1 1 .42 1
1 2 .35 1
1 3 .43 1
1 4 .4 1
1 5 0 1 1
1 6 1.25 1 1
1 7 .5 1 1
1 8 .22 1 1
1 9 .18 1 1
1 10 .62 1 1
1 11 .72 1 1
1 12 .71 1 1
1 13 .6 1 1
1 14 .58 1 1
1 15 .99 1 1
1 16 .38 1 1
1 17 .39 1
1 18 .69 1
1 19 .33 1
1 20 .34 1
我写过的程式码:
gen persistence_2008=.
forvalues i=1(1) 1367 {
corrgram eps, lags(1) if id==`i'
replace persistence_2008 = r(AC) if id==`i'
}
希望有强者可以指点我正确的方法...谢谢!
-----------------------------------------------------------------------------
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 175.180.69.99
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Statistics/M.1427698708.A.68D.html
※ 编辑: gn01208307 (175.180.69.99), 03/30/2015 14:58:49
1F:→ lyrislin: 试试改成 corrgram eps if id==`i' , lags(1) 03/30 17:54
2F:→ gn01208307: 谢谢,有跑出来一个後,但告诉我type mismatch 03/30 19:38
3F:→ gn01208307: 请问我储存AC的结果是否有误?谢谢~~ 03/30 19:43
4F:→ lyrislin: replace persistence_2008 = r(ac1) if id==`i' 03/30 21:14
5F:→ lyrislin: stata 指令大小写有差,help里都有范例 建议可以先看 03/30 21:16
6F:→ gn01208307: 谢谢你,我跑出变数出来了!! 03/30 22:51