Pandas 时间序列转换中的EWM

Pandas 时间序列转换中的EWM,pandas,time-series,arima,Pandas,Time Series,Arima,我试图用ARIMA做一个时间序列预测。 所以,作为第一步,我要做一些级数变换 #进行日志转换 dflog=np.log(df) #取指数加权平均值`在此处输入代码` df_expwighted_mean=dflog.ewm(span=12).mean() #以移动平均线为例 df_expwighted_mean_diff=dflog-df_expwighted_mean #差异 df_diff=df_expwighted_mean_diff-df_expwighted_mean_diff.shi

我试图用ARIMA做一个时间序列预测。 所以,作为第一步,我要做一些级数变换

#进行日志转换
dflog=np.log(df)
#取指数加权平均值`在此处输入代码`
df_expwighted_mean=dflog.ewm(span=12).mean()
#以移动平均线为例
df_expwighted_mean_diff=dflog-df_expwighted_mean
#差异
df_diff=df_expwighted_mean_diff-df_expwighted_mean_diff.shift()
#为NaN填充零
df_diff=df_diff.fillna(0)
在使用下面的代码之后,我非常能够回到原来的系列

#采取一些累积措施以消除差异
bdf_expwighted_mean_diff=df_diff.cumsum()
#添加滚动平均值,因为我们最初减少了它
bdf_log=bdf_expwighted_mean_diff+df_expwighted_mean
#按照我们最初进行对数变换的方式进行求幂运算
bdf=np.exp(bdf_log)
但当我在预测系列中这样做时,问题就来了。 它失败了,因为我没有预测序列的EWM 所以基本上,我想要一些方法来反转指数加权平均值

df_expwighted_mean=dflog.ewm(span=12.mean)()

有什么想法吗?

在时间序列预测中,反转指数加权平均值是没有意义的。指数加权平均值用于平滑时间序列,基本上,您试图从序列中去除噪声,否则会使序列难以预测

例如:让红色系列作为实际数据,蓝色是EWMA系列,绿色是基于下图中EWMA系列的预测系列

一旦使用平滑序列进行预测,反转EWMA将意味着向其添加噪声。由于您存储了原始数据中的噪声数据,因此可以在源数据上使用它。通常,您只需按原样使用EWMA上的预测,即不需要对EWMA进行反转


在您的情况下,只需执行
cumsum
exp
(反向差分和记录)。

这正是我的问题所在。我想在使用EWM进行预测后返回原始值。如果我只使用对数变换、box-cox变换或任何数学单值变换,我就能够返回。但是这个EWMA,我不能。即使是WMA,我也找到了一些方法。@Johnson Francis,我是说你不能也不应该反向转换。EWMA消除噪音,反之则意味着增加噪音。预测仍然可用,没有EWMA反向。你应该把EWMA看作是清洁而不是变换。