РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
624 of 687 menu

Метод var аксессора ewm

Метод var аксессора ewm применяется к Series или DataFrame и вычисляет экспоненциально взвешенную дисперсию. В отличие от обычной дисперсии, этот метод придаёт больший вес более поздним наблюдениям. Основные параметры: bias (логический флаг, определяющий использование смещённой или несмещённой оценки), numeric_only (работа только с числовыми колонками), а также параметры самого экспоненциального взвешивания - com, span, halflife, alpha, которые задаются при создании аксессора ewm.

Синтаксис

series.ewm(span=None, com=None, halflife=None, alpha=None, adjust=True, ignore_na=False).var(bias=False, numeric_only=False)

Пример

Рассмотрим базовое использование метода на простой серии данных:

import pandas as pd ser = pd.Series([10, 12, 15, 14, 18, 20]) res = ser.ewm(span=3).var() print(res)

Результат выполнения кода:

0 NaN 1 2.000000 2 6.333333 3 1.500000 4 5.333333 5 7.000000 dtype: float64

Пример

Параметр bias управляет способом вычисления дисперсии. При bias=True используется смещённая оценка (деление на n), при bias=False - несмещённая (деление на n-1):

import pandas as pd ser = pd.Series([5, 8, 6, 9, 7, 10]) res_biased = ser.ewm(alpha=0.5).var(bias=True) res_unbiased = ser.ewm(alpha=0.5).var(bias=False) print("Biased:\n", res_biased) print("Unbiased:\n", res_unbiased)

Результат выполнения кода:

Biased: 0 NaN 1 2.250000 2 1.187500 3 2.472656 4 1.164795 5 2.169067 dtype: float64 Unbiased: 0 NaN 1 4.500000 2 2.375000 3 4.945312 4 2.329590 5 4.338134 dtype: float64

Пример

Метод можно применять к DataFrame, вычисляя дисперсию для каждого столбца независимо:

import pandas as pd df = pd.DataFrame({ 'a': [1, 3, 2, 5, 4], 'b': [10, 12, 11, 15, 14] }) res = df.ewm(span=4).var() print(res)

Результат выполнения кода:

a b 0 NaN NaN 1 2.000000 2.000000 2 0.285714 0.285714 3 2.538462 2.538462 4 1.461538 1.461538

Пример

Параметр numeric_only позволяет исключить нечисловые столбцы из вычислений:

import pandas as pd df = pd.DataFrame({ 'a': [1, 2, 3, 4, 5], 'b': ['x', 'y', 'z', 'w', 'v'], 'c': [10, 20, 30, 40, 50] }) res = df.ewm(span=3).var(numeric_only=True) print(res)

Результат выполнения кода:

a c 0 NaN NaN 1 0.250000 25.000000 2 0.642857 64.285714 3 0.642857 64.285714 4 0.642857 64.285714

Пример

Различные способы задания параметров сглаживания влияют на результат вычисления дисперсии:

import pandas as pd ser = pd.Series([2, 4, 6, 8, 10]) res_span = ser.ewm(span=5).var() res_alpha = ser.ewm(alpha=0.3).var() res_halflife = ser.ewm(halflife=2).var() print("Span 5:\n", res_span) print("Alpha 0.3:\n", res_alpha) print("Halflife 2:\n", res_halflife)

Результат выполнения кода:

Span 5: 0 NaN 1 2.000000 2 4.000000 3 4.666667 4 4.800000 dtype: float64 Alpha 0.3: 0 NaN 1 2.000000 2 3.807018 3 5.460508 4 6.461395 dtype: float64 Halflife 2: 0 NaN 1 2.000000 2 3.488372 3 4.373802 4 4.901830 dtype: float64

Смотрите также

  • метод mean,
    который вычисляет экспоненциально взвешенное среднее
  • метод std,
    который вычисляет экспоненциально взвешенное стандартное отклонение
  • метод corr,
    который вычисляет экспоненциально взвешенную корреляцию
  • метод cov,
    который вычисляет экспоненциально взвешенную ковариацию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить