R語言自學系列(11)-自我迴歸模型(AR Model, Autoregressive Model)
前言
自我迴歸模型是定態序列估計上最常用的模型之一,今天我們就要來談談自我迴歸模型的一些性質以及我們怎麼在R語言上去建構它:
自我迴歸模型的性質
我們認為,一筆資料會與他過去幾期的資料相關,可以寫成:
函數中包含了落後p期最多到第t-p期的資料,我們就稱這個模型叫做AR(p)模型,如果我們只拿落後一期的資料來建構模型,我們就稱為AR(1)模型,而假設我們將AR(1)模型迭代運算,會得到這樣的估計式:
上面估計式告訴我們幾個重要的性質,包括:
簡單來說,在AR(1)模型中,只要B1絕對值小於1,就會有不變的均數、有限的變異數和與 t 無關的共變異數,並滿足定態的性質。接下來我們的幾個性質都會透過AR(1)模型去推廣到AR(p)模型,對於一個AR(p)模型來說,如果要讓其為定態的充分條件為:
如果所有係數總合為1,我們就稱這個序列具有單根(Unit Root),對於單根的詳細介紹與用途,我們到後期講隨機趨勢(Stochastic Trend)時詳細介紹,接下來,我們就要著手建立我們的AR(p)模型。本次選用的資料是AAOI應用光電公司的股價資料:
信息量準則(Information Criterion)
開始前有一個很重要的問題是,我們該選擇落後幾期的變數來做預測?也就是AR(p)中的 p 值應該要多少才合適?這個問題很像是我們之前所說的透過p-value來篩選,但我們這邊要介紹另外一種更泛用的方法,叫做赤池信息量準則(Akaike Information Criterion),我們可以先看一下公式:
我們的目標是讓AIC函數最小化,其中AIC可以拆解成兩個部分,第一個部分是未解釋變異量,也就是函數估計出的隨機誤差總和平均的對數值,而我們當然希望誤差越小越好,第二個部分是懲罰項,這個概念有點類似調整R平方(Adjusted R-Squared),為了避免加入越多變數就會有越少估計誤差的廢話,我們加入懲罰項以調整變數增加對AIC的影響。
另外一種信息量準則叫做貝葉斯信息量準則(Bayesian Information Criterion,BIC),公式如下,兩者概念十分相似:
可以看到兩者的差異只在懲罰項略有不同而已,至於懲罰項的決定,一個是基於最大似然法,一個則是基於貝氏機率,有興趣的朋友可以參考這篇:
我們可以知道的是,只要T>8,logT就>2,亦即BIC會傾向於選擇一個更少落後期數的模型,而這邊我們趕緊來實作看看,透過AIC幫助我們挑選模型的落後期數,代碼如下:
AIC準則認為我們在p=14的時候有最小的未解釋變異量,而BIC相對比較不同的是,因為懲罰項不同的緣故會偏好落後期數少的模型, 因此後方的BIC資訊被放大了,我們這裡選擇AIC,因此接下來將會創建一個AR(14)模型,此外,我在代碼中加入了一個判斷該模型是否為stationary的機制,如果有需要,我們可以創建一個是否為定態的檢驗表格。
AR(p)模型之預測
我們先簡寫AR(1)模型,寫成伴隨矩陣(companion form)的形式:
加上截距項以後可以寫成:
最後根據迭代拓展到AR(p)模型(詳細的迭代我就不細寫了,有興趣的朋友可以自己去找證明來看),則會寫成:
整個估計式變得十分麻煩,好在我們並不需要一個一個函數撰寫,predict()功能可以幫助我們完成任務,假設我們根據剛才的AIC創建了一個p = 14的函數,並且想要針對他預測往後60期的資料,我們可以這樣寫:
如上,我們就會得到未來60期的預測結果了,要注意的是,我們在這並沒有對AAOI的原始資料做任何定態處理,所以實際上資料的預測是不完美的,但我們之後會在講趨勢消除與定態處理的章節提到如何修正,如果你想要手動寫裡面的機制或是對模型做任何修改,就必須先將資料做定態檢驗(比方說前幾篇提到的ADF檢定與差分定態)之後,再轉換回原本的格式。
最後,我們可以作圖來看一下結果:
衝擊反應函數 Impulse Response Functions, IRF
對於一個AR(p)模型,我們可以這樣改寫:
直觀上的意義是,我們可以觀測到對於每一期的資料,都會有該期的一個外生衝擊 ϵ_t,如果我們今天假設在當期發生了一個外生衝擊,也就是 ϵ_t=1,而其他期間的衝擊 ϵ_t+j都是0,也就是未來假設沒有其他的衝擊發生,我們想知道這個外生衝擊對於每一期的影響是甚麼,也就是:
詳細的推導大家可以去找陳旭昇老師的公開PPT來看,這邊就不墜述一次了,總而言之,我們可以知道t期的外生衝擊對於t+j期的影響,只要取得他的偏導數即可。這代表甚麼呢?這代表在不同的Beta(係數)值下,衝擊函數的整體結果有可能收斂有可能發散,為了展示,我們演示一個AR(1)模型,看看不同的係數可能出現的情況:
AR(1)模型的衝擊函數是跟係數的 j 次方關聯,我們可以看到對於不同的係數值,時間序列會有不同的表現,當係數的絕對值超過1的時候,我們會發現序列完全不會收斂,也就是一個外生的衝擊會永久性影響序列資料。
這同樣證明了我們早先所說的,當係數的絕對值總和小於1的時候,我們可以說一個AR(p)模型是定態的。
另一種寫法:Lagged Regression 滯後回歸
我們還有另外一種方法來模擬這個模型,也就是使用滯後回歸(Lagged Regression),簡單來說就是將當期變數與上X期的資料去做相關,我們可以發現這就是AR模型,但我們這邊提供另外一種方式:
舉例來說我們想創建一個落後一期的迴歸模型,這邊使用最開始的lm()線性迴歸即可,但是必須先創建一個落後一期的資料集:
在上面的程式中,我們分別建立了落後一、二、三期的資料並且作多變量回歸,得到非常好的結果,這實際上就是AR(3)模型的預估,以短期預測而言,滯後回歸絕對是非常不錯的方法。
總結
下一篇會介紹ARMA模型,也就是把AR模型與MA(移動平均)模型結合起來,可以視為AR模型的擴充,時間序列的基本迴歸模型還有ARIMA,也是現在最泛用的模型之一,但在這之前我們會一步一步把基礎建立起來。