時間序列分析是根據系統觀測得到的時間序列數據,通過曲線擬合和參數估計來建立數學模型的理論和方法。它一般采用曲線擬合和參數估計方法(如非線性最小二乘法)進行。時間序列分析常用在國民經濟宏觀控制、區域綜合發展規划、企業經營管理、市場潛量預測、氣象預報、水文預報、地震前兆預報、農作物病蟲災害預報、環境污染控制、生態平衡、天文學和海洋學等方面。
在時間序列分析中,AR,MA,ARMA,ARIMA,ARCH,GARCH是最常見的模型,他們的區別主要在於適用條件不同,且是層層遞進的,后面的一個模型解決了前一個模型的某個固有問題。時間序列分析也是一種回歸,目的是用變量過去的觀測值來預測同一變量的未來值。
- AR (Auto Regressive)自回歸模型: AR模型是一種線性預測,即已知N個數據,可由模型推出第N點前面或后面的數據(設推出P點). 本質類似於插值,其目的都是為了增加有效數據,只是AR模型是由N點遞推,而插值是由兩點(或少數幾點)去推導多點,所以AR模型要比插值方法效果更好。
- MA(Moveing Average)移動平模型:分兩種形式:
-
- 簡單移動平均法: 設有一時間序列y1,y2,..., 則按數據點的順序逐點推移求出N個數的平均數,即可得到一次移動平均數.
-
趨勢移動平均法 :當時間序列沒有明顯的趨勢變動時,使用一次移動平均就能夠准確地反映實際情況,直接用第t周期的一次移動平均數就可預測第1t+周期之值。時間序列出現線性變動趨勢時,用一次移動平均數來預測就會出現滯后偏差。修正的方法是在一次移動平均的基礎上再做二次移動平均,利用移動平均滯后偏差的規律找出曲線的發展方向和發展趨勢,然后才建立直線趨勢的預測模型。故稱為趨勢移動平均法。
- ARMA(Auto Regressive And Moveing Average)自回歸滑動平均模型:其建模思想可概括為:逐漸增加模型的階數,擬合較高階模型,直到再增加模型的階數而剩余殘差方差不再顯著減小為止。
- ARIMA(Auto Regressive Integrated Moveing Average)差分自回歸滑動平均模型: 一般關注的有趨勢和季節/循環成分的時間序列都是不平穩的,這就需要對時間序列進行差分來消除這些使序列不平穩的成分,而使其變成平穩的時間序列,並估計ARMA模型,估計之后再轉變該模型,使之適應於差分之前的序列,得到的模型稱為ARIMA模型。
- ARCH(Autoregressive conditional heteroskedasticity model)自回歸條件異方差模型:解決了傳統的計量經濟學對時間序列變量的第二個假設(方差恆定)所引起的問題
- GARCH(Generalized AutoRegressive Conditional Heteroskedasticity)廣義ARCH模型:GARCH模型是一個專門針對金融數據所量體訂做的回歸模型,除去和普通回歸模型相同的之處,GARCH對誤差的方差進行了進一步的建模。特別適用於波動性的分析和預測,這樣的分析對投資者的決策能起到非常重要的指導性作用,其意義很多時候超過了對數值本身的分析和預測。
時間序列建模基本步驟:
- 第一步 收集歷史資料,加以整理,編成時間序列,並根據時間序列繪成統計圖。時間序列分析通常是把各種可能發生作用的因素進行分類,傳統的分類方法是按各種因素的特點或影響效果分為四大類:(1)長期趨勢;(2)季節變動;(3)循環變動;(4)不規則變動。
- 第二步 分析時間序列。時間序列中的每一時期的數值都是由許許多多不同的因素同時發生作用后的綜合結果。
- 第三步 求時間序列的長期趨勢(T)季節變動(s)和不規則變動(I)的值,並選定近似的數學模式來代表它們。對於數學模式中的諸未知參數,使用合適的技術方法求出其值。
-
第四步 利用時間序列資料求出長期趨勢、季節變動和不規則變動的數學模型后,就可以利用它來預測未來的長期趨勢值T和季節變動值s,在可能的情況下預測不規則變動值I。然后用以下模式計算出未來的時間序列的預測值Y:
加法模式T+S+I=Y
乘法模式T×S×I=Y
如果不規則變動的預測值難以求得,就只求長期趨勢和季節變動的預測值,以兩者相乘之積或相加之和為時間序列的預測值。如果經濟現象本身沒有季節變動或不需預測分季分月的資料,則長期趨勢的預測值就是時間序列的預測值,即T=Y。但要注意這個預測值只反映現象未來的發展趨勢,即使很准確的趨勢線在按時間順序的觀察方面所起的作用,本質上也只是一個平均數的作用,實際值將圍繞着它上下波動。
- 辨識合適的隨機模型,進行曲線擬合,即用通用隨機模型去擬合時間序列的觀測數據。對於短的或簡單的時間序列,可用趨勢模型和季節模型加上誤差來進行擬合。對於平穩時間序列,可用通用ARMA模型(自回歸滑動平均模型)及其特殊情況的自回歸模型、滑動平均模型或組合-ARMA模型等來進行擬合。當觀測值多於50個時一般都采用ARMA模型。對於非平穩時間序列則要先將觀測到的時間序列進行差分運算,化為平穩時間序列,再用適當模型去擬合這個差分序列。
時間序列的預處理
時間序列的預處理是對一個觀察值序列的純隨機性和平穩性進行檢驗,根據檢驗結果可以將此序列分為不同的類型,純隨機序列也稱為白噪聲序列,是沒有任何信息可以提取的平穩隨機序列。
通過預處理將序列分成不同類型之后我們就可以根據各種序列類型的特點使用不同的模型建模,常見的平穩時間序列建模模型為ARMA(可以分為AR、MA和ARMA三類),此模型是使用線性模型來擬合平穩序列。非平穩的序列分析可以建立的模型有ARIMA以及殘差自回歸模型等等。
平穩時間序列
2.1 基本概念
- ARMA模型,如下結構可以簡記為ARMA(p,q): 該模型要求時間序列滿足平穩性(stationarity)和可逆性(invertibility)的條件。
- 當q=0時,是AR(p)模型:
- 當p=0時,是MA(q)模型:
- 偏自相關系數(PACF): 對於一個平穩AR(p)模型,求出滯后k自相關系數ρk時,實際上得到並不是Xt與Xt−k之間單純的相關關系。因為Xt同時還會受到中間k-1個隨機變量Xt−1、Xt−2、……、Xt−k+1的影響。 為了能單純度量Xt−k對Xt的影響,引進偏自相關系數(PACF)的概念: 對於平穩時間序列{Xt},在剔除了中間k-1個隨機變量量Xt−1、Xt−2、……、Xt−k+1的干擾之后,Xt−k對Xt影響的相關程度。【在給定中間觀測值的條件下觀測值和前面某間隔的預測值的相關系數】
- 拖尾和截尾: 拖尾是系數隨着k的增大衰減,但始終有非零取值,截尾是k增大到一定大小時系數取零值。
2.2 平穩時間序列建模
- 對一個時間序列經過預處理,若被判定為平穩非白噪聲序列,則可以計算ACF和PACF,根據上述兩個系數選取合適的模型,並且為模型定階。
- 拖尾、截尾示意說明,如下圖:
- 左邊的 acf 條形圖是衰減的指數型波動;這種圖形稱為拖尾。而右邊的pacf條形圖是第二個條(p=2)之后就很小,而且沒有什么模式;這種圖形稱為在p=2后截尾。這說明該數據滿足是平穩的AR(2)模型。
非平穩時間序列
- 非平穩時間序列可以建立的模型有ARIMA以及殘差自回歸模型等等,這里主要討論ARIMA。
- 差分運算:相距k期的兩個序列之間的減法稱為k階差分運算。
-
對於非平穩時間序列,我們可以通過相應的變換將其變為平穩序列。差分是一個主要的手段,一個線性趨勢的非平穩序列可以使用d階差分運算,化為平穩時間序列,而一個指數趨勢的非平穩序列可以先取對數再差分化為平穩序列。畫出原始數據的時序圖從時序圖可以看出數據的基本趨勢:圍繞某水平線波動;圍繞某直線波動;呈指數上升或下降趨勢等等。當然如果變換后的序列依然非平穩,既可以考慮修改一下變換方法,也可以考慮再作一次差分。
- ARIMA模型實質上就是差分運算和ARMA模型的組合,非平穩序列經過變換后變成了平穩序列,此時我們就可以使用ARMA模型對時間序列建模了。
平穩性的檢驗
在應用過程中,時間序列的平穩性的判斷要簡單的多。常用的判斷時間序列平穩性的方法有兩個:圖示法和單位根檢驗法。
圖示法,顧名思義,就是畫出時間序列的時序圖,來目測時間序列是否平穩。如果畫出的時間序列不存在明顯的趨勢,那么時間序列可能是平穩的。這個方法比較隨意和主觀,因此,只能作為輔助判斷的手段。
單位根檢驗法是一個理論基礎扎實的判斷手段,單位根檢驗的方法非常多,一般常用的有DF檢驗(Dickey-Fuller Test),ADF檢驗(Augmented Dickey-Fuller Test)和PP檢驗(Phillips-Perron Test)。
單位根檢驗
單位根檢驗是指檢驗序列中是否存在單位根,因為存在單位根就是非平穩時間序列了。單位根就是指單位根過程,可以證明,序列中存在單位根過程就不平穩,會使回歸分析中存在偽回歸。有6種單位根檢驗方法:ADF檢驗、DFGLS檢驗、PP檢驗、KPSS檢驗、ERS檢驗和NP檢驗。
迪基-福勒檢驗(DF): 在統計學里,迪基-福勒檢驗(Dickey-Fuller test)可以測試一個自回歸模型是否存在單位根(unit root)。迪基-福勒檢驗模式是D. A迪基和W. A福勒建立的。DF檢驗只有當序列為AR(1)時才有效。如果序列存在高階滯后相關,這就違背了擾動項是獨立同分布的假設。在這種情況下,可以使用ADF檢驗方法(augmented Dickey-Fuller test )來檢驗含有高階序列相關的序列的單位根。
tseries::adf.test(x)
ADF(Augmented Dickey--Fuller test for unit roots)增廣的DF檢驗,原假設含單位根(非平穩)
```{r}
library(fUnitRoots)
urdfTest(x)
```
1%:嚴格拒絕原假設;5%:拒絕原假設,10%類推。這三個水平值是軟件設定的,它表示拒絕原假設的不同程度。
ADF檢驗的原假設是存在單位根,輸出的是ADF檢驗的統計值,只要這個統計值是小於1%水平下的數字就可以極顯著的拒絕原假設,認為數據平穩。注意,ADF值一般是負的,也有正的,但是它只有小於1%水平下的才能認為是及其顯著的拒絕原假設 。
一般在原序列條件下,如果存在非平穩狀態,按以下步驟進行:
一階差分是否具有單位根,就是比較一階差分的ADF檢驗值與5%臨界值的大小,否則再看二階差分。
差分變換
對於這樣非平穩的時間序列,能否使用ARIMA模型進行擬合呢?答案自然是可以的,我們只需要通過差分變換,就可以將非平穩序列轉換為平穩序列。
具體來講的話,差分就是將時間序列中的每一個觀測值Yt都替換為Yt - Y{t-1},一次差分可以消除時間序列中的線性趨勢,二次差分可以消除時序中的二次趨勢,三次差分可以消除時序中的三次項趨勢,以此類推。但需要注意的是,對時間序列進行兩次以上的差分通常都是不必要的,畢竟我們無法對差分后的數據進行合理的解釋。
使用R中自帶的diff()函數與forecast包中的ndiffs()函數均可以進行差分,diff函數會返回差分后的數據,ndiffs函數可以幫助我們最優的d值。
參考資料: