时间序列分析中的AR模型是利用历史数据来预测未来数据的一种模型,也叫做自回归模型auto-regressive。在滤波器中也有应用,原理跟FIR滤波一样,如果是用matlab的话使用相同AR系数预测的序列和FIR滤波器函数得到的结果是一样的。AR模型重要的部分在于AR系数的估计,以最小二乘法为例,原理如下:
1.自回归模型的定义
自回归模型(AutoregressiveModel)是用自身做回归变量的过程,即利用前期若干时刻的随机变量的线性组合来描述以后某时刻随机变量的线性回归模型[1],它是时间序列中的一种常见形式[2]。(文献名字忘了,但是标注出这段来自文献)
上式中是指序列t时刻的值,是AR模型的系数,
是白噪声序列,p为AR模型的阶次。如果知道系数的前提下,只要将系数对原时间序列卷积就可以得到预测数据,即FIR滤波器。
2.基于最小二乘法求解AR模型系数
设序列的值分别为{t=0,1,...N},设
AR(p)模型可以表示为:
由最小二乘法原理计算,AR模型系数的估计为:
最小二乘法估计系数的python 代码实现如下:
#最小二乘法估计
import numpy as np
def ar_least_square(sample,p):
matrix_x=np.zeros((sample.size-p,p))
matrix_x=np.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=np.array(array[p:sample.size])
matrix_y=matrix_y.reshape(sample.size-p,1)
matrix_y=np.matrix(matrix_y)
#cofe为AR系数
cofe=np.dot(np.dot((np.dot(matrix_x.T,matrix_x)).I,matrix_x.T),matrix_y)
return cofe