dssm类

超类:

创建扩散状态空间模型

描述

dssm创建一个线性扩散状态空间模型独立高斯态扰动和观测创新。弥散状态空间模型包含弥散状态,初始分布的方差为.所有扩散态都相互独立,也独立于所有其他态。该软件实现了扩散卡尔曼滤波滤波,平滑和参数估计。

您可以:

  • 指定一个定常时变模型。

  • 指定状态是否平稳,静态,或者是非平稳的。

  • 指定状态转换、状态扰动加载、测量灵敏度或观察创新矩阵:

    • 通过提供矩阵显式地

    • 通过隐式地提供一个将参数映射到矩阵的函数,即参数到矩阵的映射函数

在创建包含未知参数的扩散状态空间模型之后,您可以通过传递已创建的参数来估计其参数dssm为对象和数据建模估计.的估计函数使用扩散卡尔曼滤波器构建似然函数。

使用一个完全指定的模型(即模型的所有参数值都是已知的):

  • 使用过滤器或平滑状态过滤器光滑的,分别。这些函数将扩散卡尔曼滤波器和数据应用于状态空间模型。

  • 使用预测状态或观测值预测

建设

Mdl= dssm (一个BC创建一个扩散状态空间模型Mdl)使用状态转换矩阵一个,状态扰动加载矩阵B,和测量灵敏度矩阵C

Mdl= dssm (一个BCD使用状态转换矩阵创建扩散状态空间模型一个,状态扰动加载矩阵B,测量灵敏度矩阵C,观察-创新矩阵D

Mdl= dssm (___名称,值使用前面语法中的任何输入参数和您指定的一个或多个附加选项名称,值对参数。

Mdl= dssm (ParamMap使用参数到矩阵映射函数创建扩散状态空间模型(ParamMap)你写的。该函数将参数向量映射到矩阵一个B,C.可选地,ParamMap可以将参数映射到DMean0Cov0.为了指定状态类型,函数可以返回StateType.为了适应观测方程中的回归分量,ParamMap还可以返回泄气的观测数据。

Mdl= dssm (SSMMdl转换状态空间模型对象(SSMMdl)到扩散状态空间模型对象(Mdl).dssm设置所有弥漫状态的初始方差SSMMdl。Cov0

输入参数

全部展开

用于显式状态空间模型创建的状态转换系数矩阵,指定为矩阵的矩阵或单元格向量。

状态转换系数矩阵,一个t,表示状态xt,都有望从过渡时期t- 1到t,对所有人t= 1,…,T.也就是周期下的期望状态转换方程tExt|xt1) =一个txt1

对于时不变状态空间模型,请指定一个作为一个——- - - - - -矩阵,是每个周期的状态数。

对于时变状态空间模型,请指定一个作为一个T-dimensional单元格数组,其中{t}包含一个t——- - - - - -t- 1状态转换系数矩阵。如果状态数随周期变化t- 1到t,然后tt- 1

任何系数矩阵中的值都表示状态空间模型中唯一的未知参数。一个贡献:

  • sum (isnan ((:)))时不变状态空间模型的未知参数。换句话说,如果状态空间模型是时不变的,那么软件将使用中定义的相同未知参数一个在每个时期。

  • numParamsA时变状态空间模型的未知参数,其中numParamsA = sum(cell2mat(cellfun(@(x)sum(sum(isnan(x))),A,'UniformOutput',0))))).换句话说,如果状态空间模型是时变的,那么软件为中的每个矩阵分配一组新的参数一个

你不能指定一个而且ParamMap同时进行。

数据类型:|细胞

用于显式状态空间模型创建的状态扰动加载系数矩阵,指定为矩阵的矩阵或单元格向量。

状态扰动,ut,为均值为0,标准差为1的独立高斯随机变量。状态扰动载荷系数矩阵,Bt,表示从周期到状态转换方程中的附加误差结构t- 1到t,对所有人t= 1,…,T.也就是周期的状态转换方程txt一个txt1+Btut

对于时不变状态空间模型,请指定B作为一个——- - - - - -k矩阵,状态数和k是每周期的状态扰动数。B * B”是所有周期的状态扰动协方差矩阵。

对于时变状态空间模型,请指定B作为一个T-dimensional单元格数组,其中B {t}包含一个t——- - - - - -kt状态-扰动-负载系数矩阵。如果状态或状态扰动的数量在一段时间内发生变化t,则矩阵之间的维数B {t - 1}而且B {t}有所不同。{t} * B {t}’状态扰动是周期的协方差矩阵吗t

任何系数矩阵中的值都表示状态空间模型中唯一的未知参数。B贡献:

  • 总和(isnan (B (:)))时不变状态空间模型的未知参数。换句话说,如果状态空间模型是时不变的,那么软件将使用中定义的相同未知参数B在每个时期。

  • numParamsB时变状态空间模型的未知参数,其中numParamsB = sum(cell2mat(cellfun(@(x)sum(sum(isnan(x))),B,'UniformOutput',0))))).换句话说,如果状态空间模型是时变的,那么软件为中的每个矩阵分配一组新的参数B

