目錄
1時序分析的基礎
1.1 簡介
時序分析法的基本思想是事件的發展通常都具有一定的慣性,這種慣性用統計的語言來描述就是序列值之間存在一定的相互關係,而且這種相互關係具有某種統計規律。
事件是隨機的,但是規律不是,我們分析的重點就是尋找這種規律,並擬合出適當的數學模型來描述這種規律,進而利用這個擬合模型來預測序列未來的走勢。
1.2 分類
平穩的意思簡單理解就是整體隨機變量整體不會表現出一個趨勢。
強平穩 同分布 白噪聲 均值和方差都是一個常數,不同時間段的的分佈是相同的,也即這些分佈的均值和方差是相同的,即是一個常數
弱平穩 隨機變量依然沒有一個整體的趨勢。區別於強平穩的是弱平穩的其隨機變量不同時間段的分佈是不同的(分佈的均值和方差是不同的,但是均值的分佈即均值的均值,均值的方差是常數,即均值和方差是穩定的),
變量本身是沒有一個趨勢的,但是其變量的均值
1 長期趨勢分析,肯定都是一個不平穩序列,所以必然是用差分的方法轉化成平穩序列來分析。
2 目前大部分的研究都是研究弱平穩。
2 分析套路
-
考慮觀察值序列的特徵
-
根據序列的特徵選擇適當擬合模型
-
根據序列的觀察數據確定模型的口徑
-
檢驗模型,優化模型
-
利用擬合好的模型來推斷序列的其他統計性質或預測序列將 來的發展。
3 主流時序分析模型
3.1移動平均
略(股市中有各種移動平均線,可以結合學習感受下)
3.2 指數平滑法
表達式:
1 問:指數平滑的理論基礎?
答:從公式可以看出:簡單的全期平均法是對時間數列的過去數據一個不漏地全部加以同等利用;移動平均法則不考慮較遠期的數據,並在加權移動平均法中給予近期資料更大的權重;而指數平滑法則在不捨棄歷史數據的前提下,對離預測期較近的觀察值賦予較大的權重,對離預測值較遠的觀察值賦予較小的權重,達到逐漸減弱對現在預測的影響程度的目的,所以叫做指數平滑法。
2 問:使用場景
應用時間序列平滑法的前提條件是:
A) 所預測的客觀事物發展屬於漸進式,無跳躍性的變化;
B) 過去和目前影響客觀事物發展的因素也決定着客觀事物未來的發展
2 問:時間的第一項估計值具體指如何取值?
答:一般分爲兩種情況,當樣本爲大樣本時(n>42),F1一般以第一期的觀察值代替;當樣本爲小樣本時(n<42),F1一般取前幾期的平均值代替。
3 問:一次指數平滑優劣勢
答:
優勢:消除了短期影響,一定程度上能反應變動趨勢;相對於普通的移動平均,不會丟棄歷史數據。
劣勢:從下圖可以看出,預測趨勢與實際變動趨勢一致,但預測值比實際值滯後(大多數都是如此,而且移動平均也是也是如此)。
ps:解決辦法 --> 多次平滑
CASE:
某產品過去20個月的銷售數據如下
從上圖可以看出,預測結果和實際值的變化趨勢是保持一致的,但是預測結果是滯後於實際值的。
指數平滑模型一般有一次、二次、三次平滑等各種模型。這三種模型分別有不同的特性。
Holt winter和各階指數平滑之間的關係
Holt winter線性指數平滑法其實就是二次指數平滑法的一種變形
Holt Winter季節性指數平滑法其實就是三次平滑的一種變形
[hotwinter指數平滑模型] https://www.jianshu.com/p/6fb0408b3f54
[時間序列模型] https://my.oschina.net/hosee/blog/1550128
[指數平滑] https://cloud.tencent.com/developer/article/1058557 推薦:本文詳細分析了一次、二次、三次、winter線性和季節指數模型的各種使用場景。
三種模型 TODO 預測到底怎麼做?
3.3 組合模型
通常時間序列包括3個因素:
-
趨勢因素T
-
季節性因素S
-
不規則因素I
常用的綜合分析模型有:
加分模型
乘法模型
混合模型
3.4 ARIMA
ARIMA模型 TODO
4 研究細分領域
4.1 異常值檢測
refer tangluyang
4.2 季節序列分析
有些時間序列呈現出一定的循環或週期性,這樣的時間序列叫季節性時間序列。
時間序列的變動成分可以分成四種,分別是長期趨勢、循環變動(週期)、季節變動和不規則變動,分析者可以通過上篇文章的序列圖對時間序列進行觀察,並結合實際情況判斷時間序列中包含的變動成分。
時間序列分解是時間序列分析的傳統方法,它的分析思路是將各種變動成分從時間序列中分解出來,並考量引起每種變動成分的原因。時間序列分解有很多優點:
1、分解後的時間序列更加直觀簡潔,避免各種變動成分之間互相影響;
2、可以分別測定每種變動的影響程度,從而提高預測精度。
季節分析有兩種方法:
4.1 同期平均法
4.1.1 簡單季節指數法
季節性的衡量:所謂季節指數就是用簡單平均法計算的週期內各時期季節性影響的相對數。
首先計算週期內各期平均數
然後計算總平均數
再計算季節指數
季節指數反映了該季度與總平均值之間的一種比較穩定的關係:
如果比值大於1,說明該季度的值常常會高於總平均值;
如果比值小於1,說明該季度的值常常低於總平均值;
如果序列的季節指數都近似爲1,就說明該序列沒有明顯的季節性。
從上圖可以看出來,第一季度和第三季度有着明顯的季節性。可以進行下一步分析,
建立時間序列線性迴歸預測模型;
結合線性迴歸預測模型季節指數進行預測
如本例中修正2002年各季度預測值
第一季度預測值=(190+1.90×25)×1.38≈328(單位)
第二季度預測值=(190+1.90×27)×0.95≈229(單位)
第三季度預測值=(190+1.90×29)×0.73≈179(單位)
第三季度預測值=(190+1.90×31)×0.95≈236(單位)
4.1.2 趨勢季節指數法
收集並整理歷史統計數據(Ai);
建立預測模型;
利用預測模型求歷史上各期的趨勢值(Bi);
求季節指數(Ci):
Ci = Ai / Bi (實際值/趨勢值)
求季節指數的平均值(Fi);
利用季節指數平均值修正預測值:
yt=(a+bT)Fi
相對於簡單指數法,此方法區別在於季節指數的求法,是用實際值/趨勢值,然後求出一個整體的季節指數平均值。最後修正都用這一個值去修正。
4.2 長期趨勢剔除法
4.2.1 長期趨勢剔除法+簡單移動平均
基本思想就是用基本週期的移動平均,消除季節季節影響。
比如以季度爲單位可以,進行四項平均;以月爲單位,可以進行12項平均。
接下來,看一個實例https://blog.csdn.net/WMN7Q/article/details/66472665
4.2.2 溫特線性+指數平滑
正如上述所述的移動平均的一些問題,所以一般採用含有季節特徵的序列分析也會採用指數平滑。
式中,St爲時間序列第t期的平滑值,它已剔除季節性因素,bt爲時間序列第t期趨勢的平滑值,L爲季節長度(每年的季數或月數),It爲時間序列第t期的季節平滑值,它通常在1附近,一些值大於1,一些值小於1,m爲預測的超前期數,Ft+m爲時間序列第t+m期的預測值。 使用溫特線性和季節性指數平滑法的關鍵在於一組合理平滑常數組合α、β、γ的選擇,從而使預測誤差達到最小。需要根據時間序列的特點和預測經驗預先確定幾對上述常數組合,經過反覆測試,計算各組常數組合的預測誤差,最後選取預測誤差最小的一組得出的結果。
溫特線性和季節性指數平滑法也需要選擇初始平滑值SL+1和bL+1,一般取:
4.2.3 ARIMA模型+ 時序
ARIMA模型可以對具有季節效應的序列建模,季節ARIMA模型考慮了季節的因素,整體的思路還是先對數據進行平滑預處理,然後交由ARIMA模型進行擬合。
4.2.3 季節剔除
在有些應用中,季節性是次要的,我們需要把它從數據中消除,這個過程叫季節調整,其中季節性差分化是一種常見的方法。
在之前我們介紹過差分(正規差分化),其形式爲:
我們將它推廣,如果一個序列具有周期性,且週期爲s,則季節性差分化爲:
5 Java相關包
R和Python有現成的包,比較細緻,有細到winter函數的實現。
java的計算包和時間序列相關的比較少。
JMulTi看了下官網沒找到非常細緻的文檔,看他們的Feature,有一些季節模式的假設檢驗,提供了一些方法;
jmotif 有github,但是沒有太多和季節相關的介紹。
網上自定義的java實現的季節ARIMA模型比較多。
9 參考資料
-
[時序分析方法概論和ARIMA模型的歷史] https://www.jianshu.com/p/c177dda2d0d5
-
[時序分析基礎]http://blog.codinglabs.org/articles/time-series-analysis-foundation.html
-
[一次指數平滑法] https://blog.csdn.net/Mary19920410/article/details/77267493
-
[時間序列平滑法如何預測產品產量] https://cloud.tencent.com/developer/article/1058557 ps:包括各種高階指數平滑,季節處理方法,強烈推薦閱讀。
-
[簡單季節指數法] https://wiki.mbalib.com/wiki/%E7%AE%80%E5%8D%95%E5%AD%A3%E8%8A%82%E6%8C%87%E6%95%B0%E6%B3%95
-
[arira + 時序]https://blog.csdn.net/dingming001/article/details/73743950