Метод cov
Метод cov аксессора expanding применяется к DataFrame
или Series и вычисляет ковариацию между двумя столбцами
или рядами данных на основе расширяющегося окна. Это позволяет
отслеживать, как изменяется ковариация между переменными
по мере увеличения количества наблюдений.
Синтаксис
series.expanding().cov(other, pairwise=None, ddof=1, numeric_only=False)
Пример
Создадим два ряда данных и вычислим ковариацию между ними с расширяющимся окном:
import pandas as pd
ser1 = pd.Series([1, 2, 3, 4, 5])
ser2 = pd.Series([10, 20, 30, 40, 50])
res = ser1.expanding().cov(ser2)
print(res)
Результат выполнения кода:
0 NaN
1 5.000000
2 10.000000
3 16.666667
4 25.000000
dtype: float64
В результате мы видим, что ковариация увеличивается с каждым
новым наблюдением. При первом элементе результат равен NaN,
так как для расчета требуется минимум два наблюдения.
Пример
Вычислим ковариацию между двумя столбцами DataFrame
с использованием расширяющегося окна:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df['a'].expanding().cov(df['b'])
print(res)
Результат выполнения кода:
0 NaN
1 5.000000
2 10.000000
3 16.666667
4 25.000000
dtype: float64
Результат аналогичен предыдущему примеру, так как мы работаем с теми же данными.
Пример
Изменим параметр ddof (дельта степеней свободы) для
корректировки расчета ковариации:
import pandas as pd
ser1 = pd.Series([1, 2, 3, 4, 5])
ser2 = pd.Series([10, 20, 30, 40, 50])
res = ser1.expanding().cov(ser2, ddof=0)
print(res)
Результат выполнения кода:
0 NaN
1 2.500000
2 6.666667
3 12.500000
4 20.000000
dtype: float64
При ddof=0 ковариация рассчитывается с делением на n,
а не на n-1, что дает меньшие значения по сравнению
с предыдущим примером.