无法预测测试数据的时间序列ARIMA

问题描述 投票:1回答:1

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

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

这是我使用的代码:

#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()

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

python time-series forecasting arima pmdarima
1个回答
0
投票

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

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

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

2)获取模型的统计信息>

model.summary()

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

© www.soinside.com 2019 - 2024. All rights reserved.