首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ARIMA进行预测

使用ARIMA进行预测
EN

Stack Overflow用户
提问于 2018-12-05 18:16:45
回答 2查看 1.2K关注 0票数 4

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

代码语言:javascript
复制
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)最适合我当前的数据,我如何让它预测未来的点?

EN

回答 2

Stack Overflow用户

发布于 2018-12-05 19:38:26

最简单的方法是:

代码语言:javascript
复制
model00 = ARIMA(np.array(dataframe.ix[:,4]), dates=None,order=(2,1,0))
model11 = model00.fit(disp=1)
model11.forecast()
model11.summary()

你会得到你的预测加号:

票数 2
EN

Stack Overflow用户

发布于 2018-12-05 20:50:22

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

代码语言:javascript
复制
 fcast<-forecast(fit,h=3)
 fcast<-data.frame(fcast)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53629933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档