【问题标题】:Forecasting with ARIMA使用 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 不返回任何内容并且缩进错误。也许它在原始帖子之后被更改了。

标签: python arima


【解决方案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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    • 2021-11-04
    • 2019-03-19
    • 2017-06-26
    • 1970-01-01
    • 2023-03-30
    相关资源
    最近更新 更多