Чтобы оптимизировать расчет среднего значения EWM для панд, я реплицирую его, используя библиотеку numba. Однако я не могу понять, как выполняется вычисление при наличии значений nan.
Документация гласит следующее:
Когда ignore_na имеет значение False (по умолчанию), веса основаны на абсолютных позициях. Например, веса x и y, использованные при расчете окончательного средневзвешенного значения ... (1-альфа) ** 2 и альфа (если настройка - False).
Если установить span
в 2 с массивом [1, None, 2]
, это будет означать, что третье значение EMA будет вычислено как:
alpha = 2 / (2 + 1)
((1 - alpha)**2) * 1 + alpha * 2
, что составляет 1,6666. Однако фактическое значение при выполнении series.ewm(span=2, adjust=False).mean()[-1]
составляет 1,85714286.
Какая точная формула в случае значения nan? Приведенная выше формула не имеет большого смысла, так как веса не равны - было бы больше смысла, если бы оба веса суммировались в 1.