你不能指定B而且ParamMap同时进行。

数据类型:|细胞

用于显式状态空间模型创建的测量灵敏度系数矩阵,指定为矩阵的矩阵或单元格向量。

测量灵敏度系数矩阵,Ct,指定状态期望在周期内如何线性组合t为了形成观察结果,yt,对所有人t= 1,…,T.即周期的期望观测方程tEyt|xt) =Ctxt

对于时不变状态空间模型,请指定C作为一个n——- - - - - -矩阵,n观察的次数和是每个周期的状态数。

对于时变状态空间模型,请指定C作为一个T-dimensional单元格数组,其中C {t}包含一个nt——- - - - - -t测量灵敏度系数矩阵。如果状态数或观测值随周期变化t,则矩阵之间的维数C {t - 1}而且C {t}有所不同。

任何系数矩阵中的值都表示状态空间模型中唯一的未知参数。C贡献:

  • sum (isnan (C (:)))时不变状态空间模型的未知参数。换句话说,如果状态空间模型是时不变的,那么软件将使用中定义的相同未知参数C在每个时期。

  • numParamsC时变状态空间模型的未知参数,其中numParamsC = sum(cell2mat(cellfun(@(x)sum(sum(isnan(x))),C,'UniformOutput',0))))).换句话说,如果状态空间模型是时变的,那么软件为中的每个矩阵分配一组新的参数C

你不能指定C而且ParamMap同时进行。

数据类型:|细胞

用于显式状态空间模型创建的观察-创新系数矩阵,指定为矩阵的矩阵或单元格向量。

观察的创新,εt,为均值为0,标准差为1的独立高斯随机变量。观察-创新系数矩阵,Dt,表示周期观测方程中的加性误差结构t,对所有人t= 1,…,T.也就是周期的观测方程tytCtxt+Dtεt

对于时不变状态空间模型,请指定D作为一个n——- - - - - -h矩阵,n观察的次数和h为每周期的观测创新数。D * D '是所有时期的观察-创新协方差矩阵。

对于时变状态空间模型,请指定D作为一个T-dimensional单元格数组,其中D {t}包含一个nt——- - - - - -ht矩阵。如果观测次数或观测创新在某一时期发生变化t,则矩阵之间的维数D {t - 1}而且D {t}有所不同。D {t} * D {t}’观察-创新是周期的协方差矩阵吗t

任何系数矩阵中的值都表示状态空间模型中唯一的未知参数。D贡献:

  • sum (isnan (D (:)))时不变状态空间模型的未知参数。换句话说,如果状态空间模型是时不变的,那么软件将使用中定义的相同未知参数D在每个时期。

  • numParamsD时变状态空间模型的未知参数,其中numParamsD = sum(cell2mat(cellfun(@(x)sum(sum(isnan(x))),D,'UniformOutput',0))))).换句话说,如果状态空间模型是时变的,那么软件为中的每个矩阵分配一组新的参数D

默认情况下,D是一个空矩阵,表示状态空间模型中没有观测创新。

你不能指定D而且ParamMap同时进行。

数据类型:|细胞

用于隐式状态空间模型创建的参数到矩阵映射函数,作为函数句柄指定。

ParamMap必须是至少接受一个输入参数并返回至少三个输出参数的函数。必要的输入参数是一个未知参数的向量,必要的输出参数对应于系数矩阵一个B,C,分别。如果你的参数映射函数只需要输入参数向量参数,那么通过输入以下命令隐式创建一个扩散状态空间模型:

Mdl = dssm(@ParamMap)

一般来说,你可以写一个中间函数,例如,ParamFun,使用这种语法:

function [A,B,C,D,Mean0,Cov0,StateType,DeflateY] =…ParamFun (params otherInputArgs…)

在这种情况下,通过输入来创建扩散状态空间模型

Mdl = dssm(@(params)ParamMap(params,…otherInputArgs…))

然而:

  • 遵循输出参数的顺序。

  • 参数个数是一个向量,每个元素对应一个未知参数。

  • ParamFun必须返回一个B,C,分别对应状态转移矩阵、状态扰动加载矩阵和测量敏感系数矩阵。

  • 如果指定的输入参数多于形参向量(参数个数),例如观察到的响应和预测器,然后使用语法模式隐式地创建扩散状态空间模型

    Mdl = dssm(@(参数)ParamFun(参数,y,z))

  • 为可选输出参数DMean0Cov0StateType,DeflateY

    • 可选输出参数对应于观察-创新系数矩阵D和名称-值对参数Mean0Cov0,StateType

    • 若要跳过指定可选输出参数,请将参数设置为[]在函数体中。例如,跳过指定D,然后设置D = [];在函数中。

    • DeflateY是压缩观测数据,它容纳了观测方程中的回归分量。例如,在这个函数中,它有一个线性回归分量,Y观察到的响应向量和Z是预测器数据的向量。

      function [A,B,C,D,Mean0,Cov0,StateType,DeflateY] = ParamFun(params,Y,Z)…DeflateY = Y - params(9) - params(10)*Z;...结束

    • 的默认值Mean0Cov0,StateType,请参阅算法

  • 最好的做法是:

    • 将数据加载到MATLAB中®在指定模型之前的工作区。

    • 创建参数到矩阵映射函数作为其自己的文件。

