扩展时间窗口中的时变均值可以用其他方式表述,以暗示从记录开始到当前日期的所有值的平均值。你没有给出时间变量,所以我假设数据是有序的并提供一个时间变量。
社区贡献的命令(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)
- 是三重的:
- 对于时间变量
t
和两个偏移量
尽可能向后:.
这里缺少系统意味着任意大
只转发 0
用数学术语来说,平均值是从时间减去无穷大,或尽可能多地到时间 0,即现在。
结果count
是窗口中具有非缺失值的观察数X
。在这里,由于时间变量是 1,计数与时间变量基本相同,但在实际问题中,时间变量更可能是某种日期。与其他一些命令不同rangestat
,它没有选项坚持窗口中具有非缺失值的最小点数,但您可以计算有多少点,并根据数据太少决定忽略这些点。这是留给用户的。
顺便说一句,您可以通过计算出累积总和然后除以迄今为止的值数来解决此类问题。这需要注意(例如)数据间隙、不规则间隔的数据或缺失值,其优点rangestat
是考虑到所有这些困难。