我正在尝试使用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()
关于如何更好地适应的任何想法?谢谢您的阅读。
进行预测之前,您需要检查模型是否已准备好进行预测。1)检查模型的诊断信息
model.plot_diagnostics(figsize=(8,8))
检查残差是否为正态分布,并且残差是否存在相关性。
2)获取模型的统计信息>
model.summary()
这显示了AIC得分以及Ljung-Box(Prob(Q))和Jarque-Bera(Prob(JB))统计信息。您可以使用p值来确认残差中的残差分布和相关性。如果满足所有这些条件,您可以将模型用于预测。否则,您需要调整参数。