在网上看到好多同学说遇到在做卡尔曼滤波时候的一些关于状态方程参数如何确定的问题,这也是我最近遇到的问题。我这两天刚好在写一篇关于货币错配方面的论文,然后想把这个状态空间模型运用到研究中。我是eviews的初学者,这也是第一次建模型。不过按参数Z检验等一些数据来说,模型建立还是蛮成功的。所以我想把模型建立的方法在坛上说说,希望达人能够给予我一些批评和建议,也给想建模型的童鞋一点点启发。
首先来说,要建立状态空间模型。一个量测方程,一个状态方程。由于我有三个自变量,假设模型为
@signal lnaecm=c(1)+sv1*lnfer+sv2*lne+sv3*ex+[var=exp(c(2))] c(1)和c(2)的确定要用ls回归的数据确定 c(1)就是ls的截距项,c(2)就是 log(残差平方和/数据的个数)
接下来看状态方程 @state sv1=c(3)+c(4)*sv1(-1)+[var=exp(c(5))]
@state sv2=c(7)+c(8)*sv2(-1)+[var=exp(c(9))]
@state sv3=c(10)+c(11)*sv3(-1)+[var=exp(c(12))]
三个状态方程的系数确定其实都是类似的,我只对第一个来说。网上说这个系数是经验确定的,确实是这样,不过经验也应该有个方法。看了好多的书,发现高铁梅老师的书里确定的方法还是很管用的。她在一篇文章关于钢材的文章中直接定义@state sv1=sv1(-1),我说不上来理由,不过在我建立的模型中,sv1的AR(1)模型中的系数确实都非常的接近于1,也许可以直接这么建立吧。
不过我使用的方法是先给c(3) c(4) c(5) 赋值:c(3)=0.005 c(4)=0.9 c(5)= -9。用这三个数值建立回归@state sv1=0.005+0.9*sv1(-1)+[var=exp(-9)],这个状态方程,我们可以导出sv1的预测值。就是从proc中的make state series中导出。然后再将导出的sv1f序列建立AR(1)的方程。sv1f=c(13)+c(14)*sv1f(-1)+[var=exp(c(15))],观察各个数据的t检验值,来判断c13-15的值,再将如此得出的数值,重新赋值到原状态方程的c3-5中。
我就是如此建立模型的,最后得出的结论也很理想,不过我只是建立了这样一个模型,还没有检验其他的模型。。请大家批评指正吧~~谢谢