我能够在没有nan值的情况下复制熊猫的ewma功能,但我不明白在这两者之间,ewma是如何与nan价值一起工作的。
例如,对于一个系列:[nan,2,nan,4,5],具有质量中心25的ewma给出:[nan, 2, 2, 3.0392006149116,3.72707131594179]。
我可以看到,如果有一个nan值,那么它将只是向前填充。但是对于nan值之后的数字(本例中为4),我不知道ewma如何给出3.0392?
它似乎没有在2,4或2,2,4上应用ewma,有人能告诉我它是如何计算的吗?谢谢你的帮助!
发布于 2015-07-08 09:09:58
我认为这是adjust参数在pd.ewma()中的意外行为。您可以将其设置为False,以使标准的指数移动平均公式工作。
import pandas as pd
import numpy as np
s = pd.Series([np.nan, 2, np.nan, 4, 5])
ema = pd.ewma(s, com=25, adjust=False)
# formula
# EMA_t = alpha*S_t + (1-alpha)*EMA_{t-1}
alpha = 1/(1+25)
ema[4] == alpha*s[4] + (1-alpha)*ema[3]
Out[64]: Truehttps://stackoverflow.com/questions/31283387
复制相似问题