标签:
AR(Autoregressive)模型(自回归模型):用同一变量之前的表现情况来预测该变量现在或未来的表现情况,这种预测方法只与变量自己有关,而与其他变量无关,所以称作是自回归。
数学定义模型:假定AR模型是p阶的,对于一组时间序列有观测值{x[1],x[2],.....x[N]},计算t时刻x的预测值x[t],其自回归方程:
x[t]=a[1]*x[t-1]+a[2]*x[t-2]....+a[p]*x[t-p]+u[t],1<=p<N,p<=t<=N
其中{a[1],a[2]...a[p]}是对应的参数序列,u[t]是满足N(0,σ^2)的白噪声。
由该数学模型可以看出,AR(p)模型是一种线性预测,由前面的p个x观测值来预测t时刻的值,其本质类似于插值法,其目的都是为了增加有效数据。
AR模型多用于平稳时间序列的预测与拟合,给定一个时间序列,其建模步骤一般如下:
1.判断时间序列是否平稳,可以采用ACF检验、ADF单位根检验等方法。
2若时间序列平稳,则直接转3;若时间序列非平稳,则可采用差分的方法,将其转换为平稳时间序列,转3。
3.计算AR模型的参数(burg算法,最小二乘法,自相关算法等)与定阶(根据AIC准则,SC准则,FPE准则等)。
4.检验3中确定AR模型的拟合度,主要是检验残差序列是否服从N(0,σ^2)白噪声。
5.利用AR模型进行预测。
下面通过实例来分析建模过程:
现有1978-2014年全国人口的死亡率(数据来源于http://www.stats.gov.cn/tjsj/ndsj/):
[6.25 6.28 6.34 6.36 6.60 6.90 6.82 6.78
6.86 6.72 6.64 6.54 6.67 6.70 6.64 6.64
6.49 6.57 6.56 6.51 6.50 6.46 6.45 6.43
6.41 6.40 6.42 6.50 6.81 6.93 7.06 7.08
7.11 7.14 7.15 7.16 7.16]
import numpy; import math; #计算某一个k值的ACF def auto_relate_coef(data,avg,s2,k): ef=0.; for i in range(0,len(data)-k): ef=ef+(data[i]-avg)*(data[i+k]-avg); ef=ef/len(data)/s2; return ef; #计算k从0到N-1所有ACF def auto_relate_coefs(sample): efs=[]; data=[]; avg=numpy.mean(sample); s2=numpy.var(sample); array=sample.reshape(1,-1); for x in array.flat: data.append(x); for k in range(0,len(data)): ef=auto_relate_coef(data,avg,s2,k); efs.append(ef); return efs;序列{1978-2014人口死亡率}自相关系数如图:
def ar_least_square(sample,p): matrix_x=numpy.zeros((sample.size-p,p)); matrix_x=numpy.matrix(matrix_x); array=sample.reshape(sample.size); j=0; for i in range(0,sample.size-p): matrix_x[i,0:p]=array[j:j+p]; j=j+1; matrix_y=numpy.array(array[p:sample.size]); matrix_y=matrix_y.reshape(sample.size-p,1); matrix_y=numpy.matrix(matrix_y); #fi为参数序列 fi=numpy.dot(numpy.dot((numpy.dot(matrix_x.T,matrix_x)).I,matrix_x.T),matrix_y); matrix_y=numpy.dot(matrix_x,fi); matrix_y=numpy.row_stack((array[0:p].reshape(p,1),matrix_y)); return fi,matrix_y;
def ar_aic(rss,p): n=rss.size; s2=numpy.var(rss); return 2*p+n*math.log(s2); def ar_sc(rss,p): n=rss.size; s2=numpy.var(rss); return p*math.log(n)+n*math.log(s2);
标签:
原文地址:http://blog.csdn.net/u014557232/article/details/50986298