<center>1.前言</center>
本文设计了一个ARMA模型估计算法,该算法首先将ARMA模型转换为卡尔曼滤波器状态空间模型,在给定模型阶数下,先使用Hannan–Rissanen算法,从观测数据得到模型的初始估计,再以该初始估计为起点,使用非线性最优化得到模型的极大似然估计。得到模型的最优估计后,使用BIC定阶准则选取合适的模型阶数,最后使用卡尔曼滤波器对时间序列进行预报。本文使用的模型定义为:
其中,对于有,对有,为零均值的白噪声,即
<center>2.卡尔曼滤波器设计</center>
本文使用的卡尔曼滤波器模型定义如下:
其中为状态向量,为ARMA模型序列数据,为状态转移矩阵,,为观测矩阵,这些向量和矩阵定义如下:
则最后一行可表示为:
延迟得到:
其中,取行得到:
延迟得到:
代入(5)得到:
或表示为:
取行得到:
延迟得到:
带入(9)得到:
依次类推在第一行有:
或:
由式(4)和的定义有:
带入(14)得到ARMA模型:
证明(2)(3)式等价于(1)式。
在建立卡尔曼滤波器模型后,便可使用递推公式进行计算:
其中为噪声的协方差矩阵,为增益矩阵
<center>3.模型的极大似然估计</center>
当卡尔曼滤波器得到估计值,可以得到新息,新息的方差为,则观测向量的似然函数表示为:
取对数得到:
此时似然函数的参数为,将中的移入得到
以为参数对最大化得到
带入式(22)得到
去除常数项得到:
该函数是参数的非线性函数,需要使用非线性优化算法求函数的最大值。
<center>4.初始参数确定</center>
由于初始参数的选择对优化算法的效率和结果有较大影响,因此需要对模型的参数进行初步估计。本文使用了Hannan–Rissanen线性回归算法进行初步估计。该算法分为两步:
- 先将观测序列当做高阶模型:
使用尤尔-瓦尔克方程求解模型参数,并使用BIC准则确定模型的阶数:
其中为估计的噪声方差,观测序列长度。
则估计噪声可表示为
- 在得到估计噪声序列后,计算参数向量在线性回归模型序列的最小二乘解,也就是最小化:
该方程实际也是通过尤尔-瓦尔克方程求解。
实验证明该估计结果较接近最优化结果。
<center>4.BIC定阶</center>
由于ARMA模型不可能唯一确定,模型的阶数也并不唯一,需要根据实际情况选择相应的准则确定最合适的阶数,如FPE准则,AIC准则,BIC准则等,本文使用了BIC准则选取模型阶数,对于ARMA模型,BIC准则表示为:
其中为白噪声方差的极大似然估计。模型的阶数:
其中为模型的最高阶数。
<center>5.关于模型的跟踪</center>
由于算法中使用了卡尔曼滤波器进行递推运算,因此在得到序列的新观测数据后可以加入该滤波器进行递推计算并进行新一轮优化,由于系统具有一定的惯性,因此新的模型参数数在上一次参数的附近,因此可以用上一次的结果作为优化的起点。
<center>5.算法流程</center>
由于算法涉及大量矩阵运算,因此程序使用了开源矩阵运算库eigen,非线性优化部分使用了google开源的非线性优化库ceres。
程序先使用generate_arma_data函数生成长度为200的arma序列,接着调用arma_estimator_hr函数(Hannan–Rissanen算法)求解模型的初步估计,最后由arma_estimator_mle函数求解极大似然估计,得到最优估计后根据BIC准则计算BIC结果,得到最小的:程序运行结果如下:
:p=1,q=1,BIC=799.489580544931
:p=1,q=2,BIC=806.092794685896
:p=1,q=3,BIC=812.357735217179
:p=1,q=4,BIC=817.981515183498
:p=2,q=1,BIC=805.966371063034
:p=2,q=2,BIC=812.101541520479
:p=2,q=3,BIC=817.981515183498
:p=2,q=4,BIC=823.657602062738
:p=3,q=1,BIC=812.101541520479
:p=3,q=2,BIC=817.981515183498
:p=3,q=3,BIC=823.657602062738
:p=3,q=4,BIC=829.163703893365
:p=4,q=1,BIC=817.904762296210
:p=4,q=2,BIC=823.581092066115
:p=4,q=3,BIC=829.087436787408
:p=4,q=4,BIC=834.447889914660
Finish. p=1,q=1,coefs=0.774653 0.499346
coefs为最终结果,(实际为0.8),(实际为0.5)
<center>8.参考文献
[1].Hevia, C., World, T., & Decrg, B. (2008). Maximum Likelihood Estimation of an ARMA ( p , q ) Model. October, (October), 1–6.
[2].McDougall A. Algorithms in time series[J]. 1988.
[3].Shanmugam, Ramalingam. Introduction to Time Series and Forecasting[J]. Technometrics, 39(4):426-426.
网友评论