如何使用Stata计算时变历史均值

时间:2018-10-15 13:59:57

标签: stata mean rolling-average

如何使用具有至少四个观测值的扩展窗口来计算X的平均值?

这是一个数字示例:

clear 

input X
50.735469
48.278413
42.807671
49.247854
52.20223
49.726689
50.823169
49.099351
48.949562
47.410434
46.654168
44.924652
43.807024
45.679814
48.366395
49.883396
48.230502
49.869179
53.942757
56.167884
56.226512
56.25608
58.765728
62.077038
62.780799
61.858235
61.167646
60.671859
60.480263
60.226433
61.65349
60.769882
61.497553
60.146182
60.292934
60.173739
58.60077
58.445601
60.404868
end

1 个答案:

答案 0 :(得分:1)

在扩展的时间窗口中的时变方式可以用其他方式表达,以暗示从记录开始到当前日期的所有值的平均值。您不提供时间变量,所以我假设数据是有序的,并提供时间变量。

社区贡献命令rangestat(将使用ssc install rangestat从SSC安装)可以通过以下方式给出迄今为止所有值的平均值:

clear 
input X
50.735469
48.278413
42.807671
49.247854
52.20223
49.726689
50.823169
49.099351
48.949562
47.410434
end 

gen t = _n 

rangestat (count) X (mean) X, int(t . 0) 

list 

    +-------------------------------------+
     |        X    t   X_count      X_mean |
     |-------------------------------------|
  1. | 50.73547    1         1    50.73547 |
  2. | 48.27841    2         2   49.506941 |
  3. | 42.80767    3         3   47.273851 |
  4. | 49.24785    4         4   47.767351 |
  5. | 52.20223    5         5   48.654327 |
     |-------------------------------------|
  6. | 49.72669    6         6   48.833054 |
  7. | 50.82317    7         7   49.117356 |
  8. | 49.09935    8         8   49.115105 |
  9. | 48.94956    9         9   49.096711 |
 10. | 47.41043   10        10   48.928084 |
     +-------------------------------------+

很明显,您可以随意忽略少量结果。

help的{​​{1}}中自然地解释了该语法:在这里只需说该选项的语法(即rangestat)有三层即可:

  1. 对于时间变量interval(t . 0)

和两个偏移量

  1. 尽可能向后:系统缺少t意味着任意大

  2. 仅前进0

用数学术语表示,均值是从时间减去无穷大或尽可能多的时间到当前的时间0。

.的结果是窗口中具有count上无缺失值的观测值的数量。在这里,由于时间变量为1以上,因此计数与时间变量几乎相同,但是在实际问题中,时间变量更有可能是某种日期。与其他一些命令不同,X不能选择在窗口中坚持具有非缺失值的最小点数,但是您可以计算有多少点,并基于太少的数据决定忽略那些点。这留给用户在这里。

顺便说一句,您可以通过计算一个累加的总和,然后除以到目前为止的值数,来开始解决此类问题。需要注意的是(例如)数据中的空白,不规则的数据间隔或缺少的值,以及rangestat的优点是要考虑所有这些困难。