Изменяющиеся во времени средние значения в расширяющемся временном окне могут быть сформулированы иначе, чтобы подразумевать среднее значение всех значений от начала записи до текущей даты.Вы не указываете переменную времени, поэтому я предполагаю, что данные в порядке, и предоставляю переменную времени
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
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 |
+-------------------------------------+
* * * * * * * * * * *1008* * * * * * * * *1008* * * * * * * * *1008* *
Очевидно, вы можете игнорировать результаты для небольших подсчетов, как вам угодно.
Синтаксис естественным образом объясняется в help
для rangestat
: здесь достаточно сказать, что синтаксис для опции, а именно interval(t . 0)
, является тройным:
- для переменной времени
t
и двух смещений
в обратном направлении, насколько это возможно: система отсутствует .
здесь означает сколь угодно большое
вперед всего 0
В математическомВ терминах среднее значение - от времени минус бесконечность или, насколько это возможно, до времени 0, настоящего.
Результатом count
является количество наблюдений в окне с не пропущенными значениями в X
.Здесь, поскольку переменная времени равна 1, счетчик тривиально совпадает с переменной времени, но в реальных задачах переменная времени, скорее всего, будет какой-то датой.В отличие от некоторых других команд rangestat
не имеет возможности настаивать на минимальном количестве точек с не пропущенными значениями в окне, но вы можете посчитать, сколько их, и принять решение игнорировать те, которые основаны на слишком малом количестве данных.Это оставлено для пользователя здесь.
Кстати, вы могли бы неплохо начать эту проблему, вычислив кумулятивную сумму, а затем разделив ее на количество значений.Это требует осторожности с (например) пробелами в данных, нерегулярно расположенными данными или пропущенными значениями, и достоинством rangestat
является то, что рассматриваются все такие трудности.