楼主: luo6ni1
9305 24

[面板数据求助] 如何计算面板中的算术平均值 [推广有奖]

  • 1关注
  • 0粉丝

大专生

68%

还不是VIP/贵宾

-

威望
0
论坛币
317 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1447 点
帖子
65
精华
0
在线时间
40 小时
注册时间
2007-5-2
最后登录
2017-6-7

楼主
luo6ni1 发表于 2012-3-27 09:58:57 |AI写论文
5论坛币
要计算在每条记录出现之前的值的算术平均值如何实现呢?
   简单数据如下:
         stkcd         日期                   a             b
          2        2005-03-01            x1        
          2        2005-05-07            x2          x1
          2        2005-07-03            x3         (x1+x2)/2
          2        2005-10-11            x4        (x1+x2+x3)/3

       类似上面的数据结构,如何根据a计算出对应的b的值呢?b对应的计算法则是按照在该时间段之前出现的a值的算术平均值,stata中该如何实现呢?求解答,谢谢

最佳答案

sungmoo 查看完整内容

*修正一下,以过去的观测值数求均值: sort stkcd date fep by stkcd: g m=sum(fep[_n-1]) by stkcd: replace m=m[_n-1] if date==date[_n-1] by stkcd: g n=_n-1 by stkcd: replace n=n[_n-1] if date==date[_n-1] replace m=m/n 需要注意:这种情况下变量组stkcd date无法定义panel data。这时以往值的均值怎么求?
关键词:算术平均值 平均值 stkcd Stata 如何实现 平均值 时间段 如何 记录

回帖推荐

sungmoo 发表于13楼  查看完整内容

*修正一下,以过去的观测值数求均值: sort stkcd date fep by stkcd: g m=sum(fep[_n-1]) by stkcd: replace m=m[_n-1] if date==date[_n-1] by stkcd: g n=_n-1 by stkcd: replace n=n[_n-1] if date==date[_n-1] replace m=m/n 需要注意:这种情况下变量组stkcd date无法定义panel data。这时以往值的均值怎么求?

sungmoo 发表于8楼  查看完整内容

贴出你的部分数据。

沙发
sungmoo 发表于 2012-3-27 09:58:58
*修正一下,以过去的观测值数求均值:

sort stkcd date fep
by stkcd: g m=sum(fep[_n-1])
by stkcd: replace m=m[_n-1] if date==date[_n-1]
by stkcd: g n=_n-1
by stkcd: replace n=n[_n-1] if date==date[_n-1]
replace m=m/n
2005-03-22这个日期重复出现了5次
需要注意:这种情况下变量组stkcd date无法定义panel data。这时以往值的均值怎么求?

藤椅
方式忐忑 发表于 2012-3-27 12:27:50
我是来学习的哦

板凳
luo6ni1 发表于 2012-3-27 14:42:15
恩,谢谢支持,希望有高手赶快解答!!

报纸
sungmoo 发表于 2012-3-27 15:10:59
*对于真正的面板数据(且无缺失值):
bys stkcd (date): g m=sum(fep[_n-1])/(_n-1)
已有 1 人评分经验 学术水平 收起 理由
SpencerMeng + 60 + 1 精彩帖子

总评分: 经验 + 60  学术水平 + 1   查看全部评分

地板
luo6ni1 发表于 2012-3-27 17:06:34
sungmoo 发表于 2012-3-27 15:10
*不能存在缺失值
bys stkcd (date): egen b=sum(a/_n)
恩,谢谢sungmoo版主的回复,可是b的运算法则就是a在预测之前所有的预测值的算术平均值,所以按照这样的逻辑b的第一个值应该就没有吧,因为2005-03-01是第一条记录,执行命令出现错误
  " factor variables and time-series operators not allowed"
   数据是从2005年到2010年,要求每个公司内部计算一次,应该是双嵌套循环吧,实在是出不来结果。谢谢你的解答!

7
sungmoo 发表于 2012-3-27 17:55:53
执行命令出现错误
应该用gen而非egen

8
luo6ni1 发表于 2012-3-27 18:33:56
sungmoo 发表于 2012-3-27 17:55
应该用gen而非egen
还是不对,可能是因为有不同年度再加上每一年的不同月日导致命令执行不了吧,谢谢你的建议!
factor variables and time-series operators not allowed

9
sungmoo 发表于 2012-3-27 19:45:40
贴出你的部分数据。

10
luo6ni1 发表于 2012-3-27 20:19:11
sungmoo 发表于 2012-3-27 19:45
贴出你的部分数据。
stkcd        year          date                       fep
2        2005        2005-03-22        .47
2        2005        2005-08-01        .363
2        2005        2005-12-19        .34
2        2005        2005-07-31        .35
2        2005        2005-08-01        .32
2        2005        2005-08-01        .36
2        2005        2005-03-22        .333
2        2005        2005-03-22        .579
2        2005        2005-03-22        .42
2        2005        2005-03-22        .55
2        2005        2005-03-09        .57
2        2005        2005-03-07        .433
2        2006        2006-10-31        .53
2        2006        2006-10-31        .5
2        2006        2006-08-01        .51
2        2006        2006-08-04        .48
2        2006        2006-08-01        .51
2        2006        2006-07-04        .49
2        2006        2006-08-01        .38
2        2006        2006-06-14        .54
2        2006        2006-11-02        .5
2        2007        2007-12-11        2.31
stata中的数据大概就是这种结构,包含扣除金融保险类的所有上市公司,就是要根据fep计算出新的指标值,我也不知道命令到底该如何循环嵌套着写,谢谢sungmoo

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-30 13:18