轉自:Eureka
來源:https://zhuanlan.zhihu.com/p/35128342
1.時間序列常用模型
2. 時間序列預處理
2.1 平穩性檢驗
2.2 純隨機性檢驗
3 .平穩時間序列分析
3.1 AR模型
3.2 MA模型
3.3 ARMA模型
3.4 平穩時間序列建模
4. 非平穩時間序列分析
4.1 差分運算
4.2 ARIMA模型
5.案例
上證指數2020-04-14日內分時圖
#時序圖
close.plot()
(有明顯的趨勢,可以判斷是非平穩的)
#自相關圖
plot_acf(close,lags=180).show()
(自相關圖顯示時間序列有很強的相關性)
#平穩性檢測
print(u'原始序列的ADF檢驗結果爲:', ADF(close))
'''
ADF(close))
原始序列的ADF檢驗結果爲: (0.26832158954528323, 0.9758434956447575, 0, 239, {'1%': -3.458010773719797, '5%': -2.8737103617125186, '10%': -2.5732559963936206}, 554.5186351858798)
'''
(單位根統計量對應的p的值顯著大於0.05,最終判斷該序列是非平穩序列的(非平穩不一定不是白噪聲))
#1階差分後的結果
D_data = data.diff().dropna() #1階差分,丟棄na值
D_close = D_data['close'].ix['2020-04-14'].reset_index(drop=True)
#時序圖
D_close.plot()
#自相關圖
plot_acf(D_close,lags=180).show()
(在零附近波動)
#平穩性檢測
print(u'差分序列的ADF檢驗結果爲:', ADF(D_close))
'''
差分序列的ADF檢驗結果爲: (-18.45521664517621, 2.1508169037396976e-30, 0, 239, {'1%': -3.458010773719797, '5%': -2.8737103617125186, '10%': -2.5732559963936206}, 554.520649247294)
'''
(1階差分後時序圖在均值附近平穩的波動、自相關圖有較強的短期相關性、單位根檢驗p值小於0.05,所以1階差分後的序列是平穩序列)
#返回統計量和p值
print(u'差分序列的白噪聲檢驗結果爲:', acorr_ljungbox(D_close,lags=1))
'''
差分序列的白噪聲檢驗結果爲: (array([0.20060231]), array([0.65423511]))
'''
(輸出p值遠大於0.05,所以1階差分之後是平穩白噪聲序列)
#返回統計量和p值
print(u'差分序列的白噪聲檢驗結果爲:', acorr_ljungbox(D_close.diff().dropna(),lags=1))
'''
差分序列的白噪聲檢驗結果爲: (array([39.43026453]), array([3.39986541e-10]))
'''
(輸出p值遠小於0.05,所以2階差分之後是平穩非白噪聲序列)
擬合ARMA模型:一種人爲識別,看差分後的ACF\PACF,第二種方法是相對最有模型
#AR模型,PACF p階截尾
plot_pacf(D_close.diff().dropna(),lags=180).show()
#MA模型,ACF p階截尾
plot_acf(D_close.diff().dropna(),lags=180).show()
2階差分後的自相關圖顯示出一階截尾,偏自相關顯示拖尾性,所以考慮MA(1)模型進行擬合1階差分後的序列,即對原序列建立ARIMA(0,2,1)模型
#建立ARIMA(0, 2, 1)模型
model = ARIMA(close, (0,2,1)).fit()
#給出一份模型報告
model.summary2()
"""
Results: ARIMA
==================================================================
Model: ARIMA BIC: 617.8660
Dependent Variable: D2.close Log-Likelihood: -300.72
Date: 2020-04-26 14:10 Scale: 1.0000
No. Observations: 238 Method: css-mle
Df Model: 2 Sample: 2
Df Residuals: 236 0
Converged: 1.0000 S.D. of innovations: 0.846
No. Iterations: 41.0000 HQIC: 611.647
AIC: 607.4492
------------------------------------------------------------------
Coef. Std.Err. t P>|t| [0.025 0.975]
------------------------------------------------------------------
const 0.0007 0.0008 0.8941 0.3722 -0.0008 0.0023
ma.L1.D2.close -1.0000 0.0120 -83.5519 0.0000 -1.0234 -0.9765
---------------------------------------------------------------------------
Real Imaginary Modulus Frequency
---------------------------------------------------------------------------
MA.1 1.0000 0.0000 1.0000 0.0000
==================================================================
"""
model.forecast(3) #作爲期3min的預測,返回預測結果、標準誤差、置信區間。
'''
(array([2827.50465589, 2827.7300212 , 2827.95609594]),
array([0.846307 , 1.19688515, 1.46591118]),
array([[2825.84592466, 2829.16338712],
[2825.38416942, 2830.07587299],
[2825.08296282, 2830.82922905]]))
'''