statsmodels ARIMA predict 给我差分信号的预测,而不是实际信号的预测。我犯了什么错误?
statsmodels ARIMA predict is giving me predictions of the differenced signal instead of predictions of the actual signal. What mistake am I making?
信号看起来是这样
original signal
使用plot(output.diff())得到的差分信号看起来是这样的
differenced signal
接下来通过分析ACF和PACF得到ARIMA模型的参数
模型按以下方式拟合
model = ARIMA(output.values, order=(2,1,1))
model_fit = model.fit(disp=0)
我用的时候
model_fit.plot_predict(动态=假)
plt.show()
完美!
result using plot_predict
但是当我使用 plt.plot(model_fit.predict(dynamic=False))
它给出了差分信号的预测
result using predict of arima
如果您使用的是模型sm.tsa.ARIMA
,那么您可以使用以下:
plt.plot(model_fit.predict(dynamic=False, typ='levels'))
但是,此模型已弃用,并将在未来的 Statsmodels 版本中删除。为了与未来版本兼容,您可以使用新的 ARIMA 模型:
from statsmodels.tsa.arima.model import ARIMA
或
import statsmodels.api as sm
model = sm.tsa.arima.ARIMA(output.values, order=(2,1,1))
这个较新的模型将自动生成实际信号的预报和预测,因此在这种情况下您不需要使用 typ='levels'
。
信号看起来是这样
original signal
使用plot(output.diff())得到的差分信号看起来是这样的
differenced signal
接下来通过分析ACF和PACF得到ARIMA模型的参数
模型按以下方式拟合
model = ARIMA(output.values, order=(2,1,1))
model_fit = model.fit(disp=0)
我用的时候
model_fit.plot_predict(动态=假)
plt.show()
完美!
result using plot_predict
但是当我使用 plt.plot(model_fit.predict(dynamic=False))
它给出了差分信号的预测
result using predict of arima
如果您使用的是模型sm.tsa.ARIMA
,那么您可以使用以下:
plt.plot(model_fit.predict(dynamic=False, typ='levels'))
但是,此模型已弃用,并将在未来的 Statsmodels 版本中删除。为了与未来版本兼容,您可以使用新的 ARIMA 模型:
from statsmodels.tsa.arima.model import ARIMA
或
import statsmodels.api as sm
model = sm.tsa.arima.ARIMA(output.values, order=(2,1,1))
这个较新的模型将自动生成实际信号的预报和预测,因此在这种情况下您不需要使用 typ='levels'
。