ARIMA模型
1、自回歸模型(AR)
使用自身的數(shù)據(jù)進(jìn)行預(yù)測,且只適用于預(yù)測與自身前期相關(guān)的現(xiàn)象。
注意:需滿足具有平穩(wěn)性的要求,需滿足自相關(guān)性,自相關(guān)系數(shù)需大于0.5。
p階自回歸公式:
y
t
=
μ
+
∑
i
=
1
p
γ
i
y
t
?
i
+
e
t
y_{t}=μ+\sum_{i=1}^p\gamma_{i}y_{t-i}+e_{t}
yt?=μ+i=1∑p?γi?yt?i?+et?
? 其中yt為當(dāng)前值,p為階數(shù)(時(shí)間間隔,比如按天統(tǒng)計(jì)1號與2號為1階,1號與3號為2階),
γ
i
\gamma_{i}
γi?為自相關(guān)系數(shù),et為誤差項(xiàng),i表示當(dāng)前值與前多少個(gè)歷史值有關(guān)。
2、移動平均模型(MA):
自回歸模型中的誤差項(xiàng)累加,能有效消除預(yù)測中的隨機(jī)波動
q階自回歸公式:
y
t
=
μ
+
∑
i
=
1
q
θ
i
e
t
?
i
+
e
t
y_{t}=μ+\sum_{i=1}^q\theta_{i}e_{t-i}+e_{t}
yt?=μ+i=1∑q?θi?et?i?+et?
3、自回歸移動平均模型(ARMA)
將二者結(jié)合就可以得到ARMA,其中p,q需要自己指定。指定p、q需根據(jù)ACF、PACF以及BIC和AIC準(zhǔn)則確定最優(yōu)解(后續(xù)介紹)。
y
t
=
μ
+
∑
i
=
1
p
γ
i
y
t
?
i
+
e
t
+
∑
i
=
1
q
θ
i
e
t
?
i
y_{t}=μ+\sum_{i=1}^p\gamma_{i}y_{t-i}+e_{t}+\sum_{i=1}^q\theta_{i}e_{t-i}
yt?=μ+i=1∑p?γi?yt?i?+et?+i=1∑q?θi?et?i?
需求解的項(xiàng)為
γ
i
和
θ
i
\gamma_{i}和\theta_{i}
γi?和θi?
4、ARIMA模型
ARIMA(p,d,q)全稱差分自回歸移動平均模型,無疑是在ARMA的基礎(chǔ)上做了差分。
差分法詳解之前寫過了一篇文章
機(jī)器學(xué)習(xí)——時(shí)間序列ARIMA模型(一):差分法詳解_天海一直在的博客-CSDN博客_arima 差分
總結(jié)一下
ARIMA原理其實(shí)就是將非平穩(wěn)的時(shí)間序列,轉(zhuǎn)化為平穩(wěn)的時(shí)間序列
然后將因變量僅對其滯后值和隨機(jī)誤差項(xiàng)的現(xiàn)值和滯后值進(jìn)行回歸(ARMA公式)所建立的模型
5、代碼實(shí)現(xiàn)
1、導(dǎo)包
pandas做數(shù)據(jù)處理,matplotlib和seaborn做可視化,statsmodels中的arima來對數(shù)據(jù)進(jìn)行建模
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from statsmodels.tsa.arima.model import ARIMA
2、數(shù)據(jù)預(yù)處理
這里我選擇2000年至2021年道瓊斯股市的部分指數(shù)作為訓(xùn)練數(shù)據(jù)集
data = pd.read_csv('data2000_2021.csv',index_col=0,parse_dates=[0])
data
縱向切割:僅選擇close列,并對數(shù)據(jù)進(jìn)行以月為單位的分割,
stock_month = data['close'].resample("M").mean()
stock_month
橫向切割:選擇2000年至2019年的數(shù)據(jù)
stock_train = stock_month['2000':'2019']
stock_train
3、做一階差分
stock_diff = stock_train.diff()
stock_diff = stock_diff.dropna()
plt.figure()
plt.plot(stock_diff)
plt.title('first difference')
plt.show()
繪圖
stock_train.plot(figsize=(12,8))
4、使用模型
其中order中的參數(shù)分別為p、d、q
model = ARIMA(stock_train, order=(1,0,8))
result = model.fit()
5、預(yù)測值
注意預(yù)測值的開始要在所給出數(shù)據(jù)的范圍內(nèi),結(jié)束值不做要求
pred = result.predict(250,288,dynamic = True)
pred
繪圖
plt.figure(figsize=(5,5))
plt.plot(pred)
plt.plot(stock_month)
plt.show()
最后結(jié)果:文章來源:http://www.zghlxwxcb.cn/news/detail-781856.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-781856.html
到了這里,關(guān)于機(jī)器學(xué)習(xí)——時(shí)間序列ARIMA模型(三):AR、MA、ARMA、ARIMA模型定義及公式介紹及股價(jià)預(yù)測案例代碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!