1. 說明
?ARMA回歸滑動平均模型(Autoregressive Moving Average Model,簡記ARIMA)颜矿,是研究時間序列的重要方法频鉴,由自回歸模型(簡稱AR模型)與滑動平均模型(簡稱MA模型)為基礎(chǔ)“混合”構(gòu)成弓摘。常用于具有季節(jié)變動特征的銷售量、市場規(guī)模的預(yù)測等。ARIMA模型相對ARMA模型,僅多了差分操作猫胁。
2. 相關(guān)概念
(1) 自回歸模型(AR)
?自回歸模型autoregressive model,簡稱AR.在時序分析中跛锌,描述時間序列{yt}自身某一時刻和前p個時刻之間相互關(guān)系的模型稱自回歸模型弃秆,其形式為:
?其中Φ1, Φ2,…, Φp是模型參數(shù),εt是白噪聲序列髓帽,它反映了所有其它隨機(jī)因素的干擾.其中p為模型階次菠赚,即yt由前p個值決定.
(2) 滑動平均模型(MA)
?滑動平均模型moving average model,也稱移動平均模型郑藏,它將時間序列{yt}看成白噪聲序列的線性組合衡查,為什么誤差能描述模型呢?假設(shè)某個值可通過之間前N個值的平均值預(yù)測译秦,稍作變化峡捡,即實(shí)際值可以通過前一值的預(yù)測值加誤差得到.因此實(shí)際值可用多個誤差值的累加來表示.其形式為:
(3) 回歸滑動平均模型(ARMA)
?簡單地說:AR模型是建立當(dāng)前值和歷史值之間的聯(lián)系,MA模型是計(jì)算AR部分累積的誤差筑悴。ARMA是兩個維度的和.
(4) 數(shù)據(jù)預(yù)處理
?ARMA要求被分析的數(shù)據(jù)呈正態(tài)分布,平穩(wěn)稍途,零均值.平穩(wěn)性一般是指:均值為常數(shù)阁吝,方差為常數(shù),且自協(xié)方差為常數(shù).比如說上升的趨勢中械拍,均值就不是常數(shù)突勇;如果震蕩幅度越來越大,則方差不是常數(shù)坷虑。
?如果僅是均值非0的情況甲馋,可減去均值;如果趨勢可用線性擬合迄损,可以減去擬合后的趨勢定躏;另外還可以用差分,或者季節(jié)性差分的方法使之平穩(wěn)芹敌;對于非正態(tài)分布痊远,可使用對數(shù)處理.
(5) 差分
?差分是將數(shù)據(jù)進(jìn)行移動之后與原數(shù)據(jù)進(jìn)行比較得出的差異數(shù)據(jù),這里的移動是指上移或者下移.簡單的說氏捞,比如對某支股票的價格數(shù)據(jù)做一階差分碧聪,就是將每日價格減去前一天的價格.
?在python中,差分運(yùn)算可使用pandas的diff(periods=n)函數(shù)實(shí)現(xiàn)液茎,其中n為階數(shù)逞姿,默認(rèn)為一階差分辞嗡,一階差分的具體操作是df.shift()-df.用于生成平穩(wěn)數(shù)據(jù),比如下面的曲線.
?一階差分后
?由此可見滞造,差分之后续室,去掉了趨勢,均值趨于0.有助于分析其它特征.
(6) 自相關(guān)與偏自相關(guān)(ACF&PACF)
?自相關(guān)acf和偏自相關(guān)pacf是分析時序數(shù)據(jù)的重要方法断部,是在平穩(wěn)條件下求得的.
?自相關(guān)函數(shù)Auto Correlation Function猎贴,簡稱ACF.形如:
?X軸表示滯后值,Y軸從[-1,1]蝴光,表示了這些值的相關(guān)性.比如左邊第一點(diǎn)相關(guān)性為1她渴,就是說該點(diǎn)與它自己完全相關(guān).從圖中可觀察到:12個月為周期的相關(guān)性相當(dāng)明顯的.調(diào)用方法如下:
from statsmodels.graphics.tsaplots import plot_acf
plot_acf(df['xxx'])
?注意時序數(shù)據(jù)中不能包括空值,如果之前用了一次一階差分和一次十二階差分蔑祟,應(yīng)去掉前13個為空的值.
?圖中藍(lán)色部分是描述的統(tǒng)計(jì)顯著性趁耗,如果數(shù)據(jù)隨機(jī)分布,Y軸的位置會在藍(lán)色區(qū)域之內(nèi).因此疆虚,要著重看藍(lán)色區(qū)域以外的點(diǎn).
?自相關(guān)系數(shù)包含了其它變量影響下的相關(guān)關(guān)系苛败,有時需要只考慮某兩個變量的相關(guān)關(guān)系,即偏相關(guān)系數(shù).其中的偏字径簿,指的是只考慮首尾兩項(xiàng)的關(guān)系罢屈,把中間項(xiàng)當(dāng)成常數(shù),使用了偏導(dǎo)數(shù)的方法.使用方法如下:
from statsmodels.graphics.tsaplots import plot_pacf
plot_pacf(df['xxx'])
(7) 拖尾和截尾
?我們通過觀察自相關(guān)圖和偏自相關(guān)圖來確使用哪種模型篇亭,以自相關(guān)圖為例缠捌,先看看圖片呈現(xiàn)的幾種形式.
?左邊的圖呈直線形式衰減,說明可能包括趨勢译蒂,需要進(jìn)一步差分曼月;中間是截尾圖,它指的是在某個值(如圖中的7)后截止為0柔昼;右則是拖尾圖哑芹,指的是按指數(shù)形式或正弦形式有規(guī)律地衰減.
?如果自相關(guān)系數(shù)拖尾,偏自相關(guān)系數(shù)p階截尾捕透,則使用p階的AR模型.
?如果自相關(guān)系數(shù)q階截尾聪姿,偏自相關(guān)函數(shù)拖尾,則使用q階的MA模型.
?簡單的講激率,它們兩個都是看截尾截在哪兒.
?如果自相關(guān)函數(shù)和偏自相關(guān)函數(shù)均拖尾咳燕,則使用ARMA模型,由于AR和MA相互影響乒躺,階數(shù)需要從小到大逐步嘗試.
(8) 模型檢驗(yàn)
i. 模型對訓(xùn)練數(shù)據(jù)的擬合
?用模型對訓(xùn)練數(shù)據(jù)做擬合招盲,用觀察或者計(jì)算誤差的方式,查看二者差異嘉冒,差異越小越好.
ii. 檢查殘差的自相關(guān)函數(shù)
?殘差的自相關(guān)函數(shù)應(yīng)該沒有可識別的結(jié)構(gòu).
iii. AIC信息準(zhǔn)則
?AIC信息準(zhǔn)則Akaike information criterion曹货,是衡量統(tǒng)計(jì)模型擬合優(yōu)良性的一種標(biāo)準(zhǔn)咆繁,AIC值越小越好,也有根據(jù)AIC自動選參數(shù)的工具.
3. 步驟
?具體使用python調(diào)用statsmodels庫實(shí)現(xiàn).statsmodels是一套統(tǒng)計(jì)工具集.具體需要考慮三個參數(shù):d顶籽,p玩般,q.其中d是消除趨勢的差分階數(shù),p是AR階層礼饱,q是MA的階數(shù).步驟如下:
(1) 做時序圖觀察基本的趨勢和周期.
(2) 分析平穩(wěn)性坏为,正態(tài)性,周期性镊绪;并對數(shù)據(jù)進(jìn)行轉(zhuǎn)換.
(3) 做自相關(guān)和偏自相關(guān)圖匀伏,確定模型階次.
(4) 模型檢驗(yàn)
(5) 用模型預(yù)測.
4. 問題與解答
(1) 做ARMA分析前是否應(yīng)該剔除周期性因素?
?我們可以從自相關(guān)圖中看出周期性波動蝴韭,比如上邊右側(cè)的拖尾圖够颠,它說明某天與前7,14,21天都強(qiáng)相關(guān).如果發(fā)現(xiàn)強(qiáng)相關(guān),可先進(jìn)行多階差分(季節(jié)差分)后榄鉴,再進(jìn)一步使用ARMA模型處理.需要注意的是各層次差分在預(yù)測時都需要對應(yīng)的還原.
(2) 做長期預(yù)測時如何應(yīng)對衰減履磨?
?我在做鹽城上牌預(yù)測時就遇到了嚴(yán)重的衰減問題,當(dāng)時需要預(yù)測之后幾百天的數(shù)據(jù)庆尘,而ARMA在預(yù)測了幾十天之后剃诅,就從類似正弦波型衰減成了一條直線,導(dǎo)致我最終放棄了該模型驶忌,改為使用線性擬合趨勢综苔,嚴(yán)重?fù)p失了精度.后來看復(fù)賽排名第一的大神分享,他也使用ARMA位岔,并且也有衰減問題,不同的是他采用按月預(yù)測堡牡,相比于按日預(yù)測抒抬,衰減就好得多,非常贊晤柄!
5. 參考
(1) 第七篇時間序列分析
https://max.book118.com/html/2014/1223/10828140.shtm