如果你指定ParamMap,则不能指定任何名称-值对参数或任何其他输入参数。

数据类型:function_handle

状态空间模型转换为扩散状态空间模型,指定为舰导弹模型对象。

dssm设置所有弥漫状态的初始方差SSMMdl。Cov0

要使用弥漫卡尔曼滤波器来进行滤波、平滑和参数估计,而不是标准卡尔曼滤波器,请将状态空间模型转换为弥漫状态空间模型。

名称-值对参数

的可选逗号分隔对名称,值参数。的名字参数名称和价值对应的值。的名字必须出现在引号内。您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

初始状态意味着显式的状态空间模型创建,指定为由逗号分隔的对组成“Mean0”一个长度等于初始状态数的数值向量。默认值请参见算法

如果你指定ParamMap,那么你就不能指定Mean0.相反,在参数到矩阵映射函数中指定初始状态平均值。

数据类型:

用于显式状态空间模型创建的初始状态协方差矩阵,指定为由逗号分隔的对组成“Cov0”一个方阵的维数等于初始状态的个数。默认值请参见算法

如果你指定ParamMap,那么你就不能指定Cov0.相反,在参数到矩阵映射函数中指定初始状态协方差。

数据类型:

用于显式状态空间模型创建的初始状态分布指示符,指定为逗号分隔的对,由“StateType”一个长度等于初始状态数的数值向量。这个表总结了初始状态分布的可用类型。

价值 初始态分布类型
0 静止的(例如,ARMA模型)
1 常数1(即状态为1,概率为1)
2 扩散或非平稳(例如,随机游走模型,季节性线性时间序列)或静态

例如,假设状态方程有两个状态变量:第一个状态变量是AR(1)过程,第二个状态变量是随机游走。通过设置指定初始分布类型“StateType”,[0;2]

如果你指定ParamMap,那么你就不能指定Mean0.相反,在参数到矩阵映射函数中指定初始状态分布指示器。

默认值请参见算法

数据类型:

属性

全部展开

用于显式创建的状态空间模型的状态转换系数矩阵,指定为矩阵、矩阵的单元格向量或空数组([]).对于隐式创建的状态空间模型,在估计之前,一个[]只读。

状态转换系数矩阵,一个t,表示状态xt,都有望从过渡时期t- 1到t,对所有人t= 1,…,T.也就是周期下的期望状态转换方程tExt|xt1) =一个txt1

对于时不变状态空间模型,一个是一个——- - - - - -矩阵,是每个周期的状态数。

对于时变状态空间模型,一个是一个T-dimensional单元格数组,其中{t}包含一个t——- - - - - -t- 1状态转换系数矩阵。如果状态数随周期变化t- 1到t,然后tt- 1

任何系数矩阵中的值都表示状态空间模型中的未知参数。一个贡献:

  • sum (isnan ((:)))时不变状态空间模型的未知参数。换句话说,如果状态空间模型是时不变的,那么软件将使用中定义的相同未知参数一个在每个时期。

  • numParamsA时变状态空间模型的未知参数,其中numParamsA = sum(cell2mat(cellfun(@(x)sum(sum(isnan(x))),A,'UniformOutput',0))))).换句话说,如果状态空间模型是时变的,那么软件为中的每个矩阵分配一组新的参数一个

数据类型:|细胞

用于显式创建的状态空间模型的状态扰动加载系数矩阵,指定为矩阵、矩阵的单元格向量或空数组([]).对于隐式创建的状态空间模型,在估计之前,B[]只读。

状态扰动,ut,为均值为0,标准差为1的独立高斯随机变量。状态扰动载荷系数矩阵,Bt,表示从周期到状态转换方程中的附加误差结构t- 1到t,对所有人t= 1,…,T.也就是周期的状态转换方程txt一个txt1+Btut

对于时不变状态空间模型,B是一个——- - - - - -k矩阵,状态数和k是每周期的状态扰动数。B * B”是所有周期的状态扰动协方差矩阵。

