主要内容

完善

类:dssm

细化初始参数以帮助扩散状态空间模型估计

描述

例子

完善(MdlYparams0找到拟合状态空间模型时要使用的一组初始参数值Mdl到响应数据Y,使用初始参数值的粗糙集params0.该软件使用几个例程,并为每个例程显示结果的对数似然和初始参数值。

例子

完善(MdlYparams0名称,值显示带有一个或多个指定的附加选项的例程的结果名称,值对参数。例如,您可以包含由预测器和系数的初始值组成的线性回归组件。

例子

输出=完善(___返回一个结构数组(输出),包含一个细化的、初始参数值的向量,对应初始参数值的对数似然,以及产生这些值的计算方法。您可以使用前面语法中的任何输入参数。

输入参数

全部展开

包含未知参数的扩散状态空间模型,指定为dssm返回的模型对象dssm

  • 对于显式创建的状态空间模型,软件估计所有的状态空间模型系数矩阵中的值(Mdl。一个Mdl。BMdl.C,Mdl。D)和初始状态均值和协方差矩阵(Mdl。Mean0而且Mdl.Cov0).有关显式和隐式模型创建的详细信息,请参见dssm

  • 对于隐式创建的状态空间模型,您可以使用参数到矩阵映射函数指定模型结构和未知参数的位置。隐式地创建一个状态空间模型来估计复杂模型、施加参数约束并估计初始状态。参数映射函数还可以容纳额外的输出参数。

请注意

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

观察到的响应数据Mdl适合,指定为数值矩阵或数值向量的单元格向量。

  • 如果Mdl那么对于观测方程是时不变的吗Y是一个T——- - - - - -n矩阵。矩阵的每一行对应一个周期,每一列对应模型中的一个特定观测值。因此,T样本量和n是每个周期的观测数。最后一行Y包含最新的观察结果。

  • 如果Mdl时间是否随观测方程变化Y是一个T-by-1单元格向量。Y {t}包含一个nt-周期观测值的维向量t,在那里t= 1,…,T.中的系数矩阵的相应维数Mdl.C {t}而且Mdl。D {t}必须与矩阵一致吗Y {t}所有时期都适用。最后一个细胞Y包含最新的观察结果。

假设你创建了Mdl通过隐式地指定一个参数到矩阵的映射函数,并且该函数具有观察到的响应或预测器的输入参数。然后,映射函数在MATLAB中建立观测响应和预测器数据的链接®的值重写Y

元素表示缺失的观察结果。有关卡尔曼滤波器如何容纳缺失观测的详细信息,请参见算法

数据类型:|细胞

数值最大似然估计的未知参数的初始值,指定为数值向量。

的要素params0对应于状态空间模型矩阵中的未知参数一个BC,D,和可选的初始状态均值Mean0协方差矩阵Cov0

  • 如果你创建了Mdl显式地(即通过指定矩阵而不使用参数到矩阵的映射函数),然后软件映射的元素参数个数S在状态空间模型矩阵和初始状态值。该软件搜索S列,按照顺序一个BCDMean0Cov0

  • 如果你创建了Mdl隐式地(即通过使用参数到矩阵映射函数指定矩阵),然后在参数到矩阵映射函数中为状态空间模型矩阵、初始状态值和状态类型设置初始参数值。

数据类型:

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

回归系数的初始值,由逗号分隔的对组成“Beta0”和一个d——- - - - - -n数字矩阵。d是预测变量的数量(见预测),n是观察到的响应序列的数量(见Y).

默认情况下,Beta0普通的最小二乘估计是Y预测

数据类型:

观测方程中回归分量的预测器数据,指定为由逗号分隔的对组成“预测”和一个T——- - - - - -d数字矩阵。T是例数和d是预测变量的数量。行t对应于周期内观测到的预测因子tZt)的扩展观测方程

y t Z t β C x t + D u t

换句话说,预测器系列可以作为观察平减指数。β是一个d——- - - - - -n软件用所有其他参数估计回归系数的时不变矩阵。

  • n每个周期的观测值,软件将所有预测器序列回归到每个观测值上。

  • 如果你指定预测,然后Mdl必须是时不变的。否则,软件将返回一个错误。

  • 默认情况下,软件从状态空间模型中排除一个回归组件。

数据类型:

输出参数

全部展开

关于初始参数值的信息,作为1 × 5结构数组返回。该软件使用五种算法来寻找初始参数值,并且每个元素的输出对应于一个算法。

字段的描述输出

描述
描述

细化算法。

的每个元素输出对应于以下算法之一:

“松散的内部点”
“Nelder-Mead算法”
“拟牛顿”
“起始值扰动”
“起始价值缩水”

Loglikelihood 对应初始参数值的对数似然。
参数 细化初始参数值的向量。参数的顺序与参数的顺序相同params0.如果你把这些初始值传递给估计,则估计结果可以得到改善。

例子

全部展开

假设一个潜在的过程是一个随机游走。因此,状态方程为

x t x t - 1 + u t

在哪里 u t 为均值为0,标准差为1的高斯分布。

生成100个观察值的随机序列 x t ,假设该系列从1.5开始。

T = 100;rng (1);%用于再现性u = randn(T,1);X = cumsum([1.5;u]);X = X(2:结束);

进一步假设潜在过程受附加测量误差的影响。因此,观测方程为

y t x t + ε t

在哪里 ε t 为均值为0,标准差为1的高斯分布。

使用随机潜伏状态过程(x)和观测方程来生成观测值。

y = x + randn(T,1);

潜伏过程和观测方程共同构成了一个状态空间模型。假设状态是一个平稳的AR(1)过程。那么要估计的状态空间模型为

x t ϕ x t - 1 + σ 1 u t y t x t + σ 2 ε t

指定系数矩阵。使用未知参数的值。

A = NaN;B = NaN;C = 1;D = NaN;

通过传递系数矩阵来创建扩散状态空间模型dssm并指定状态类型为弥漫。

StateType = 2;Mdl = dssm(A,B,C,D,“StateType”, StateType);

Mdl是一个dssm模型对象。软件将初始状态的均值和方差设置为0和.使用命令窗口中的显示来验证模型是否正确指定。

找到一组用于估计的良好起始参数。

Params0 = [1 1 1];%任意选择的初始值Output = refine(Mdl,y,params0);

输出是一个1乘5的结构数组,包含推荐的初始参数值。

选择最大对数似然对应的初始参数值

logL = cell2mat({Output.LogLikelihood})';[~,maxLogLIndx] = max(logL)
maxLogLIndx = 3
refinedParams0 = Output(maxLogLIndx)。参数
refinedParams0 =1×30.9781 0.8965 0.9336
描述=输出(maxLogLIndx)。描述
描述= '松散的内部点'

产生最高对数似然值的算法是拟牛顿,这是第一个结构体在结构数组中输出

估计Mdl使用refinedParams0,为细化初始参数值的向量。

EstMdl =估计(Mdl,y,refinedParams0,“磅”(负无穷,0,0));
方法:最大似然(fmincon)有效样本容量:99对数似然:-179.018 Akaike信息准则:364.036贝叶斯信息准则:371.851 | Coeff Std Err t Stat Prob --------------------------------------------------- c(1) | 0.97805 0.02947 33.18393 0 c(2) | 0.89651 0.18465 4.85529 0.00000 c(3) | 0.93355 0.15187 6.14707 0 | |最终状态Std Dev t Stat Prob x(1) | -3.95108 0.72269 -5.46719 0

AR模型系数在1的两个标准误差范围内,表明状态过程是随机游走。

假设失业率和名义国民生产总值(nGNP)之间的关系是线性的。进一步假设失业率是一个AR(1)系列。在状态空间形式中,该模型是

x t ϕ x t - 1 + σ u t y t - β Z t x t

地点:

  • x t 失业率是什么时候t

  • y t 为观察到的失业率以nGNP的对数( Z t ).

  • u t 状态扰动的高斯级数是否具有均值为0和未知的标准差 σ

加载Nelson-Plosser数据集,其中包含失业率和nGNP系列数据。

负载Data_NelsonPlosser

通过取失业率的第一个差值并将nGNP转换为一系列回报来预处理数据。的序列删除对应的观测值失业率系列开始时的数值。

isNaN = any(ismissing(DataTable),2);包含nan的标记句点gnpn = dattable . gnpn (~isNaN);y = dattable . ur (~isNaN);Y = diff(Y);T = size(y,1);Z = [ones(T,1) price2ret(gnpn)];

本例继续使用没有的系列值。然而,使用卡尔曼滤波器框架,该软件可以容纳包含缺失值的系列。

指定系数矩阵。

A = NaN;B = NaN;C = 1;

使用。创建状态空间模型dssm通过提供系数矩阵并指定状态值来自扩散分布。弥漫规范表明完全不知道初始分布的矩。

StateType = 2;Mdl = dssm(A,B,C,“StateType”, StateType);

Mdl是一个dssm模型对象。

找到一组用于估计的良好起始参数。

Params0 = [150 1000];%任意选择的初始值贝塔a0 = [1 -100];输出= refine(Mdl,y,params0,“预测”, Z,“Beta0”, Beta0);

输出是一个1乘5的结构数组,包含推荐的初始参数值。

选择最大对数似然对应的初始参数值。

logL = cell2mat({Output.LogLikelihood})';[~,maxLogLIndx] = max(logL)
maxLogLIndx = 5
refinedParams0 = Output(maxLogLIndx)。参数
refinedParams0 =1×40.2070 -1.3229 1.3610 -24.8848
描述=输出(maxLogLIndx)。描述
描述= '起始值收缩'

产生最高对数似然值的算法是Nelder-Mead单纯形,它是结构数组中的第二个结构体输出

估计Mdl使用经过细化的初始参数值refinedParams0

EstMdl =估计(Mdl,y,refinedParams0(1:(end - 2)),“预测”, Z,...“Beta0”,refinedParams0((end - 1):end));
方法:最大似然(fminunc)有效样本量:60对数似然:-101.924 Akaike info criterion: 211.849 Bayesian info criterion: 220.292 | Coeff Std Err t Stat Prob ---------------------------------------------------------- c(1) | 0.20700 0.12330 1.67891 0.09317 c(2) | -1.32287 0.08415 -15.71964 0 y <- z(1) | 1.36101 0.23736 5.73388 0 y <- z(2) | -24.88484 1.78021 -13.97861 0 | |最终状态Std Dev t Stat Prob x(1) | 1.21611 0 Inf 0

提示

  • 状态空间模型的似然曲面可能是复杂的,例如,它们可能包含多个局部极大值。如果估计不能收敛,或者收敛到一个不满意的解,那么完善能否找到一组更好的初始参数值来传递估计

  • 返回的经过细化的初始参数值完善能出现彼此相似的和params0.选择一组具有经济意义并对应于相对较大的对数似然值的收益率估计值。

  • 如果细化尝试失败,则软件显示错误并将相应的loglikelihood设置为.它还将其初始参数值设置为[]

算法

卡尔曼滤波器通过不更新对应于缺失观测值的过滤状态估计来容纳缺失数据。换句话说,假设您的数据在周期有一个缺失的观测值t.然后,对时期进行状态预测t,在前面的基础上t- 1个观测值,相当于对周期的过滤状态t

版本历史

在R2015b中引入