我有一个带有3个标识符(日期,公司和人)的不平衡面板,我想为每个公司和日期计算过去90天内变量(price
)的滚动平均值。当我为tsset
分配面板时,收到错误消息repeated time values within panel
。由于我的小组中的每个人都属于几家公司,因此我每个日期都有几个公司 - 人员对。
到目前为止,这是我的代码:
tsset company_id date_id
tsegen Mean_90days = rowmean(L(0/90).price)
有什么方法可以进行这样的计算吗?
我的解决方案是使用company_person_id
生成group(company_id person_id)
,计算每次company_person_id date
观察的平均值,并使用均值egen=mean()
汇总by (company_id date_id)
。但是我仍然不确定它是否合理。
答案 0 :(得分:5)
你不能用这种机器两种方式。如果您声明公司是面板,那么由于相同面板和时间的重复而不能清洗。 tsset
将失败,而tsegen
(SSC,正如您应该解释的那样)不会让步。如果tsset
框架拒绝,那么基于它的任何内容都不会也无法帮助。
如果您声明(公司,个人)对是面板,您的计算可以继续进行,但您不会为同一公司中的不同人员汇总值。这似乎是你想要的。
但有好消息。
rangestat
(SSC)(宣布here)应该有所帮助。
我认为你的命令类似于
rangestat (mean) price, interval(date_id -90 0) by(company)
请注意,这是计算过去90天和当前的情况,与您的通话一样。