对于时变状态空间模型,B是一个T-dimensional单元格数组,其中B {t}包含一个t——- - - - - -kt状态-扰动-负载系数矩阵。如果状态或状态扰动的数量在一段时间内发生变化t,则矩阵之间的维数B {t - 1}而且B {t}有所不同。{t} * B {t}’状态扰动是周期的协方差矩阵吗t

任何系数矩阵中的值都表示状态空间模型中的未知参数。B贡献:

  • 总和(isnan (B (:)))时不变状态空间模型的未知参数。换句话说,如果状态空间模型是时不变的,那么软件将使用中定义的相同未知参数B在每个时期。

  • numParamsB时变状态空间模型的未知参数,其中numParamsB = sum(cell2mat(cellfun(@(x)sum(sum(isnan(x))),B,'UniformOutput',0))))).换句话说,如果状态空间模型是时变的,那么软件为中的每个矩阵分配一组新的参数B

数据类型:|细胞

显式创建的状态空间模型的测量灵敏度系数矩阵,指定为矩阵、矩阵的单元格向量或空数组([]).对于隐式创建的状态空间模型,在估计之前,C[]只读。

测量灵敏度系数矩阵,Ct,指定状态期望如何在周期内线性组合t为了形成观察结果,yt,对所有人t= 1,…,T.即周期的期望观测方程tEyt|xt) =Ctxt

对于时不变状态空间模型,C是一个n——- - - - - -矩阵,n观察的次数和是每个周期的状态数。

对于时变状态空间模型,C是一个T-dimensional单元格数组,其中C {t}包含一个nt——- - - - - -t测量灵敏度系数矩阵。如果状态数或观测值随周期变化t,则矩阵之间的维数C {t - 1}而且C {t}有所不同。

任何系数矩阵中的值都表示状态空间模型中的未知参数。C贡献:

  • sum (isnan (C (:)))时不变状态空间模型的未知参数。换句话说,如果状态空间模型是时不变的,那么软件将使用中定义的相同未知参数C在每个时期。

  • numParamsC时变状态空间模型的未知参数,其中numParamsC = sum(cell2mat(cellfun(@(x)sum(sum(isnan(x))),C,'UniformOutput',0))))).换句话说,如果状态空间模型是时变的,那么软件为中的每个矩阵分配一组新的参数C

数据类型:|细胞

用于显式创建的状态空间模型的观察-创新系数矩阵,指定为矩阵、矩阵的单元格向量或空数组([]).对于隐式创建的状态空间模型,在估计之前,D[]只读。

观察的创新,εt,为均值为0,标准差为1的独立高斯随机变量。观察-创新系数矩阵,Dt,表示周期观测方程中的加性误差结构t,对所有人t= 1,…,T.也就是周期的观测方程tytCtxt+Dtεt

对于时不变状态空间模型,D是一个n——- - - - - -h矩阵,n观察的次数和h为每周期的观测创新数。D * D '是所有周期的观察-创新协方差矩阵。

对于时变状态空间模型,D是一个T-dimensional单元格数组,其中D {t}包含一个nt——- - - - - -ht矩阵。如果观测次数或观测创新在某一时期发生变化t,则矩阵之间的维数D {t - 1}而且D {t}有所不同。D {t} * D {t}’状态扰动是周期的协方差矩阵吗t

任何系数矩阵中的值都表示状态空间模型中的未知参数。D贡献:

  • sum (isnan (D (:)))时不变状态空间模型的未知参数。换句话说,如果状态空间模型是时不变的,那么软件将使用中定义的相同未知参数D在每个时期。

  • numParamsD时变状态空间模型的未知参数,其中numParamsD = sum(cell2mat(cellfun(@(x)sum(sum(isnan(x))),D,'UniformOutput',0))))).换句话说,如果状态空间模型是时变的,那么软件为中的每个矩阵分配一组新的参数D

数据类型:|细胞

初始状态均值,指定为数值向量或空数组([]).Mean0长度等于初始状态的数目(大小(1)大小(1){1},).

Mean0为周期0时状态高斯分布的均值。

对于隐式创建的状态空间模型,在估计之前,Mean0[]只读。然而,估计指定Mean0在评估之后。

数据类型:

初始状态协方差矩阵,指定为方阵或空数组([]).Cov0的维数等于初始状态的数目(大小(1)大小(1){1},).

Cov0为周期0时状态高斯分布的协方差。

对于隐式创建的状态空间模型,在估计之前,Cov0[]只读。然而,估计指定Cov0在评估之后。

对角线元素Cov0有价值的对应于弥散初始状态分布。这一说明表明完全不知道或事先不知道初始状态值。随后,该软件过滤,平滑,并估计参数存在弥漫初始状态分布使用弥漫卡尔曼滤波器。若要将标准卡尔曼滤波器用于扩散状态,请设置的每个对角线元素Cov0例如,一个很大的正数值,1 e7.这个规范表明初始状态值的知识相对薄弱。

数据类型:

