-1

如何计算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
4

1 回答 1

1

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

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

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语法在for :中很自然地解释了,在rangestat这里只要说选项的语法 - 即 interval(t . 0)- 是三重的:

  1. 对于时间变量t

和两个偏移量

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

  2. 只转发 0

用数学术语来说,平均值是从时间减去无穷大,或尽可能多地到时间 0,即现在。

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

顺便说一句,您可以通过计算出累积总和然后除以迄今为止的值数来解决此类问题。这需要注意(例如)数据间隙、不规则间隔的数据或缺失值,其优点rangestat是考虑到所有这些困难。

于 2018-10-15T16:27:55.470 回答