
R語言解讀自回歸模型
時間序列是金融分析中常用到的一種數據格式,自回歸模型是分析時間序列數據的一種基本的方法。通過建立自回歸模型,找到數據自身周期性的規律,從而幫助我們理解金融市場的發展變化。
在時間序列分析中,有一個常用的模型包括AR,MA,ARMA,ARIMA,ARCH,GARCH,他們的主要區別是適用條件不同,且是層層遞進的,后面的一個模型解決了前一個模型的某個固有問題。本文以AR模型做為開始,將對時間序列分析體系,進行完整的介紹,并用R語言進行模型實現。
由于本文為非統計的專業文章,所以當出現與教課書不符的描述,請以教課書為準。本文力求用簡化的語言,來介紹自回歸模型的知識,同時配合R語言的實現。
目錄
自回歸模型介紹
用R語言構建自回歸模型
模型識別ACF/PACF
模型預測1. 自回歸模型(AR)
自回歸模型(Autoregressive model),簡稱AR模型,是統計上一種處理時間序列的方法,用來描述當前值與歷史值之間的關系,用變量自身的歷史時間數據對自身進行預測,自回歸模型必須滿足平穩性的要求。比如,時間序列數據集X 的歷史各期數據從X1至Xt-1,假設它們為線性關系,可以對當期Xt的表現進行預測。X的當期值等于一個或數個落后期的線性組合,加常數項,加隨機誤差。
p階自回歸過程的公式定義:
字段解釋:
Xt是當期的X的表現
c是常數項
p是階數,i為從1到p的值
φi是自相關系數
t為時間周期
εt是均值為0,標準差為δ 的隨機誤差,同時δ是獨立于t的
對于一階自回模型,用AR(1)來表示,簡化后的公式為:
自回歸是從線性回歸分析中發展而來,只是把自變量x對因變量y的分析,變成自變量x對自身的分析。如果你需要了解線性回歸的知識,請參考文章R語言解讀一元線性回歸模型。
自回歸模型的限制
自回歸模型是用自身的數據來進行預測,但是這種方法受到一定的限制:
必須具有平穩性,平穩性要求隨機過程的隨機特征不隨時間變化。
必須具有自相關性,如果自相關系數(φi)小于0.5,則不宜采用,否則預測結果極不準確。
自回歸只適用于預測與自身前期相關的現象,即受自身歷史因素影響較大的現象。對于受其他因素影響的現象,不宜采用自回歸,可以改用向量自回歸模型。
平穩性時間序列的特點
平穩性要求產生時間序列Y的隨機過程的隨機特征不隨時間變化,則稱過程是平穩的;假如該隨機過程的隨機特征隨時間變化,則稱過程是非平穩的。
平穩性是由樣本時間序列所得到的擬合曲線,在未來的一段期間內能順著現有的形態能一直地延續下去;如果數據非平穩,則說明樣本擬合曲線的形態不具有延續的特點,也就是說擬合出來的曲線將不符合當前曲線的形態。
對于平穩時間序列在數學上有比較豐富的處理手段,非平穩的時間序列通過差分等手段轉化為平穩時間序列處理
了解了自回歸模型的定義,我們就可以用R語言來模擬一下自回歸模型的構建和計算過程。
生成一個隨機游走的數據集,滿足平穩性的要求。
# 隨機游走的數據集> set.seed(0)> x<-w<-rnorm(1000) # 生成符合正態分布N(0,1)的數據> for(t in 2:1000) x[t]<-x[t-1]+w[t]> tsx<-ts(x) # 生成ts時間序列的數據集# 查看數據集> head(tsx,15) [1] 1.2629543 0.9367209 2.2665202 3.5389495 3.9535909 2.4136409 [7] 1.4850739 1.1903534 1.1845862 3.5892396 4.3528331 3.5538238[13] 2.4061668 2.1167053 1.8174901> plot(tsx) # 生成可視化圖形 > a<-ar(tsx);a # 進行自回歸建模Call:ar(x = tsx)Coefficients: 1 0.9879 Order selected 1 sigma^2 estimated as 1.168
數據的如圖展示:
自相關系數為0.9879 ,這是一個非常強的自相關性,所以上述的數列符合自相關的特性。
R語言中ar()函數提供了多種自相關系數的估計,包括"yule-walker", "burg", "ols", "mle", "yw",默認是用yule-walker方法,常用的方法還有最小二乘法(ols),極大似然法(mle)。
我們用最小二乘法,來進行參數估計。
> b<-ar(tsx,method = "ols");bCall:ar(x = tsx, method = "ols")Coefficients: 1 0.9911 Intercept: -0.017 (0.03149) Order selected 1 sigma^2 estimated as 0.9906
用最小二乘法的計算結果,則自相關系統數為0.9911,截距為-0.017。只有使用最小二乘法進行參數估計的時候,才會有截距。
我們用極大似然法,來進行參數估計。
> d<-ar(tsx,method = "mle");dCall:ar(x = tsx, method = "mle")Coefficients: 1 0.9904 Order selected 1 sigma^2 estimated as 0.9902
用極大似然法計算結果,則自相關系統數為0.9904。對于上面3種估計方法,自相關系數的值都是很接近的。
3. 模型識別ACF/PACF
在上面的例子中,我們默認是用一階的自回歸模型AR(1),進行程序實現的。在實際應用中,自回歸模型AR時間序列的階數P是未知的,必須根據實際數據來決定,就要對AR模型定階數。常的方法就是利用自相關函數(ACF)和偏自相關函數(PACF)來確定自回歸模型的階數。在ACF/PACF不能確定的情況下,還需要用AIC(Aikaike info Criterion)、BIC(Bayesian information criterion)的信息準則函數來確定階數。
自回歸模型的確立過程,是通過確定階數,參數估計,再次確定階數的方法進行判斷。自相關函數ACF,用來確定采用自回歸模型是否合適。如果自相關函數具有拖尾性,則AR模型為合適模型。偏自相關函數PACF用來確定模型的階數,如果從某個階數之后,偏自相關函數的值都很接近0,則取相應的階數作為模型階數,偏自相關函數通過截尾性確定階數。
1. 自相關函數ACF(autocorrelation function)
將一個有序的隨機變量序列與其自身相比較,這就是自相關函數在統計學中的定義。每個不存在相位差的序列,都與其自身相似,即在此情況下,自相關函數值最大。如果序列中的組成部分相互之間存在相關性(不再是隨機的),則由以下相關值方程所計算的值不再為零,這樣的組成部分為自相關。
自相關函數反映了同一序列在不同時序的取值之間的相關程序。
ACF的公式為:
字段解釋
Pk,為ACF的標準誤差
t,為數據集的長度
k,為滯后,取值從1到t-1,表示相距 k個時間間隔的序列值之間的相關性
Yt,為樣本在t時期的值
Yt-k,為樣本在t-k時期的值
μ,為樣本的均值
所得的自相關值Pk的取值范圍為[-1,1],1為最大正相關值,-1則為最大負相關值,0為不相關。
根據上面公式,我們可以手動計算出tsx數據集的ACF值
> u<-mean(tsx) #均值> v<-var(tsx) #方差> # 1階滯后> p1<-sum((x[1:length(tsx)-1]-u)*(x[2:length(tsx)]-u))/((length(tsx)-1)*v);p1[1] 0.9878619> # 2階滯后> p2<-sum((x[1:(length(tsx)-2)]-u)*(x[3:length(tsx)]-u))/((length(tsx)-1)*v);p2[1] 0.9760271> # 3階滯后> p3<-sum((x[1:(length(tsx)-3)]-u)*(x[4:length(tsx)]-u))/((length(tsx)-1)*v);p3[1] 0.9635961
同時,我們可以用R語言中的acf()函數來計算,會打印前30個滯后的ACF值。
> acf(tsx)$acf, , 1 [,1] [1,] 1.0000000 [2,] 0.9878619 [3,] 0.9760271 [4,] 0.9635961 [5,] 0.9503371 [6,] 0.9384022 [7,] 0.9263075 [8,] 0.9142540 [9,] 0.9024862[10,] 0.8914740[11,] 0.8809663[12,] 0.8711005[13,] 0.8628609[14,] 0.8544984[15,] 0.8462270[16,] 0.8384758[17,] 0.8301834[18,] 0.8229206[19,] 0.8161523[20,] 0.8081941[21,] 0.8009467[22,] 0.7942255[23,] 0.7886249[24,] 0.7838154[25,] 0.7789733[26,] 0.7749697[27,] 0.7709313[28,] 0.7662547[29,] 0.7623381[30,] 0.7604101[31,] 0.7577333
比較前3個值的計算結果,與我們自己的計算結果是一樣的,同時可以用R語言進行可視化輸出。
> acf(tsx)
從上圖中看出,數據的ACF為拖尾,存在很嚴重的自相關性。接下來,這時候我們用偏自相關函數確定一下AR的階數。
2. 偏自相關函數(PACF)(partial autocorrelation function)
偏自相關函數是有自相關函數推到而來。對于一個平穩AR(p)模型,求出滯后k自相關系數p(k)時,實際上得到并不是x(t)與x(t-k)之間單純的相關關系。因為x(t)同時還會受到中間k-1個隨機變量x(t-1)、x(t-2)、……、x(t-k+1)的影響,而這k-1個隨機變量又都和x(t-k)具有相關關系,所以自相關系數p(k)里實際摻雜了其他變量對x(t)與x(t-k)的影響。
為了能單純測度x(t-k)對x(t)的影響,引進偏自相關系數的概念。對于平穩時間序列{x(t)},所謂滯后k偏自相關系數指在給定中間k-1個隨機變量x(t-1)、x(t-2)、……、x(t-k+1)的條件下,或者說,在剔除了中間k-1個隨機變量x(t-1)、x(t-2)、……、x(t-k+1)的干擾之后,x(t-k)對x(t)影響的相關程度。
簡單來說,就是自相關系數ACF還包含了其他變量的影響,而偏自相關系數PACF是嚴格這兩個變量之間的相關性。在ACF中存在著線性關系和非線性關系,偏自相關函數就是把線性關系從自動關系性中消除。當PACF近似于0,表明兩個時間點之間的關系性是完全由線性關系所造成的。
通過R語言的pacf()函數來進行偏自相關函數計算。
> pacf(tsx)$acf, , 1 [,1] [1,] 0.987861891 [2,] 0.006463542 [3,] -0.030541593 [4,] -0.041290415 [5,] 0.047921168 [6,] -0.009774246 [7,] -0.006267004 [8,] 0.002146693 [9,] 0.028782423[10,] 0.014785187[11,] 0.019307564[12,] 0.060879259[13,] -0.007254278[14,] -0.004139848[15,] 0.015707900[16,] -0.018615370[17,] 0.037067452[18,] 0.019322565[19,] -0.048471479[20,] 0.023388065[21,] 0.027640953[22,] 0.051177900[23,] 0.028063875[24,] -0.003957142[25,] 0.034030631[26,] 0.004270416[27,] -0.029613088[28,] 0.033715973[29,] 0.092337583[30,] -0.031264028# 可視化輸出 > pacf(tsx)
從上面的這個結果分析,當滯后為1時AR模型顯著,滯后為其他值是PACF的值接近于0不顯著。所以,對于數據集tsx來說,數據滿足AR(1)的自回歸模型。對于上文中參數估計出的1階自相關系數值是可以用的。
4. 模型預測
通過模型識別,我們已經確定了數據集tsx是符合AR(1)的建模條件的,同時我們也創建了AR(1)模型。接下來,就可以利用這個自回測的模型的進行預測,通過規律發現價值。在R語言中,我們可以用predict()函數,實現預測的計算。
使用AR(1)模型進行預測,并保留前5個預測點。
> predict(a,10,n.ahead=5L)$predTime Series:Start = 2 End = 6 Frequency = 1 [1] 9.839680 9.681307 9.524855 9.370303 9.217627$seTime Series:Start = 2 End = 6 Frequency = 1 [1] 1.080826 1.519271 1.849506 2.122810 2.359189
上面結果中,變量$pred表示預測值,變量$se為誤差。
我可以生成可視化的圖,更直觀的看到預測的結果。
# 生成50個預測值 > tsp<-predict(a,n.ahead=50L)# 把原數據畫圖 > plot(tsx)# 把預測值和誤差畫出來> lines(tsp$pred,col='red') > lines(tsp$pred+tsp$se,col='blue')> lines(tsp$pred-tsp$se,col='blue')
圖中,黑色線為原始數據的,紅色線為預測值,藍色線為預測值的范圍。這樣我們就利用AR(1)模型,實現了對規律的預測計算。
上面關于預測和可視化的過程,我們是通過原生的predict()函數和plot()函數完成的。在R語言中,可以用forecast包來簡化上面的操作過程,讓代碼更少,操作更便捷。
# 加載forecast包> library('forecast')# 生成模型AR(1) > a2 <- arima(tsx, order=c(1,0,0))> tsp2<-forecast(a2, h=50)> plot(tsp2)
查看forecast()計算后的預測結果。
> tsp2 Point Forecast Lo 80 Hi 80 Lo 95 Hi 951001 -15.71590 -16.99118 -14.440628 -17.66627 -13.76553691002 -15.60332 -17.39825 -13.808389 -18.34843 -12.85820921003 -15.49181 -17.67972 -13.303904 -18.83792 -12.14569661004 -15.38136 -17.89579 -12.866932 -19.22685 -11.53587261005 -15.27197 -18.06994 -12.474000 -19.55110 -10.99284321006 -15.16362 -18.21425 -12.112996 -19.82915 -10.49809221007 -15.05631 -18.33593 -11.776682 -20.07206 -10.04055411008 -14.95001 -18.43972 -11.460312 -20.28705 -9.61297501009 -14.84474 -18.52891 -11.160567 -20.47919 -9.21028461010 -14.74046 -18.60591 -10.875013 -20.65216 -8.82876731011 -14.63718 -18.67257 -10.601802 -20.80877 -8.46559941012 -14.53489 -18.73030 -10.339486 -20.95121 -8.11857231013 -14.43357 -18.78024 -10.086905 -21.08123 -7.78591741014 -14.33322 -18.82333 -9.843112 -21.20026 -7.46619031015 -14.23383 -18.86034 -9.607319 -21.30947 -7.15819231016 -14.13538 -18.89190 -9.378864 -21.40985 -6.8609139
通過forecast()函數,直接生成了Forecast值,80%概率的預測值范圍,和95%概率的預測值范圍。
在明白了整個自回歸模型的設計思路、建模過程、檢驗條件、預測計算、可視化展示的完整操作后,我們就可以真正地把自回歸模型用到實際的業務中。發現規律,發現價值??!
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25在當今數字化時代,數據分析師的重要性與日俱增。但許多人在踏上這條職業道路時,往往充滿疑惑: 如何成為一名數據分析師?成為 ...
2025-04-24