A. 殘差自回歸模型如何做預測 以下數據如何做auto-regressive預測
ARIMA模型的提出使人們對非平穩序列擬合精度大大提高,但和傳統的確定性因素分解方法相比較,ARIMA模型仍然有一些缺憾,它使用養分方法提取確定性信息,差分方法的優點是對確定信息的提取比較充分,缺點是很難對模型進行直觀解釋。所以當序列具有非常顯著的確定性趨勢或者季節效應時,人們會懷念確定性因素分解方法對各種確定性效應的解釋,但又因為它對殘差信息的浪費而不敢輕易使用。
為了解決這個問題,人們構造了殘差自回歸(auto-regressive)模型。
模型結構
1.殘差自回歸模型的構造思想是首先通過確定性因素分解方法提取序列中主要的確定性信息。
包括趨勢效應擬合與季節效應擬合。
2.考慮到因素分解方法對確定性信息的提取可能不充分,因而需要進一步檢驗殘差序列的自相關性。
3.如果檢驗結果顯示殘差序列自相關性不顯著,說明回歸模型對信息的提取比較充分,可以停止分析。
4.如果檢驗結果顯示殘差序列自相關性顯著,說明回歸模型對信息的提取不充分,可以考慮對殘差序列擬合自回歸模型。
這樣的模型叫做殘差自回歸模型。
實踐中兩種方式(一)(二):
(一)
(1)自變數為時間t的冪函數
(2)自變數為歷史觀察值
(二)
(1)給定季節指數
(2)建立季節自回歸模型
殘差自回歸模型舉例
使用殘差自回歸模型分析1952-1988年中國農業實際國民收入指數序列。
該序列有顯著的線性遞增趨勢,但沒有季節效應,所以考慮建立(一 )類模型。
#擬合關於時間t的線性回歸模型d<-read.table("D:/R-TT/book4/4R/data/file17.csv",sep=",",header = T)
x<-ts(d$index,start = 1952)
t<-c(1:37)
x.fit1<-lm(x~t)
summary(x.fit1)
Call:
lm(formula = x ~ t)
Resials:
Min 1Q Median 3Q Max
-28.71 -20.48 -10.81 26.42 46.17 Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 66.1491 8.1197 8.147 1.35e-09 ***
t 4.5158 0.3726 12.121 4.40e-14 ***---Signif. codes: 0 『***』 0.001 『**』 0.01 『*』 0.05 『.』 0.1 『 』 1Resial standard error: 24.2 on 35 degrees of freedom
Multiple R-squared: 0.8076, Adjusted R-squared: 0.8021 F-statistic: 146.9 on 1 and 35 DF, p-value: 4.404e-
擬合關於延遲變數的自回歸模型
xlag<-x[2:37]
x2<-x[1:36]
x.fit2<-lm(x2~xlag)
summary(x.fit2)
Call:
lm(formula = x2 ~ xlag)
Resials: Min 1Q Median 3Q Max -15.764 -5.066 -0.703 5.539 20.424
Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 7.39226 4.00444 1.846 0.0736 .
xlag 0.91932 0.02464 37.309 <2e-16 ***
---Signif. codes: 0 『***』 0.001 『**』 0.01 『*』 0.05 『.』 0.1 『 』 1
Resial standard error: 7.936 on 34 degrees of freedom
Multiple R-squared: 0.9762, Adjusted R-squared: 0.9755
F-statistic: 1392 on 1 and 34 DF, p-value: < 2.2e-
兩個趨勢擬合模型的擬合效果圖
fit1<-ts(x.fit1$fitted.value,start = 1952)fit2<-ts(x.fit2$fitted.value,start = 1952)plot(x,type = "p",pch=8)lines(fit1,col=2)lines(fit2,col=4)123456
PACF
自相關系數拖尾,偏自相關系數2階截尾。所以對殘差序列擬合AR(2)模型。
#擬合AR(2)模型r.fit<-arima(x.fit1$resial,order=c(2,0,0),include.mean = F)
r.fitCall:arima(x = x.fit1$resial, order = c(2, 0, 0), include.mean = F)Coefficients:
ar1 ar2 1.4995 -0.6028s.e. 0.1274 0.1356sigma^2 estimated as 50.6: log likelihood = -126.59, aic = 259.17123456789101112
> #殘差自相關模型的顯著性檢驗> for(i in 1:2) print(Box.test(r.fit$resial,lag=6*i))
Box-Pierce testdata: r.fit$resialX-squared = 3.1979, df = 6, p-value = 0.7836
Box-Pierce testdata: r.fit$resialX-squared = 10.661, df = 12, p-value = 0.55821234567891011121314
通過了檢驗
B. 如何用python實現含有虛擬自變數的回歸
參考資料:
DataRobot | Ordinary Least Squares in Python
DataRoboe | Multiple Regression using Statsmodels
AnalyticsVidhya | 7 Types of Regression Techniques you should know!
C. arima模型python 怎麼看平穩性
時間序列分析(一) 如何判斷序列是否平穩
序列平穩不平穩,一般採用兩種方法:
第一種:看圖法
圖是指時序圖,例如(eviews畫滴):
分析:什麼樣的圖不平穩,先說下什麼是平穩,平穩就是圍繞著一個常數上下波動。
看看上面這個圖,很明顯的增長趨勢,不平穩。
第二種:自相關系數和偏相關系數
還以上面的序列為例:用eviews得到自相關和偏相關圖,Q統計量和伴隨概率。
分析:判斷平穩與否的話,用自相關圖和偏相關圖就可以了。
平穩的序列的自相關圖和偏相關圖不是拖尾就是截尾。截尾就是在某階之後,系數都為 0 ,怎麼理解呢,看上面偏相關的圖,當階數為 1 的時候,系數值還是很大, 0.914. 二階長的時候突然就變成了 0.050. 後面的值都很小,認為是趨於 0 ,這種狀況就是截尾。再就是拖尾,拖尾就是有一個衰減的趨勢,但是不都為 0 。
自相關圖既不是拖尾也不是截尾。以上的圖的自相關是一個三角對稱的形式,這種趨勢是單調趨勢的典型圖形。
下面是通過自相關的其他功能
如果自相關是拖尾,偏相關截尾,則用 AR 演算法
如果自相關截尾,偏相關拖尾,則用 MA 演算法
如果自相關和偏相關都是拖尾,則用 ARMA 演算法, ARIMA 是 ARMA 演算法的擴展版,用法類似 。
不平穩,怎麼辦?
答案是差分
還是上面那個序列,兩種方法都證明他是不靠譜的,不平穩的。確定不平穩後,依次進行1階、2階、3階...差分,直到平穩位置。先來個一階差分,上圖。
從圖上看,一階差分的效果不錯,看著是平穩的。
D. 如何用python作空間自回歸模型
基本形式
線性模型(linear model)就是試圖通過屬性的線性組合來進行預測的函數,基本形式如下:
f(x)=wTx+b
許多非線性模型可在線性模型的基礎上通過引入層結構或者高維映射(比如核方法)來解決。線性模型有很好的解釋性。
線性回歸
線性回歸要求均方誤差最小:
(w∗,b∗)=argmin∑i=1m(f(xi)−yi)2
均方誤差有很好的幾何意義,它對應了常用的歐式距離(Euclidean distance)。基於均方誤差最小化來進行模型求解稱為最小二乘法(least square method),線性回歸中,最小二乘發就是試圖找到一條直線,使得所有樣本到直線的歐式距離之和最小。
我們把上式寫成矩陣的形式:
w∗=argmin(y−Xw)T(y−Xw)
這里我們把b融合到w中,X中最後再加一列1。為了求最小值,我們對w求導並令其為0:
2XT(Xw−y)=0
當XTX為滿秩矩陣(full-rank matrix)時是可逆的。此時:
w=(XTX)−1XTy
令xi=(xi,1),可以得到線性回歸模型:
f(xi)=xTi(XTX)−1XTy