Стандартное отклонение экспоненциально-взвешенного среднего

10

Я написал простую функцию в Python для вычисления экспоненциально взвешенного среднего:

def test():
  x = [1,2,3,4,5]
  alpha = 0.98
  s_old = x[0]

  for i in range(1, len(x)):
    s = alpha * x[i] + (1- alpha) * s_old
    s_old = s

  return s

Тем не менее, как я могу рассчитать соответствующий SD?

Маришка
источник
Вы после стандартной ошибки среднего или какой-то оценки стандартного отклонения процесса?
Glen_b
@Glen_b Я пытаюсь использовать это, чтобы увидеть, насколько цена акций отклоняется от экспоненциально-взвешенного среднего на несколько кратных от «стандартного отклонения». Какой из них вы бы порекомендовали?
Мариска
1
Из того, что я вижу, есть фундаментальный конфликт (или несоответствие), лежащий в основе этого вопроса. Люди используют EWM, когда им не важно анализировать данные для характеристики и количественной оценки последовательной корреляции, но для ответа на этот вопрос необходимо оценить последовательную корреляцию ; но тогда зачем вам использовать EWM?
whuber

Ответы:

12

Вы можете использовать следующую рекуррентную формулу:

σi2=Si=(1α)(Si1+α(xiμi1)2)

Здесь - ваше наблюдение на шаге, - оценочный EWM, а - предыдущая оценка дисперсии. Смотрите раздел 9 здесь для доказательства и псевдокода. i μ i - 1 S i - 1xiiμi1Si1

Роман Шаповалов
источник
используя приведенную выше формулу и список [1, 2, 3, 4, 5], я получил SD = 0,144, тогда как нормальный SD образца составляет 1,58. Между двумя разными SD есть коэффициент 10x. Это нормально?
Мариска
3
Используя вы также получаете среднее значение = 4,98, что также бесполезно. :) Используя такой коэффициент, вы кладете почти весь вес на последнее измерение. Более реалистичные значения близки к нулю, в этом случае они учитывают средние значения на больших расстояниях. Для вашего примера попробуйте , но на практике вам, вероятно, потребуется усреднить больше измерений, чтобы значения в районе были более реалистичными. α α = 0,2 α = 0,01α=0.98αα=0.2α=0.01
Роман Шаповалов