初始状态分布指示符,指定为数值矢量或空数组([]).StateType长度等于初始状态数。

对于隐式创建的状态空间模型或参数未知的模型,StateType[]只读。

这个表总结了初始状态分布的可用类型。

价值 初始态分布类型
0 静止(如ARMA模型)
1 常数1(即状态为1,概率为1)
2 非平稳(例如,随机游走模型,季节性线性时间序列)或静态

例如,假设状态方程有两个状态变量:第一个状态变量是AR(1)过程,第二个状态变量是随机游走。然后,StateType[0;2]

对于非平稳态,dssmCov0默认情况下。随后,该软件假设弥漫状态是不相关的,并实现弥漫卡尔曼滤波滤波,平滑和参数估计。这个规范没有对扩散状态的初始状态值施加先验知识。

数据类型:

参数到矩阵映射函数,指定为函数句柄或空数组([]).ParamMap完全指定状态空间模型的结构。也就是说,ParamMap定义了一个BCD,以及,可选地,Mean0Cov0,StateType.对于显式创建的状态空间模型,ParamMap[]只读。

数据类型:function_handle

方法

disp 显示扩散状态空间模型的摘要信息
估计 扩散状态空间模型的极大似然参数估计
过滤器 扩散状态空间模型的前向递归
预测 扩散状态空间模型的预测状态和观测
完善 细化初始参数以帮助扩散状态空间模型估计
光滑的 弥漫状态空间模型的向后递归

复制语义

价值。要了解值类如何影响复制操作,请参见复制对象(MATLAB)。

例子

全部折叠

创建一个包含两个独立状态的扩散状态空间模型, x 1 t 而且 x 3. t ,并观察到, y t ,这是两个状态在时间上的确定性和 t x 1 是一个AR(1)模型,具有常数和 x 3. 是随机游走。从象征意义上讲,状态空间模型是

x 1 t x 2 t x 3. t ϕ 1 c 1 0 0 1 0 0 0 1 x t - 1 1 x t - 1 2 x t - 1 3. + σ 1 0 0 0 0 σ 2 u t 1 u t 3.

y t 1 0 1 x t 1 x t 2 x t 3.

状态扰动, u 1 t 而且 u 3. t ,为标准高斯随机变量。

指定状态转换矩阵。

A = [NaN NaN 0;0 10 0;0 0 1];

值表示未知参数。

指定状态扰动加载矩阵。

B = [NaN 0;0 0;0 NaN);

指定测量灵敏度矩阵。

C = [1 0 1];

创建一个指定状态类型的向量。在这个例子中:

  • x 1 t 为平稳AR(1)模型,故其状态类型为0

  • x 2 t 是AR(1)模型中常数的占位符。因为常数是未知的,在第一个方程中表示, x 2 t 1对于整个系列。因此,它的状态类型为1

  • x 3. t 是非平稳的,带漂移的随机游走,那么它的状态类型是2

StateType = [0 1 2];

使用。创建状态空间模型dssm

Mdl = dssm(A,B,C,“StateType”StateType)
Mdl =状态空间模型类型:dssm状态向量长度:3观测向量长度:1状态扰动向量长度:2观测创新向量长度:0模型支持的样本量:无限估计未知参数:4状态变量:x1, x2,…金宝app状态扰动:u1, u2,…观测序列:y1, y2,…观测创新:e1, e2,…未知参数:c1, c2,…状态方程:x1(t) = (c1)x1(t-1) + (c2)x2(t-1) + (c3)u1(t) x2(t) = x2(t-1) x3(t) = x3(t-1) + (c4)u2(t)观测方程:y1(t) = x1(t) + x3(t)初态分布:未指定初态均值。初始状态协方差矩阵未指定。状态类型x1 x2 x3 Stationary Constant Diffuse

Mdl是一个dssm包含未知参数的模型对象。详细总结Mdl打印到命令窗口。如果不指定初始状态协方差矩阵,则初始方差为 x 3. t

验证状态方程和观测方程的正确性是很好的实践。如果方程不正确,则展开状态空间方程并手动验证。

创建一个包含两个随机游走状态的扩散状态空间模型。观测值是两种状态的和,加上高斯误差。从象征意义上来说,方程式是

x t 1 x t 2 1 0 0 1 x t - 1 1 x t - 1 2 + σ 1 0 0 σ 2 u t 1 u t 2

y t 1 1 x t 1 x t 2 + σ 3. ε t

定义状态转换矩阵。

A = [10 0;0 1];

定义状态扰动加载矩阵。

B = [NaN 0;0 NaN);

定义测量灵敏度矩阵。

C = [1 1];

定义观察-创新矩阵。

D = NaN;

创建一个向量,指定两个状态都是非平稳的。

StateType = [2;2);

使用。创建状态空间模型dssm

