文档详情

卡尔曼滤波及其与DSGE模型的关系

m****
实名认证
店铺
DOCX
19.65KB
约4页
文档ID:391249557
卡尔曼滤波及其与DSGE模型的关系_第1页
1/4

一、介绍什么是卡尔曼滤波器?(WhatistheKalmanFilter?)在学习卡尔曼滤波器之前,首先看看为什么叫“卡尔曼”跟其他著名的理论(例如傅立叶变换,泰勒级数等等)一样,卡尔曼也是一个人的名字,而跟他们不同的是,他是个现代人!卡尔曼全名RudolfEmilKalman,匈牙利数学家,1930年出生于匈牙利首都布达侦斯1953,1954年于麻省理工学院分别获得电机工程学士及硕士学位1957年于哥伦比亚大学获得博士学位我们现在要学习的卡尔曼滤波器,正是源于他的博士论文和1960年发表的论文《ANewApproachtoLinearFilteringandPredictionProblems》(线性滤波与预测问题的新方法)简单来说,R尔曼滤波器是,个°optimalrecursivedataprocessingalgorithm(最优化自回归数据处理算法)”对于解决很大部分的问题,他是最优,效率最高甚至是最有用的他的广泛应用己经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的需达系统以及导弹追踪等等近年来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测等等。

状态估计是卡尔曼滤波的重要组成部分.一般来说,根据观测数据对随机量进行定星推断就是估计问题,特别是对动态行为的状态估计,它能实现实时运行状态的估计和预测功能比如对飞行器状态估计状态估计对于了解和控制•个系统具有重要意义,所应用的方法属于统计学中的估计理论最常用的是最小二乘估计,线性最小方差估计、最小方差估计、递推最小二乘估计等其他如风险准则的贝叶斯估计、最大似然估计、随机逼近等方法也都有应用受噪声干扰的状态量是个随机量,不可能测得精确值,但可对它进行一系列观测,并依据一组观测值,按某种统计观点对它进行估计.使估计值尽可能准确地接近真实值,这就是最优估计真实值与估计值之差称为估计误差若估汁值的数学期望与真实值相等,这种估计称为无偏估计CI、尔曼提出的递推最优估计理论,采用状态空间描述法,在算法采用递推形式,卡尔曼滤波能处理多维和非平稳的随机过程为了可以更加容易的理解卡尔曼滤波器,这里会应用形象的描述方法来讲解,而不是像大务数参考书那样罗列一大堆的数学公式和数学符号但是,他的5条公式是其核心内容一结合现代的计算机,其实卡尔曼的程序相当的简单,只要你理解了他的那5条公式在介绍他的5条公式之前,先让我们来根据下而的例子一步一步的探索。

假设我们要研究的对象是一个房间的温度根据你的经验判断,这个房间的温度是恒定的,也就是卜.一分钟的温度等于现在这一分钟的温度(假设我们用一分钟来做时间单位)假设你对你的经验不是100%的相信,可能会有上下偏差几度我们把这些偏差看成是高斯白噪声(WhiteGaussianNoise),也就是这些偏差跟前后时间是没有关系的而FI符合高斯分配(GaussianDistribution)另外,我们在房间里放一个温度计,但是这个温度计也不准确的,测房值会比实际值偏差我们也把这些偏差看成是高斯白噪声好了,现在对于某一分钟我们有两个有关于该房间的温度值:你根据经验的预测值(系统的预测值)和温度计的值(测量值)卜.面我们要用这两个值结合他们各自的噪声来估算出房间的实际温度值假如我们要估算k时刻的是实际温度值首先你要根据k-l时刻的温度值,来预测k时刻的温度因为你相信温度是恒定的,所以你会得到k时刻的温度预测值是跟k-1时刻一样的,假设是23度,同时该值的高斯噪声的偏差是5度(5是这样得到的:如果k-1时刻估算出的最优温度值的偏差是3,你对自己预测的不确定度是4度,他们平方相加再开方,就是5)o然后,你从温度计那里得到了k时刻的温度值,假设是25度,同时该值的偏差是4度。

