首页 > 解决方案 > 无法预测测试数据时间序列 ARIMA

问题描述

我正在尝试使用 ARIMA 模型来预测股票价格数据,具体来说,我正在使用 auto_arima。我的目标是预测未来 30 天的股价,并将其与测试数据进行比较。

我无法正确预测数据,如下图所示。 无法正确预测

这是我使用的代码:

#general
import pandas as pd
import numpy as np
import matplotlib.pylab as plt
%matplotlib inline
import yfinance as yf

ticker = "0118.KL"
data = yf.Ticker(ticker)
df = data.history(start="2019-01-01",end="2020-04-30")

df = df.filter(items=['Close'])
train = df[:-30]
test = df[-30:]

from pmdarima import auto_arima

model = auto_arima(train,trace=True,m=7,error_action='ignore', suppress_warnings=True)
model.fit(train)

forecast = model.predict(n_periods=30)
forecast = pd.DataFrame(forecast,index = test.index,columns=['Prediction'])

plt.plot(test, label='Valid')
plt.plot(forecast, label='Prediction')
plt.show()

关于如何更好地适应的任何想法?感谢您的阅读。

标签: pythontime-seriesforecastingarimapmdarima

解决方案


在预测之前,您需要检查您的模型是否已准备好进行预测。1)检查模型的诊断

model.plot_diagnostics(figsize=(8,8))

检查残差是否呈正态分布,残差是否存在相关性。

2)获取模型的统计信息

model.summary()

这显示了 AIC 分数和 Ljung-Box(Prob(Q)) 和 Jarque-Bera (Prob(JB)) 统计量。您可以使用 p 值确认残差中的残差分布和相关性。如果满足所有这些条件,您可以使用模型进行预测。否则您需要调整参数。


推荐阅读