Mdl = dssm(A,B,C,D,“StateType”StateType)
Mdl =状态空间模型类型:dssm状态向量长度:2观测向量长度:1状态扰动向量长度:2观测创新向量长度:1模型支持的样本量:无限估计未知参数:3状态变量:x1, x2,…金宝app状态扰动:u1, u2,…观测序列:y1, y2,…观测创新:e1, e2,…未知参数:c1, c2,…状态方程:x1(t) = x1(t-1) + (c1)u1(t) x2(t) = x2(t-1) + (c2)u2(t)观测方程:y1(t) = x1(t) + x2(t) + (c3)e1(t)初态分布:未指定初态均值。初始状态协方差矩阵未指定。状态类型x1 x2 Diffuse弥漫

Mdl是一个dssm包含未知参数的模型。详细总结Mdl打印到命令窗口。

传递数据和Mdl估计估计参数。在估计过程中,初始状态方差为,估计实现了扩散卡尔曼滤波。

创建一个弥漫状态空间模型,其中:

  • 国家 x 1 t 是一个静止的AR(2)模型 ϕ 1 0 6 ϕ 2 0 2 ,和常数0.5。状态扰动是一个均值为零的高斯随机变量,标准差为0.3。

  • 国家 x 4 t 是随机游走。状态扰动是一个均值为零的高斯随机变量,标准差为0.05。

  • 观察 y 1 t 为AR(2)状态下当前值与之前值的差值,加上均值为0,标准差为0.1的高斯观测创新。

  • 观察 y 2 t 为随机游走状态加上均值为0的高斯观测创新,标准差为0.02。

从象征意义上讲,状态空间模型是

x 1 t x 2 t x 3. t x 4 t 0 6 0 2 0 5 0 1 0 0 0 0 0 1 0 0 0 0 1 x 1 t - 1 x 2 t - 1 x 3. t - 1 x 4 t - 1 + 0 3. 0 0 0 0 0 0 0 0 5 u 1 t u 4 t

y 1 t y 2 t 1 - 1 0 0 0 0 0 1 x 1 t x 2 t x 3. t x 4 t + 0 1 0 0 0 0 2 ε 1 t ε 2 t

该模型有四个状态: x 1 t 为AR(2)过程, x 2 t 代表 x 1 t - 1 x 3. t AR(2)模型常数, x 4 t 就是随机游走。

定义状态转换矩阵。

A = [0.6 0.2 0.5 0;1 0 0 0;0 0 10 0;0 0 0 1];

定义状态扰动加载矩阵。

B = [0.3 0;0 0;0 0;0 0.05);

定义测量灵敏度矩阵。

C = [1 -1 0 0;0 0 0 1];

定义观察-创新矩阵。

D = [0.1;0.02);

使用dssm创建状态空间模型。确定初始状态分布的类型(StateType),并注意以下事项:

  • x 1 t 为平稳AR(2)过程。

  • x 2 t 也是一个平稳的AR(2)过程。

  • x 3. t 对所有周期都是常数1。

  • x 4 t 是不稳定的。

设置初始状态均值(Mean0)到0。常数态的初始态均值必须是1。

Mean0 = [0;0;1;0);StateType = [0;0;1;2);Mdl = dssm(A,B,C,D,“Mean0”Mean0,“StateType”StateType)
Mdl =状态空间模型类型:dssm状态向量长度:4观测向量长度:2状态扰动向量长度:2观测创新向量长度:1模型支持的样本量:无限状态变量:x1, x2,…金宝app状态扰动:u1, u2,…观测序列:y1, y2,…观测创新:e1, e2,…状态方程:x1 (t) = (0.60) x1 (t - 1) + (0.20) x2 (t - 1) + (0.50) x3 (t - 1) + (0.30) u1 (t) x2 (t) = x1 (t - 1) x3 (t) = x3 (t - 1) x4 (t) = x4 (t - 1) + (0.05) u2 (t)观测方程:日元(t) = x1 (t) - x2 (t) + (0.10) e1 (t) y2 (t) = x4 (t) + (0.02) e1 (t)初始状态分布:初始状态意味着(x1, x2) x3 x4 0 0 1 0 x1初始状态协方差矩阵x3 x4 x1 0.16 - 0.21 0.21 - 0.16 0 0 x2 0 0 x3 0 0 0 0 x4 0 0 0 x1 Inf状态类型x3 x4固定静止的不断扩散

Mdl是一个dssm模型对象。dssm设置初始状态:

  • 平稳态的协方差矩阵到AR(2)模型的渐近协方差

  • 常数态的方差0

  • 扩散态的方差

的属性Mdl使用点表示法。例如,显示初始状态协方差矩阵。

Mdl。Cov0
ans =4×40.2143 0.1607 0 0 0.1607 0.2143 0 0 0 0 0 0 0 0 Inf

将平稳状态的初始状态均值重置为它们的渐近值。

