楼主: hejiyan
3606 6

[数据管理求助] stata里关于MOVAVG命令求移动平均的问题 [推广有奖]

  • 1关注
  • 2粉丝

硕士生

55%

还不是VIP/贵宾

-

威望
0
论坛币
2306 个
通用积分
4.8666
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1082 点
帖子
82
精华
0
在线时间
200 小时
注册时间
2017-3-8
最后登录
2024-2-20

100论坛币
这个是论坛里一个同学的发的帖子,我遇到了和他一样的问题,求大神帮忙看下哪个出问题了
我想按组计算移动平均,试了movavg帮助里的例子“ by rep78: movavg ma3lags_by = price, lags(3)”,
为什么从每组第四行就和我计算的不一致?贴下数据:
第一列是要平均的,第二列是分组,第三列是movavg的计算结果,第四列是我的计算结果(excel哈),最后列是两者差异我的excel公式是sum(price1)/1然后 sum(price1+price2)/2然后 sum(price1+price2+price3)/3 然后 sum(price2+price3+price4)/3.。。
我观察了使用stata命令(by rep78: movavg ma3lags_by = price, lags(3))算出的结果,第二组的第四列MOVAVG命令的算法是:3517.25=(6342+3667+4060)/4 为什么这个命令是除4而不是除3那?这也就是差别的所在,请问下STATA为什么是这样计算的啊,是不是哪里设置错了
请大家指点,
先在此谢过了!
pricerep78ma3lags_bysum(:)/3diff
49341493449340
419514564.54564.50
51042510451040
63422572357230
366725037.6675037.6666670.000333333
406023517.254689.666667-1172.416667
1450025556.757409-1852.25
401025642.57523.333333-1880.833333
417225670.57560.666667-1890.166667
5886235174689.333333-1172.333333
6165361655407.666667757.3333333
4733354495594.666667-145.6666667
1590638934.6678934.6666670.000333333
448236280.258373.666667-2093.416667
4296361718228-2057
629533768.255024.333333-1256.083333
1359436046.258061.666667-2015.416667
1149737846.510462-2615.5
450437398.759865-2466.25
1037236593.258791-2197.75
522235024.56699.333333-1674.833333
464735060.256747-1686.75
1346635833.757778.333333-1944.583333
408235548.757398.333333-1849.583333
472335567.757423.666667-1855.916667
517233494.254659-1164.75
11385353207093.333333-1773.333333
474935326.57102-1775.5
418135078.756771.666667-1692.916667
1037134825.256433.666667-1608.416667
418734684.756246.333333-1561.583333
451634768.56358-1589.5
5189334734630.666667-1157.666667
578833873.255164.333333-1291.083333
481633948.255264.333333-1316.083333
329133473.754631.666667-1157.916667
389533000.54000.666667-1000.166667
409932821.253761.666667-940.4166667
329932823.253764.333333-941.0833333
395532838.253784.333333-946.0833333
43894438943890
44994444444440
469744528.3334528.333333-0.000333333
881444502.56003.333333-1500.833333
8129454107213.333333-1803.333333
973546669.58892.666667-2223.166667
399545464.757286.333333-1821.583333
382944389.755853-1463.25
570543382.254509.666667-1127.416667
537943728.254971-1242.75
622944328.255771-1442.75
489044124.55499.333333-1374.833333
507944049.55399.333333-1349.833333
579843941.755255.666667-1313.916667
685044431.755909-1477.25
7140449476596-1649
630345073.256764.333333-1691.083333
782745317.57090-1772.5
37485374837480
442554086.54086.50
539754523.3334523.333333-0.000333333
579953905.255207-1301.75
379853748.54998-1249.5
398453395.254527-1131.75
458953092.754123.666667-1030.916667
969054565.756087.666667-1521.916667
571954999.56666-1666.5
11995568519134.666667-2283.666667
589955903.257871-1967.75
4424442444240
6486545554550
4453512151210
129905982.257976.333333-1994.083333
37995310.57080.666667-1770.166667




最佳答案

黃河泉 查看完整内容

尔后计算类似统计量,请用 rangestat (ssc install rangestat) 或 asrol (ssc install asrol),不要再用你现在讲的这个指令(movavg 对不对我不知道),
沙发
黃河泉 在职认证  发表于 2018-1-5 16:30:52 |只看作者 |坛友微信交流群
尔后计算类似统计量,请用 rangestat (ssc install rangestat) 或 asrol (ssc install asrol),不要再用你现在讲的这个指令(movavg 对不对我不知道),
  1. webuse grunfeld, clear   
  2. keep company year invest
  3. // rangestat
  4. rangestat (mean) invest (obs) invest, interval(year -2 0) by(company)
  5. // asrol
  6. bys company: asrol invest, window(year 3) stat(mean) gen(asrol)
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 3 + 3 + 3 热心帮助其他会员

总评分: 学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

使用道具

藤椅
hejiyan 发表于 2018-1-5 18:30:32 |只看作者 |坛友微信交流群
黃河泉 发表于 2018-1-5 17:47
尔后计算类似统计量,请用 rangestat (ssc install rangestat) 或 asrol (ssc install asrol),不要再用你现 ...
谢谢您黄老师,使用你给我的命令计算的和EXCEL是一致的,解决了我的问题,movavg这个外部命令估计有点问题

使用道具

板凳
2015lqh 学生认证  发表于 2020-6-15 22:28:02 |只看作者 |坛友微信交流群
黃河泉 发表于 2018-1-5 16:30
尔后计算类似统计量,请用 rangestat (ssc install rangestat) 或 asrol (ssc install asrol),不要再用你现 ...
老师厉害,佩服佩服

使用道具

报纸
atopin 学生认证  发表于 2021-2-4 12:12:36 |只看作者 |坛友微信交流群
黃河泉 发表于 2018-1-5 16:30
尔后计算类似统计量,请用 rangestat (ssc install rangestat) 或 asrol (ssc install asrol),不要再用你现 ...
老师,我试了这两个命令,前两期也都赋了平均值,有没有命令能让这两个例子从第3期再开始求平均,前面的都留成空值。谢谢。

使用道具

地板
黃河泉 在职认证  发表于 2021-2-4 16:14:51 |只看作者 |坛友微信交流群
atopin 发表于 2021-2-4 12:12
老师,我试了这两个命令,前两期也都赋了平均值,有没有命令能让这两个例子从第3期再开始求平均,前面的都 ...
请试试
  1. webuse grunfeld, clear   
  2. // rangestat
  3. rangestat (mean) invest (obs) invest, interval(year -2 0) by(company)
  4. replace invest_mean = . if  invest_obs < 3
复制代码

使用道具

7
atopin 学生认证  发表于 2021-2-8 08:17:47 |只看作者 |坛友微信交流群
黃河泉 发表于 2021-2-4 16:14
请试试
感谢感谢老师

使用道具

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

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

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

GMT+8, 2024-5-28 13:09