как построить EWMA на основе времени - PullRequest
3 голосов
/ 04 мая 2019

Я рассчитываю основанную на времени EWMA, как определено:

image

where:

image

On the following example data frame df:

index      time       x
0          1          5
1          1.3        4
2          1.4        8
3          2.8        3  

Например, во время 3:

Я знаю, что в python мы можем использовать df['ewma'] = df['x'].ewm(alpha = c) для вычисления простого ewma, но здесь c может быть только фиксированным числом с плавающей запятой.

Мой вопрос: как мне справиться с изменением параметра c?Я мог бы рекурсивно перебирать весь df, чтобы получить ответы, но это кажется действительно простым.

Любой совет, как я мог бы подойти к этой проблеме?Заранее спасибо!

1 Ответ

0 голосов
/ 04 мая 2019

Использование shift ()

По сути, вам нужно время [x] и время [x-1], чтобы решить вашу проблему, если я правильно понял.

Просто создайте новый столбец:

df['time_prev'] = df['time'].shift(1)


print(df)

   index  time  x  time_prev
0      0   1.0  5        NaN
1      1   1.3  4        1.0
2      2   1.4  8        1.3
3      3   2.8  3        1.4

Затем вы можете использовать time_prev для предыдущего значения в вашем расчете. Вы можете настроить его на более старые значения, увеличив в качестве примера .shift (3).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...