ARIMA模型全稱為自回歸積分滑動平均模型(Autoregressive Integrated Moving Average Model,簡記ARIMA),是由博克思(Box)和詹金斯(Jenkins)於70年代初提出一著名時間序列預測方法 ,所以又稱為box-jenkins模型、博克思-詹金斯法。其中ARIMA(p,d,q)稱為差分自回歸移動平均模型,AR是自回歸, p為自回歸項; MA為移動平均,q為移動平均項數,d為時間序列成為平穩時所做的差分次數。所謂ARIMA模型,是指將非平穩時間序列轉化為平穩時間序列,然后將因變量僅對它的滯后值以及隨機誤差項的現值和滯后值進行回歸所建立的模型。ARIMA模型根據原序列是否平穩以及回歸中所含部分的不同,包括移動平均過程(MA)、自回歸過程(AR)、自回歸移動平均過程(ARMA)以及ARIMA過程。
1. ARIMA的優缺點
優點: 模型十分簡單,只需要內生變量而不需要借助其他外生變量。
缺點:
1.要求時序數據是穩定的(stationary),或者是通過差分化(differencing)后是穩定的。
2.本質上只能捕捉線性關系,而不能捕捉非線性關系。
注意,采用ARIMA模型預測時序數據,必須是穩定的,如果不穩定的數據,是無法捕捉到規律的。比如股票數據用ARIMA無法預測的原因就是股票數據是非穩定的,常常受政策和新聞的影響而波動。
2. 判斷是時序數據是穩定的方法。
嚴謹的定義: 一個時間序列的隨機變量是穩定的,當且僅當它的所有統計特征都是獨立於時間的(是關於時間的常量)。
判斷的方法:
- 穩定的數據是沒有趨勢(trend),沒有周期性(seasonality)的; 即它的均值,在時間軸上擁有常量的振幅,並且它的方差,在時間軸上是趨於同一個穩定的值的。
- 可以使用Dickey-Fuller Test進行假設檢驗。(另起文章介紹)
股票預測 Python實現
步驟
本系統使用yahoo_finance,pandas,numpy,matplotlib,statsmodels,scipy,pywt這些包
1.從yahoo_finance包中獲取股票信息,使用panda存儲及處理數據,只提取其中Close屬性,按照時間排序為時間序列。
2.對Close時序進行小波分解處理,選用DB4進行小波分解,消除噪音。
3.進行差分運算,使用panda包的diff()方法,並使用ADF檢驗進行平穩性檢驗,保證時間序列是平穩或趨於平穩的。
4.輸出ACF,PACF圖,確定p,q的值。
5.運用ARIMA模型對平穩序列進行預測,ARIMA(p,q)。
6.還原差分運算,得到股票預測時序。
輸出圖
本圖順序與步驟順序無關,僅僅是作為一種直觀的展示:

總結
ARIMA是一種處理時序的方法模型,可以作用於股票預測,但是效果只能說是一般,因為股市預測有一定的時序關系,卻又不完全是基於時序關系,還有社會關系,公司運營,新聞,政策等影響,而且ARIMA使用的數據量僅僅只有一階的Close屬性。因此本模型可以作用在平穩發展,沒有什么負面新聞和政策干擾的公司(不懂經濟學,不知道對不對= =)。
Github
https://github.com/jerry81333/StockProdiction/