残差自回归模型如何做预测 以下数据如何做auto-regressive预测

4477 5009 5398 5751 6292 6767 7636 8262 8791 9952 10671 10852 10982 11302
11415 11819 13470 13650 14857 15509 15577 14841 15215 15438 15734 15805 16395

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)

Residuals:
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 ‘ ’ 1Residual 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-141234567891011121314151617181920212223

拟合关于延迟变量的自回归模型

xlag<-x[2:37]
x2<-x[1:36]
x.fit2<-lm(x2~xlag)
summary(x.fit2)
Call:
lm(formula = x2 ~ xlag)

Residuals:    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

Residual 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-16123456789101112131415161718192021

两个趋势拟合模型的拟合效果图

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

 
趋势拟合效果图

残差自相关检验

一、检验原理 
确定性模型拟合好后,要对该模型拟合效果进行检验。 
如果残差序列显示出纯随机性的性质,就说明确定性模型拟合的非常好,已经能够充分提取序列中的相关信息,不需要对残差进行二次信息提取,分析结束。 
反之,如果残差序列显示显著的自相关性,即说明提取的不够充分,应该对残差序列在次拟合,提取其中残存的相关信息,以提高模型拟合的精度。 
二、Durbin-Watson检验 
这是在考虑多元自回归的模型的残差独立性时提出的一个自相关检验统计量,我们把它借鉴过来进行时间序列的残差自相关检验。

> library(zoo)
> library(lmtest)
> dwtest(x.fit1)

Durbin-Watson test

data:  x.fit1
DW = 0.13784, p-value < 2.2e-16alternative hypothesis: true autocorrelation is greater than 0123456789


DW检验结果显示,DW的统计量要小于2,且p值极小,这说明残差序列高度正相关,为了充分提取相关信息,我们要对残差序列进行在次提取。 
三.Durbin h检验 
在一些场合下容易产生残差序列正自相关性不显著的误判。 
使用Durbin h检验代替DW检验统计量成为延迟因变量的场合常用的自相关性检验统计量。

dwtest(x.fit2,order.by=xlag)

Durbin-Watson testdata:  x.fit2
DW = 1.8153, p-value = 0.2295alternative hypothesis: true autocorrelation is greater than 01234567

对拟合模型而言,因为自变量xlag和因变量x具有自相关关系,所以需要使用Durbin h检验。DW值接近2,不相关。

残差自相关模型拟合

当残差自相关检验显示残差序列高度自相关时,我们需要对残差序列进行二次拟合,进一步提取残差序列中蕴涵中的相关信息,拟合残差自相关模型的步骤和命令与构建ARIMA模型的步骤与命令一样。

绘制差分后序列自相关图和偏自相关图

acf(x.fit1$residual)
pacf(x.fit1$residual)12

 
ACF 
 
PACF 
自相关系数拖尾,偏自相关系数2阶截尾。所以对残差序列拟合AR(2)模型。

#拟合AR(2)模型r.fit<-arima(x.fit1$residual,order=c(2,0,0),include.mean = F)
r.fitCall:arima(x = x.fit1$residual, 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$residual,lag=6*i))

Box-Pierce testdata:  r.fit$residualX-squared = 3.1979, df = 6, p-value = 0.7836


Box-Pierce testdata:  r.fit$residualX-squared = 10.661, df = 12, p-value = 0.55821234567891011121314

通过了检验 

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-10-27
意恐迟迟归。
第2个回答  2013-04-17
算每点的残差,记为a(n),然后判断a(n)与a(n-1)的线性关系吧 记得可以做DW检验
统计软件应该有这个功能的
我之前用matlab做过追问

不过我用的是SAS,matlab没用过。现在主要问题是,我程序都出来了,为什么结果老是出不来。

追答

额 那这可能是程序的问题吧 SAS不太了解..
你需要的话 我可以帮你用matlab做一下?

追问

额!那太好了,帮帮忙吧,我想用上面的数据做残差自回归(auto-regressive)预测,大概预测未来5个值吧,不知道matlab可不可以做。

第3个回答  2018-08-02
你用的什么软件或者语言,python的行不行?话说,用别的预测可以么?
有兴趣 qq281617953 备注 预测 百度知道
第4个回答  2017-10-19
算每点的残差,记为a(n),然后判断a(n)与a(n-1)的线性关系吧 记得可以做DW检验
统计软件应该有这个功能的
我之前用matlab做过
相似回答