Метод cov аксессора ewm
Метод cov аксессора ewm применяется к Series
и вычисляет экспоненциально взвешенную ковариацию между
этим рядом и другим рядом или столбцом. Метод полезен
для анализа зависимости между временными рядами с учётом
весов, где более поздним наблюдениям придаётся больший вес.
Основные параметры: other - второй ряд для вычисления
ковариации, pairwise - если передан DataFrame, то
вычисляет попарные ковариации для всех столбцов,
bias - если False, то нормализация
производится по количеству эффективных наблюдений.
Синтаксис
series.ewm().cov(other, pairwise=None, bias=False)
Пример
Вычислим экспоненциально взвешенную ковариацию между двумя рядами:
import pandas as pd
ser1 = pd.Series([1, 2, 3, 4, 5])
ser2 = pd.Series([5, 4, 3, 2, 1])
res = ser1.ewm(span=3).cov(ser2)
print(res)
Результат выполнения кода:
0 NaN
1 -0.117647
2 -0.363636
3 -0.702128
4 -1.093103
dtype: float64
Пример
Используем параметр bias для изменения способа нормализации:
import pandas as pd
ser1 = pd.Series([1, 2, 3, 4, 5])
ser2 = pd.Series([5, 4, 3, 2, 1])
res = ser1.ewm(span=3).cov(ser2, bias=True)
print(res)
Результат выполнения кода:
0 NaN
1 -0.100000
2 -0.321429
3 -0.636364
4 -1.008000
dtype: float64
Пример
Применим метод к DataFrame для вычисления попарной ковариации:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [5, 4, 3, 2, 1],
'c': [2, 3, 4, 5, 6]
})
res = df.a.ewm(span=3).cov(df[['b', 'c']], pairwise=True)
print(res)
Результат выполнения кода:
b c
0 NaN NaN
1 -0.117647 0.117647
2 -0.363636 0.363636
3 -0.702128 0.702128
4 -1.093103 1.093103
Пример
Вычислим ковариацию с использованием разных сглаживающих параметров:
import pandas as pd
ser1 = pd.Series([1, 2, 3, 4, 5])
ser2 = pd.Series([5, 4, 3, 2, 1])
res = ser1.ewm(alpha=0.5).cov(ser2)
print(res)
Результат выполнения кода:
0 NaN
1 -0.166667
2 -0.500000
3 -0.928571
4 -1.400000
dtype: float64