mml . mean0 (1:2) = 0.5/(1-0.2-0.6);Mdl。Mean0
ans =4×12.5000 2.5000 1.0000 0

使用参数映射函数创建一个时不变状态空间模型,其中状态模型为AR(1)模型。状态的观察带有偏差,但没有随机误差。设置初始状态的均值和方差,并指定状态是平稳的。

写一个函数来指定参数的输入方式参数个数映射到状态空间模型矩阵、初始状态值和状态类型。从象征意义上讲,模型是

版权所有The MathWorks, Inc.函数[A,B,C,D,Mean0,Cov0,StateType] = timeInvariantParamMap(params)时不变状态空间模型参数映射函数示例。这函数将向量参数映射到状态空间矩阵(A、B、C和% D),初始状态值和初始状态方差(Mean0和% Cov0),以及状态类型(StateType)。状态模型为AR(1)%无观察误差。Varu1 = exp(params(2));正方差约束A = params(1);B =√(varu1);C = params(3);D = [];均值= 0.5;Cov0 = 100;StateType = 0;结束

将此代码保存为一个名为timeInvariantParamMap.m到MATLAB®路径上的文件夹。

通过传递函数来创建状态空间模型timeInvariantParamMap的函数句柄舰导弹

Mdl = ssm(@timeInvariantParamMap);

舰导弹隐式地创建状态空间模型。通常,您不能验证隐式定义的状态空间模型。

默认情况下,舰导弹赋值一个大标量(1 e7)到标准状态空间模型中所有扩散状态的初始状态方差。使用该规范,软件随后使用标准卡尔曼滤波器估计、过滤和平滑一个标准状态空间模型。标准的状态空间模型处理是对使用无限方差处理扩散状态的分析结果的近似处理。为了实现弥漫卡尔曼滤波器,将标准状态空间模型转换为弥漫状态空间模型。这种转换将无限方差归为所有扩散状态。

显式地创建一个二维标准状态空间模型。指定第一个状态方程为 x 1 t x 1 t - 1 + u 1 t 第二个状态方程是 x 2 t 0 2 x 2 t - 1 + u 2 t .指定第一个观测方程为 y 1 t x 1 t + ε 1 t 第二个观测方程是 y 2 t x 2 t + ε 2 t .指定这些状态分别是弥散态和非平稳态。

A = [10 0;0 0.2);B = [10 0;0 1];C = [1 0;0 1];D = [10 0;0 1];StateType = [2 0];SSMMdl = ssm(A,B,C,D,“StateType”StateType)
SSMMdl =状态空间模型类型:ssm状态向量长度:2观测向量长度:2状态扰动向量长度:2观测创新向量长度:2模型支持的样本量:无限状态变量:x1, x2,…金宝app状态扰动:u1, u2,…观测序列:y1, y2,…观测创新:e1, e2,…状态方程:x1(t) = x1(t-1) + u1(t) x2(t) = (0.20)x2(t-1) + u2(t)观测方程:y1(t) = x1(t) + e1(t) y2(t) = x2(t) + e2(t)初始状态分布:初始状态表示x1 x2 00初始状态协方差矩阵x1 x2 x1 1.00e+07 0 x2 0 1.04状态类型x1 x2弥漫平稳

SSMMdl是一个舰导弹模型对象。在某些情况下,舰导弹可以检测状态类型,但是最好的做法是指定状态是稳定的、扩散的还是常量1.由于模型不包含任何未知参数,舰导弹推断初始状态分布。

转换SSMMdl到扩散状态空间模型。

Mdl = dssm(SSMMdl)
Mdl =状态空间模型类型:dssm状态向量长度:2观测向量长度:2状态扰动向量长度:2观测创新向量长度:2模型支持的样本量:无限状态变量:x1, x2,…金宝app状态扰动:u1, u2,…观测序列:y1, y2,…观测创新:e1, e2,…状态方程:x1(t) = x1(t-1) + u1(t) x2(t) = (0.20)x2(t-1) + u2(t)观测方程:y1(t) = x1(t) + e1(t) y2(t) = x2(t) + e2(t)初始状态分布:初始状态表示x1 x2 0 0初始状态协方差矩阵x1 x2 x1 Inf 0 x2 0 1.04状态类型x1 x2弥漫平稳

Mdl是一个dssm模型对象。的结构Mdl而且SSMMdl是相等的,除了初始状态的方差Mdl而不是1 e7

要查看两个模型之间的差异,请从类似的状态空间模型中模拟10个周期的数据SSMMdl.设初始状态协方差矩阵为 2

SimMdl = SSMMdl;SimMdl。Cov0=eye(2); T = 10; rng(1);%用于再现性y = SimMdl,T);

获取经过过滤和平滑的状态Mdl而且DSSMMdl利用模拟数据。

fSSMMdl = filter(SSMMdl,y);fMdl = filter(Mdl,y);sSSMMdl = smooth(SSMMdl,y);sMdl = smooth(Mdl,y);

