楼主: kg209163
14085 23

[编程问题求助] 请教一个用foreach求方差的问题 [推广有奖]

11
kg209163 发表于 2012-12-19 11:08:19 |只看作者 |坛友微信交流群
主要是要在不同的股票间计算,比如果农科技只能在国农科技里计算,st新华只能在st新华里计算,两只股票的计算不能交叉

使用道具

12
sungmoo 发表于 2012-12-19 17:59:44 |只看作者 |坛友微信交流群
https://bbs.pinggu.org/thread-799945-1-1.html

*求出最近五年滚动方差:
sort stkcd year
forv i=1/4{
by stkcd: g roa`i'=roa[_n-`i']
}
egen s=rowsd(roa*)
g var=s^2 if year>1996
drop roa1-roa4 s

使用道具

13
sungmoo 发表于 2012-12-19 18:17:19 |只看作者 |坛友微信交流群
*更多期滚动(不生成大量变量):https://bbs.pinggu.org/thread-1164714-3-1.html
*直接生成方差

egen id=group(stkcd)
su id
set ob `=_N+r(max)'
replace year=2012 if id==.
bys id (year): replace id=_n if id==.
xtset id year
tssmooth ma s=roa,w(5)
tssmooth ma s2=roa^2,w(5)
by id: g var=(s2[_n+1]-s[_n+1]^2)*5/4 if _n>4
drop s s2
drop if year==2012


补充内容 (2013-6-17 02:08):
*可简作:
egen id=group(stkcd)
xtset id year
tssmooth ma s=roa,w(4 1)
tssmooth ma s2=roa^2,w(4 1)
by id (year): g var=(s2-s^2)*5/4 if _n>4
已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
hpw4284892 + 5 + 1 + 1 + 1 精彩帖子
Sunknownay + 100 + 10 + 1 + 1 + 1 热心帮助其他会员

总评分: 经验 + 100  论坛币 + 15  学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

使用道具

14
sungmoo 发表于 2012-12-19 19:58:12 |只看作者 |坛友微信交流群
https://bbs.pinggu.org/thread-1210664-1-1.html

*另一种方法:求最近五年滚动标准差
bys stkcd (year): g y=_n
expand y*(y<5)+(20-y)*(y>15)+5*(y>4&y<16)
bys stkcd y: g n=_n+(y-5)*(y>5)
collapse (sd) sd=roa,by(stkcd n)
g m=string(n+1992)+"~"+string(n+1996)
已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
Sunknownay + 100 + 10 + 1 + 1 + 1 热心帮助其他会员

总评分: 经验 + 100  论坛币 + 10  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

15
kg209163 发表于 2012-12-20 20:11:08 |只看作者 |坛友微信交流群
sungmoo 发表于 2012-12-19 19:58
https://bbs.pinggu.org/thread-1210664-1-1.html

*另一种方法:求最近五年滚动标准差
非常感谢,强啊!

使用道具

16
wangle19910812 发表于 2015-3-17 19:08:23 |只看作者 |坛友微信交流群
楼主,你的问题解决了吗?如何解决公司代码不能交叉计算的问题啊

使用道具

17
Yes._滕飞 发表于 2016-1-12 21:59:19 |只看作者 |坛友微信交流群
多谢指教!!

使用道具

18
后知后觉2006 发表于 2016-9-27 16:03:31 |只看作者 |坛友微信交流群
kg209163 发表于 2012-12-19 10:23
第三个第四个就让他等于缺失值就可以,就是顺延下去计算每只股票前五年收益率的方差
请教下,后面的值可以循环算,那前4个值都看作缺失值吗?缺失值是指?

使用道具

19
后知后觉2006 发表于 2016-9-27 16:13:02 |只看作者 |坛友微信交流群
为何我用以下命名
xtset id year
tssmooth ma s=roa,w(2 1)
tssmooth ma s2=roa^2,w(2 1)
by id (year): g var=(s2-s^2)*3/2 if _n>2
最后一个命令想获得滚动3年值,输出显示错误,没有结果?

使用道具

20
后知后觉2006 发表于 2016-9-27 17:22:09 |只看作者 |坛友微信交流群
后知后觉2006 发表于 2016-9-27 16:03
请教下,后面的值可以循环算,那前4个值都看作缺失值吗?缺失值是指?
我的意思是如何有缺失值的话如何解决?我的数据是非平衡面板,有只有4年的数据,去掉两个缺失值,只有2年的数据了。谢谢赐教

使用道具

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

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

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

GMT+8, 2024-5-8 10:20