如何用python作空间自回归模型

Python013

如何用python作空间自回归模型,第1张

基本形式

线性模型(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

时间序列分析(一) 如何判断序列是否平稳

序列平稳不平稳,一般采用两种方法:

第一种:看图法

图是指时序图,例如(eviews画滴):

分析:什么样的图不平稳,先说下什么是平稳,平稳就是围绕着一个常数上下波动。

看看上面这个图,很明显的增长趋势,不平稳。

第二种:自相关系数和偏相关系数

还以上面的序列为例:用eviews得到自相关和偏相关图,Q统计量和伴随概率。

分析:判断平稳与否的话,用自相关图和偏相关图就可以了。

平稳的序列的自相关图和偏相关图不是拖尾就是截尾。截尾就是在某阶之后,系数都为 0 ,怎么理解呢,看上面偏相关的图,当阶数为 1 的时候,系数值还是很大, 0.914. 二阶长的时候突然就变成了 0.050. 后面的值都很小,认为是趋于 0 ,这种状况就是截尾。再就是拖尾,拖尾就是有一个衰减的趋势,但是不都为 0 。

自相关图既不是拖尾也不是截尾。以上的图的自相关是一个三角对称的形式,这种趋势是单调趋势的典型图形。

下面是通过自相关的其他功能

如果自相关是拖尾,偏相关截尾,则用 AR 算法

如果自相关截尾,偏相关拖尾,则用 MA 算法

如果自相关和偏相关都是拖尾,则用 ARMA 算法, ARIMA 是 ARMA 算法的扩展版,用法类似 。

不平稳,怎么办?

答案是差分

还是上面那个序列,两种方法都证明他是不靠谱的,不平稳的。确定不平稳后,依次进行1阶、2阶、3阶...差分,直到平稳位置。先来个一阶差分,上图。

从图上看,一阶差分的效果不错,看着是平稳的。

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

通过了检验