通常,我们计算指数移动平均值如下:
y_t = (1 - alpha) * y_tminus1 + alpha * x_t
其中alpha是为指数移动平均指定的alpha,y_t是得到的移动平均值,x_t是新输入的数据。
这似乎也在指数加权移动平均线Pandas' implementation背后的方法论中得到了证实。
所以我写了一个在线算法来计算数据集的指数加权移动平均值:
def update_stats_exp(new, mean):
mean = (1 - ALPHA) * mean + ALPHA* new
return mean
然而,与Pandas的实现相比,这会返回不同的移动平均线,由以下两行代码调用:
exponential_window = df['price'].ewm(alpha=ALPHA, min_periods=LOOKBACK,
adjust=False, ignore_na=True)
df['exp_ma'] = exponential_window.mean()
在上面的两段代码中,我保持ALPHA相同,但它们导致了不同的移动平均线,即使Pandas在指数加权窗口上提供的文档似乎与我想到的方法相匹配。
有人能否阐明我为计算移动平均线提供的在线功能与熊猫实现相同功能之间的差异?还有,有一种简单的方法可以将Pandas的实现制定成在线算法吗?
非常感谢!