绘制经过过滤和平滑的状态。

图;次要情节(2,1,1)阴谋(1:T、y (: 1),“o”1: T, fSSMMdl (: 1),“- d”1: T, fMdl (: 1),“- *”);标题(“x_{1,t}的过滤状态”)传说(模拟数据的“过滤状态—SSMMdl”“过滤状态—Mdl”);次要情节(2,1,2)阴谋(1:T、y (: 1),“o”1: T, sSSMMdl (: 1),“- d”1: T, sMdl (: 1),“- *”);标题(“x_{1,t}的平滑状态”)传说(模拟数据的“平滑状态- SSMMdl”“平滑状态—Mdl”);

图;次要情节(2,1,1)阴谋(1:T、y (:, 2),“o”1: T, fSSMMdl (:, 2),“- d”1: T, fMdl (:, 2),“- *”);标题(“x_{2,t}的过滤状态”)传说(模拟数据的“过滤状态—SSMMdl”“过滤状态—Mdl”);次要情节(2,1,2)阴谋(1:T、y (:, 2),“o”1: T, sSSMMdl (:, 2),“- d”1: T, sMdl (:, 2),“- *”);标题(“x_{2,t}的平滑状态”)传说(模拟数据的“平滑状态- SSMMdl”“平滑状态—Mdl”);

除了随机游走中明显的瞬态行为外,标准状态空间模型和扩散状态空间模型之间的滤波和平滑状态空间模型几乎等价。出现这种细微差别是因为过滤器而且光滑的当他们实现弥漫卡尔曼滤波器时,将弥漫状态空间模型中的所有弥漫状态估计设置为0。一旦平滑状态的协方差矩阵达到满秩,过滤器而且光滑的切换到使用标准卡尔曼滤波器。在这种情况下,切换时间发生在第一个周期之后。

更多关于

全部展开

提示

  • 指定ParamMap在更一般或更复杂的环境中,例如:

    • 初始状态值是参数。

    • 在时变模型中,您希望对多个时间段使用相同的参数。

    • 您希望施加参数约束。

  • 您可以创建dssm不包含任何扩散状态的模型对象。然而,后续的计算,例如滤波和参数估计,效率可能很低。如果所有的状态都是平稳分布,或者都是常数1,那么创建一个舰导弹而是建立对象模型。

算法

  • 的默认值Mean0而且Cov0

    • 如果显式指定状态空间模型(即提供系数矩阵)一个BC,可选D),那么:

      • 对于平稳状态,软件使用平稳分布生成初值。如果你提供系数矩阵中的所有值(也就是说,你的模型没有未知参数),那么dssm生成初始值。否则,软件在估计过程中生成初始值。

      • 对于常数为1的状态,dssmMean0到1和Cov00

      • 对于弥漫状态,软件设置Mean0到0和Cov0默认情况下。

    • 如果隐式指定状态空间模型(即为系数-矩阵-映射函数提供参数向量)ParamMap),然后由软件在估计过程中生成初始值。

  • 对于整个样本中不等于1的静态状态,软件不能为简并初始状态分布赋值。因此,将静态状态设置为2使用名称-值对参数StateType.随后,该软件将静态状态视为非平稳状态,并将静态状态分配为扩散初始分布。

  • 最好的做法是设置StateType对于每个状态。默认情况下,由软件生成StateType,但这种行为可能并不准确。例如,软件无法区分恒定状态和静态状态。

  • 软件无法推断StateType从数据中因为理论上数据来自观测方程。状态方程的实现是不可观察的。

  • dssm模型不存储观察到的响应或预测数据。在必要时使用适当的输入或名值对参数提供数据。

  • 假设你想用一个参数到矩阵的映射函数创建一个弥漫的状态空间模型:

    [A,B,C,D,Mean0,Cov0,StateType,DeflateY] = paramMap(params,Y,Z)
    使用匿名函数指定模型
    Mdl = dssm(@(参数)paramMap(参数,Y,Z))
    观察到的反应Y预测数据Z不是匿名函数中的输入参数。如果Y而且Z在创建之前存在于MATLAB工作区中Mdl,然后软件建立与它们的链接。否则,如果你通过了Mdl估计,该软件抛出一个错误。

    由匿名函数建立的数据链接覆盖的所有其他相应的输入参数值估计.这种区别在进行滚动窗口分析时尤其重要。详细信息请参见时间序列模型的滚动窗口分析

选择

创建一个舰导弹模型对象而不是dssm当:

  • 该模型不包含任何扩散状态。

  • 扩散态之间或与其他态相关。

  • 你想要实现标准卡尔曼滤波器。

参考文献

[1]德宾J.和S. J.库普曼。状态空间方法的时间序列分析.牛津:牛津大学出版社,2012年。

在R2015b中引入