Метод ewm
Метод ewm применяется к Series
и возвращает объект EWM, который предоставляет
возможность вычислять различные экспоненциально
взвешенные статистики, такие как среднее,
дисперсия и стандартное отклонение. Основные
параметры метода: com (центрированное
время полураспада), span (период
сглаживания), halflife (период
полураспада), alpha (коэффициент
сглаживания), adjust (корректировка
весов) и ignore_na (игнорирование
пропусков).
Синтаксис
ser.ewm(com=None, span=None, halflife=None, alpha=None,
min_periods=0, adjust=True, ignore_na=False, axis=0)
Пример
Давайте вычислим экспоненциально взвешенное
среднее для ряда чисел с параметром span=3:
import pandas as pd
ser = pd.Series([1, 2, 3, 4, 5])
res = ser.ewm(span=3).mean()
print(res)
Результат выполнения кода:
0 1.000000
1 1.500000
2 2.250000
3 3.125000
4 4.062500
dtype: float64
Пример
Теперь вычислим экспоненциально взвешенное
стандартное отклонение с параметром span=5:
import pandas as pd
ser = pd.Series([10, 20, 15, 25, 30])
res = ser.ewm(span=5).std()
print(res)
Результат выполнения кода:
0 NaN
1 7.071068
2 4.163029
3 4.576073
4 6.131342
dtype: float64
Пример
Рассмотрим влияние параметра adjust
на результат. По умолчанию он равен True,
что даёт более точные веса. Установим его
в False и сравним:
import pandas as pd
ser = pd.Series([1, 2, 3, 4, 5])
res_adjust = ser.ewm(span=3, adjust=True).mean()
res_no_adjust = ser.ewm(span=3, adjust=False).mean()
print("adjust=True:")
print(res_adjust)
print("\nadjust=False:")
print(res_no_adjust)
Результат выполнения кода:
adjust=True:
0 1.000000
1 1.500000
2 2.250000
3 3.125000
4 4.062500
dtype: float64
adjust=False:
0 1.000000
1 1.666667
2 2.428571
3 3.222222
4 4.043478
dtype: float64
Пример
Также можно вычислить экспоненциально взвешенную дисперсию, передав соответствующий метод:
import pandas as pd
ser = pd.Series([5, 10, 15, 20, 25])
res = ser.ewm(span=4).var()
print(res)
Результат выполнения кода:
0 NaN
1 12.500000
2 19.444444
3 20.571429
4 20.310345
dtype: float64