使用 ARIMA 进行预测

Posted

技术标签:

【中文标题】使用 ARIMA 进行预测【英文标题】:Forecasting with ARIMA 【发布时间】:2019-05-06 21:11:06 【问题描述】:

我正在使用 ARIMA 模型预测时间序列数据。我使用以下代码找到了最适合的 ARIMA 模型:

def run_arima_model(df, ts, p,d,q):
from statsmodels.tsa.arima_model import ARIMA
model=ARIMA(df[ts], order=(p,d,q))
results_=model.fit(disp=-1)
len_results = len(results_.fittedvalues)
ts_modified = df[ts][-len_results:]

# calculate root mean square error (RMSE) and residual sum of squares (RSS)
rss = sum((results_.fittedvalues - ts_modified)**2)
rmse = np.sqrt(rss / len(df[ts]))

# plot fit
plt.plot(df[ts])
plt.plot(results_.fittedvalues, color = 'red')
plt.title('For ARIMA model (%i, %i, %i) for ts %s, RSS: %.4f, RMSE: %.4f' %(p, d, q, ts, rss, rmse))

plt.show()
plt.close()

return results_
model_AR = run_arima_model(df, 
                       ts = 'I', 
                       p = 1, 
                       d = 0, 
                       q = 0)

# MA model with 1st order differencing - ARIMA (0,0,1)
model_MA = run_arima_model(df, 
                       ts = 'I', 
                       p = 0, 
                       d = 0, 
                       q = 1)

# ARMA model with 1st order differencing - ARIMA (1,0,1)
model_MA = run_arima_model(df, 
                       ts = 'I', 
                       p = 1, 
                       d = 0, 
                       q = 1)

ARIMA(1,0,1) 最适合我当前的数据,我如何让它来预测未来的点?

【问题讨论】:

函数run_arima_model 不返回任何内容并且缩进错误。也许它在原始帖子之后被更改了。 【参考方案1】:

最简单的方法:

model00 = ARIMA(np.array(dataframe.ix[:,4]), dates=None,order=(2,1,0))
model11 = model00.fit(disp=1)
model11.forecast()
model11.summary()

你会得到你的预测加:

【讨论】:

如果我打印model11的预测,它会给我以下: (array([0.13386933]), array([0.01517833]), array([[0.10412034, 0.16361831]]))我希望能够指定我需要接下来的 50 个预测点,有没有办法做到这一点?此外,为什么它会在一个数组中给我这个? 要预测接下来的 50 个点,您必须记住 ARIMA 是一个自回归模型,它使用自身来预测未来值,使用时间滞后,因此您预测下一个值,然后使用这个新值连接使用原始时间序列来预测下一个值等等。【参考方案2】:

您可以使用以下代码获得 3 个未来点

 fcast<-forecast(fit,h=3)
 fcast<-data.frame(fcast)

【讨论】:

以上是关于使用 ARIMA 进行预测的主要内容,如果未能解决你的问题,请参考以下文章

使用 auto.arima() 和 xreg 进行样本外预测

使用 auto.arima 和 xreg=解释变量进行 R 时间序列预测

使用动态ARIMA预测未来

python使用ARIMA进行时间序列的预测(基础教程)

产生直线预测的 ARIMA 模型

Python statsmodels ARIMA 预测