请选择 进入手机版 | 继续访问电脑版
楼主: gefeixiaoxiao
6580 10

[编程问题求助] stata求教每个数值的前五个数字加和命令 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

19%

还不是VIP/贵宾

-

威望
0
论坛币
71 个
通用积分
2.6700
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
208 点
帖子
13
精华
0
在线时间
260 小时
注册时间
2009-6-23
最后登录
2023-7-22

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
                      id         year

                      1            1          3                                          
                      1           2          2            
                      1           3          6
                      1           4          8
                      1           5          9
                      1           6         10
                      1           7          9
                      2           1          2
                      2           8          4
                      .........
我想求相同的id: id1       year6=year1+year2+year3+year4+year5=3+2+6+8+9
                                        year7=year2+year3+year4+year5+year6=2+6+8+9+10
                          往下以此类推id2.....,各位师兄师姐们,stata的命令是什么啊?





二维码

扫码加我 拉你入群

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

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

关键词:Stata tata year 师兄师姐 ear

学习一下                                                                        
                                       
                                                     
                                                     
                                             
                                                                 
                                                                                 

使用道具

sort id year
bys id: movavg year_new=var,lag(5)
gen year_newtotal_5=year_new*5

使用道具

year   1     2   3   4   5      6
var     0    0   0   0   0   0.0015607  
year_new第六年应该是0(前五年var的均值),结果出来怎么是0.0002601

使用道具

gefeixiaoxiao 发表于 2014-9-27 13:41
year   1     2   3   4   5      6
var     0    0   0   0   0   0.0015607  
year_new第六年应该是0(前 ...
是我忽略了,movavg求的是包括该行观测值在内的前N个数的移动均值。不过问题也很好解决,用包括该行观测值在内的前6行的和减去该行观测就好了。

sort id year
bys id: movavg year_new=var,lag(6)
gen year_newtotal_5=year_new*6-var
已有 1 人评分论坛币 学术水平 热心指数 收起 理由
crystal8832 + 12 + 1 + 1 热心帮助其他会员

总评分: 论坛币 + 12  学术水平 + 1  热心指数 + 1   查看全部评分

使用道具

阿狸与桃子 发表于 2014-9-27 17:13
是我忽略了,movavg求的是包括该行观测值在内的前N个数的移动均值。不过问题也很好解决,用包括该行观测值 ...
,谢谢啦

使用道具

tracy3768 发表于 2014-9-27 19:50:07 |显示全部楼层 |坛友微信交流群
thanks for sharing

使用道具

ywh19860616 发表于 2014-9-28 10:23:33 |显示全部楼层 |坛友微信交流群
  1.   clear
  2.   input id year return
  3.   1           1          3                                          
  4.   1           2          2            
  5.   1           3          6
  6.   1           4          8
  7.   1           5          9
  8.   1           6         10
  9.   1           7          9
  10.   2           1          2
  11.   2           2          4
  12.   2           3          2
  13.   2           4          4
  14.   2           5          2
  15.   2           6          4
  16.   2           7          5
  17.   end
  18.   
  19.   forv i = 1/5 {
  20.   tempvar return`i'
  21.   }
  22.   
  23.   forv i = 1/5 {
  24.   bys id: gen `return`i'' = return[_n-`i']
  25.   }
  26.   
  27.   egen rsum = rowtotal(`return1'-`return5')
  28.   
  29.   bys id:drop if _n<6
复制代码
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
crystal8832 + 12 + 1 + 1 + 1 热心帮助其他会员

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

使用道具

谢谢啦

使用道具

阿狸与桃子 发表于 2014-9-27 17:13
是我忽略了,movavg求的是包括该行观测值在内的前N个数的移动均值。不过问题也很好解决,用包括该行观测值 ...
不用by分组的情况,这个命令计算的移动平均值是没有问题的,在这个例子里,lag设置为5,那么就用当期观测值和前4期观测值之和除以5,作为当期的移动平均值。但是,一旦加了by选项进行了分组,那么这个移动平均就出现问题了。以“bys id: movavg year_new=var,lag(5)”为例,此时的移动平均值是不对的,是用当期观测值和前4期观测值之和除以6,作为当期的移动平均值。看楼主回复的例子,前5年观测值为0,第6年观测值为0.0015607,第六年的移动平均结果是0.0015607/6=0.0002601。不清楚为什么分组与不分组得到的移动平均结果是不同的。

使用道具

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

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

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

GMT+8, 2024-3-29 19:53