SAS EM(六)時間序列理論
SAS EM(六)時間序列理論
大家以前會聽說過AR模型、MA模型、ARMA模型、ARIMA模型,這些到底是什麼呢?今天來簡易講解一下,順便用sas實操一下,由於本文是基於自己學習的歸納總結,若有講得不對的地方,也希望讀者指出,會及時修改。
時間序列背景
首先以往的迴歸模型只能描述出長期的發展趨勢,對於區域性的迴圈變動是無法描述的,比如迴歸就不能解決自迴歸的情況,自迴歸指的就是這一時間取值取決前一段時間某些值。很明顯我們需要特定的模型來更好的預測及描述這種週期性及自迴歸的情況,可以看下圖使用迴歸模型來預測是不太好的。
時間序列模型組成
上面說了我們需要一個模型來模擬這種情況,那這個模型應該有哪些因素組成呢
- 長期趨勢(T)
- 季節變動(S)
- 迴圈變動(C)
- 不規則變動(I)
其中季節變動(S)及迴圈變動(C)時間週期長短有差別,迴圈變動週期較長,而且有時週期也不固定
我們常考慮兩種模型
加法模型(常用):Y=T+S+C+I(四種元素相互獨立),一般使用它的時候,整個流程圖大概如下
乘法模型:Y=T*S*C*I(元素間並非相互獨立,影響會放大或縮小)
常用的時間序列模型及應用前提
一般時間序列模型我們平常只要應用得最多就是平穩時間序列模型,對於平穩時間序列在數學上有比較豐富的處理手段,非平穩的時間序列通過差分等手段轉化為平穩時間序列處理。
如何判定為平穩時間序列模型?
- 隨機變數Y t 的均值和方差均與時間t無關
- 隨機變數Y t 和Y s 的協方差只與時間差(步長)t-s有關
上面是比較官網的描述,我們可以大概看一下圖形,圖形平均值大概在一條水平線上,以及能用一個長方形框柱圖形就行
比如下面這張圖都是平穩
下面這種很明顯有遞增趨勢的就很明顯不是平穩的序列,後續要使用差分轉換為平穩的時間序列模型
在統計分析時,一個時間序列是否平穩可以通過觀察它的自相關係數進行判斷。如果它的自相關係數隨著滯後期的增加迅速收斂於0附近,這個時間序列就很可能是平穩的。如果它的自相關係數隨著滯後期的增加雖然逐漸減小,但減小幅度很小,很長時間也沒收斂到0附近,那麼這個時間序列就很可能是不平穩的。通過對自相關係數的觀察我們可以得到一個大概的估計,但這不是一個嚴謹的科學結論或統計學結論。
在統計學中,判斷一個時間序列是否平穩,可通過執行ADF檢驗可以得到檢驗統計二值和其對應的檢驗概率的P值。通過將二值與對應的臨界值比較,當它大於臨界值時,我們就接受這是一個平穩的時間序列的假設。r值對應的P值則表示這個時間序列是非平穩的概率,也就是P值越接近0,序列越可能是平穩的。一般情況下,當P值小於0.05或0.1時,我們就認為這是一個平穩的時間序列。
平穩時間序列常見的模型
由簡單到複雜,大概有四種:
- 白噪聲模型
- 自迴歸模型(AR)
P為階數,與之前多少歷史值有關
- 滑動平均模型(MA)
q為白噪聲階數
- 自迴歸滑動平均模型(ARMA)
不平穩時間序列模型
- ARIMA模型(可以處理不平穩時間序列)
可以通過差分,把增長趨勢消掉變為平穩時間序列,就是下面的d階差分,之後再使用處理平穩時間序列的方法ARMA解決,合起來就是ARIMA模型,ARIMA(p,d,q)當d=0即不用差分時,就是ARMA(p,q)模型
建模的三個主要步驟
- 模型識別(白噪聲、MA、AR、ARMA、ARIMA)
首要問題是識別模型的階數(也就是上面模型提到的p、q),識別主要通過自相關函式(係數)和偏自相關函式(係數)
自相關係數:
偏相關係數(偏自相關函式):
根據上面的自相關係數和偏自相關係數,選擇以下模型(下面三個都為平穩的)
截尾和拖尾怎麼看:
截尾到達某一階數後突然降於0附近
拖尾會慢慢趨向於0,但是不會突然降到0
當然啦有一些拖尾和截尾不是很好判斷,我們就可以擬合多個模型,來選最優一個,一般根據AIC及BIC(SBC)指標選擇
對於以下這種要注意變化幅度特別小的,可能就為非平穩時間序列了,要先差分轉換為平穩時間序列
- 模型擬合(求出引數)
- 模型診斷(是否通過檢驗)
檢驗殘差是否為白噪聲(為白噪聲說明我們把內部規律已經提取完了,剩下來的為隨機干擾無研究意義)及殘差正態檢驗
運用模型預測
當我們通過模型識別、模型擬合、模型診斷後我們就可以運用模型來預測了
相關文章
- 論文---時間序列----TimeLLM
- 論文---時間序列--DLinear
- 時間序列資料的處理
- 計量經濟學(十五)的理論基礎——時間序列分解定理
- 【時間序列分析】01. 時間序列·平穩序列
- LSTM的備胎,用卷積處理時間序列——TCN與因果卷積(理論+Python實踐)卷積Python
- Tensorflow 視窗時間序列資料的處理
- 時間序列分析
- python 時間序列Python
- 【SpringBoot】 中時間型別 序列化、反序列化、格式處理Spring Boot型別
- 計量經濟學導論08:平穩時間序列
- 時間序列分析基本思想及時間序列建模步驟
- Python 時間序列分析Python
- 將VAE用於時間序列:生成時間序列的合成資料
- 關於時間 PHP 處理包遇到的問題時間序列化差值問題PHP
- 時間序列分段法
- 時間序列交叉驗證
- 時間序列乾貨大全
- 時間序列|全景介紹
- 時間序列結構變化分析:Python實現時間序列變化點檢測Python
- 強填EM演算法在理論與工程之間的鴻溝(上)演算法
- 期望最大化(EM)演算法:從理論到實戰全解析演算法
- Go 中時間型別欄位的 JSON 序列化和反序列化的處理技巧Go型別JSON
- 時間序列分析(一)--移動平均
- 時間序列分析(二)--指數平滑
- 分散式系統理論基礎3: 時間、時鐘和事件順序分散式事件
- 基於圖論的時間序列資料平穩性與連通性分析:利用圖形、數學和 Python 揭示時間序列資料中的隱藏模式圖論Python模式
- java時間處理Java
- PHP 時間處理PHP
- Django基礎之六(模型理論知識)Django模型
- Docker最全教程——從理論到實戰(六)Docker
- python時間序列缺失值補零Python
- 技術乾貨| MongoDB時間序列集合MongoDB
- [譯] 層次時間序列預測法
- 應用時間序列法預測收入
- 時間序列神器之爭:prophet VS lstm
- 如何用XGBoost做時間序列預測?
- eviews時間序列分析課堂筆記View筆記