Как рассчитать изменяющееся во времени историческое среднее с помощью Stata - PullRequest
0 голосов
/ 15 октября 2018

Как я могу вычислить среднее значение 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 голосов
/ 15 октября 2018

Изменяющиеся во времени средние значения в расширяющемся временном окне могут быть сформулированы иначе, чтобы подразумевать среднее значение всех значений от начала записи до текущей даты.Вы не указываете переменную времени, поэтому я предполагаю, что данные в порядке, и предоставляю переменную времени

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

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), является тройным:

  1. для переменной времени t

и двух смещений

в обратном направлении, насколько это возможно: система отсутствует . здесь означает сколь угодно большое

вперед всего 0

В математическомВ терминах среднее значение - от времени минус бесконечность или, насколько это возможно, до времени 0, настоящего.

Результатом count является количество наблюдений в окне с не пропущенными значениями в X.Здесь, поскольку переменная времени равна 1, счетчик тривиально совпадает с переменной времени, но в реальных задачах переменная времени, скорее всего, будет какой-то датой.В отличие от некоторых других команд rangestat не имеет возможности настаивать на минимальном количестве точек с не пропущенными значениями в окне, но вы можете посчитать, сколько их, и принять решение игнорировать те, которые основаны на слишком малом количестве данных.Это оставлено для пользователя здесь.

Кстати, вы могли бы неплохо начать эту проблему, вычислив кумулятивную сумму, а затем разделив ее на количество значений.Это требует осторожности с (например) пробелами в данных, нерегулярно расположенными данными или пропущенными значениями, и достоинством rangestat является то, что рассматриваются все такие трудности.

...