由于我们用于估算k时刻的实际温度有两个温度值,分别是23度和25度究竟实际温度是多少呢?相信白L1还是相信温度讨呢?尤竟相信隹多,点,我们|以用他fJ的covariance来判断因为Kg一2=5“2/(5涉+厂2),所以Kg=0.78,我们可以估算出k时刻的实际温度值是:23+0.78*(25-23)=24.56度可以看出,因为温度计的covariance比较小(比较相信温度计),所以估算出的最优温度值偏向温度计的值现在我们己经得到k时刻的最优温度值了,卜.一步就是要进入k+1时刻,进行新的最优估算到现在为止,好像还没看到什么自回归的东西出现对了,在进入k+1时刻之前,我们还要算出k时刻那个最优值(24.56度)的偏差算法如下:((1-隘)*5一2广0.5二2.35这里的5就是上而的k时刻你预测的那个23度温度值的偏差,得出的2.35就是进入k+1时刻以后k时刻估•算出的最优温度值的偏差(对应于上面的3)o就是这样,卡尔曼波波器就不断的把covariance递归,从而估算出最优的温度值他运行的很快,而且它只保留了上一时刻的covarianceo上面的Kg,就是卡尔曼增益(KalmanGain)。

二、卡尔曼滤波器算法(TheKalmanFilterAlgorithm)在这一部分,我们就来描述源于DrKalman的卡尔曼滤波器下面的描述,会涉及一些基本的概念知识,包括概率(Probability)>随即变量(RandomVariab1e),高斯或正态分配(GaussianDistribution)还有State~spaceMode1等等但对于卡尔曼滤波器的详细证明,这里不能一一描述首先,我们先要引入一个离散控制过程的系统该系统可用一个线性随机微分方程(LinearStochasticDifferenceequation)来描述:at+i_(it.Ttat也爪inx1mx1mxm,mx1mxr,rx1火=q+Zt«t+GqNx「Nxl十Nxinjnx1NxN^Nxl其中ai~N(a,P),i]t~iidN(O,Ir),Et~iidN(O,lN),并且£[判;]=0上两式子中,第一个式了称为转移等式(transitionequation),第二个式子称为测度等式(measureequation)俊+1是无法观测的向量,称为系统状态向量(statevector):yt是可观察向量Tt,Zt,Ht,Gt称为系统矩阵(systemmatrices)。

我们可以把上两式合并,=Stut\yt/(m+N)x1+(m+N)xni,mx1+(m+N)x1其中ai~N(a,P),Ut~iidN(0,g=(*)〃t=(蒙),琰=(V,g^)初始值E=G).对于满足上面的条件(线性随机微分系统,过程和测量都是高斯白噪声),卡尔曼滤波器是最优的信息处理器卜面我们来用他们结合他们的covariances来估算系统的最优化输出(类似上一节那个温度的例子)首先我们要利用系统的过程模型,来预测下一状态的系统即我们要基于Yt-i=(yi,…,yt-D估计状态值at=E[at|Yt-i],基于Yf(yx,…,y*)估计状态值at|t=E[at|Yt]0令P产var(at|*T),明=国冲心)为&的条件方差下面是卡尔曼滤波的过滤/更新等式:物=再+KtVtR|t=R—RZ;K;其中vt=yt-q-Zt«tFt=+GtG;Kt=R"Ft=var(vt),vt'j0分别成为测度等式扰动(measurementequationinnovation)/预测误差(predictionenor)与卡尔曼增益(Kalmangain)下面是卡尔曼滤波预测等式,at+i=ltat|t叫+1=啊"+岫;若yt中有缺失值,则在更新与预测时,令vt=0,FT1=0,Kt=0o于是,这意味着可以预测到样本外的状态值。

除了卡尔曼滤波还有卡尔曼平滑器:用滤波求出(at|t}t=14at+i|t}t_0»(R|t}t=1*{R+i|t}t_0»被用来构建{条仃*=1首先,§t|t就是指珈*;然后'令Jt=R|tFR+i|t,于是我们由曲丁=»t|t+Jt(St+i|T-%t+i|t)得伍叩}比1卡尔曼滤波与DSGE的关系卡尔曼滤波的过程中产生了参数估计时需要的似然函数,因此可以利用似然函数估计参数具体过程为,卡尔曼滤波后的对数似然函数ZTN1▽fhif(yt|Yt—i;甲)=一云ln(2it)-万2(hi|Ft|+v;Ff1vt)t=lt=l似然函数的部分孙甲)=*7津1咿「以是一个检验给定的平好坏的最Koopman,Shephard与Doornik(1999)指出是的上式约为1的

因此可得,8=(;),中=(;),Q=(?;),£=(;)表示初始值为0,初始值方差为无穷Splus-S+FinMetrics/SsfPack创建对象ssf,令弓言=0.52,居=1sigma.e=1sigma.n=0.5al=0Pl=-1ssf.il.list=list(mPhi=A3.matrix(c(lr1))fmOmega=diag(c(sigma・n^2,sigma.e^2)),mSxgma=as.matrix(c(Pl/al))>ssf.11.listssf.11=CheckS3f(ssf.11.list)class(ssf.ll)names(ssf.11)模拟状态值与观测值set.seed(112)11.sim=SsfSim(ssf.il.list,n=250)class(11・sxm)collds(11.sim)tsplot(11.sim)legend(0,4,legend=c("State","Response"),lty=l:2)3)用卡尔曼滤波器做更新和预测(残差情况)#Algorithms:Kalmanfilter,momentestimation,conditionaldensityestimation#Kalmansmootherrmomentsmoother#KalmanFilterforlocallevelmodelcreatedatay.11=11.sim[r^response11]Kalmanfilteringargs(KalmanFil)KalmanFil.11=KalmanFil(y.llzssf.11,task=,rSTFILM)class(KalmanFil・11)names(KalmanFil・11)KalmanFil.ll$mOutshowfilteredestimatesKalmanFil.ll$mEstplotmethodplot(KalmanFil.11)Kalmansmootherargs(KalmanSm。

)KalmanSmo.11=KalmanSmo(KalmanFil.llrssf.11)class(KalmanSmo・11)names(KalmanSmo.11)plot(KalmanSmo.llrlAyout=c(lr2))输出滤波器与光滑器的状态估计与观测值估计momentfilteringwithvariancesFilteredEst.11=SsfMomentEst(y.llrssf.llrtask=MSTFILW)class(FilteredEst.11)names(FilteredEst.11)FilteredEst.11$st。

下载提示
相似文档
正为您匹配相似的精品文档