主要内容

bssm

建立状态空间模型贝叶斯

自从R2022a

描述

bssm创建一个bssm对象,代表一个贝叶斯线性状态空间模型,从指定parameter-to-matrix映射函数,定义了结构、状态空间模型和测井参数的先验分布函数。可以在状态空间模型定常时变状态或观察变量,xtyt分别可以多元系列。国家干扰和高斯或学生的观察创新t随机变量。

一般来说,bssm对象指定状态空间模型的先验分布和特征。即模型对象是一个模板供进一步使用。具体地说,将数据合并到后验分布的模型分析,通过适当的模型对象和数据目标函数

或者,舰导弹对象提供了一个替代的贝叶斯视图状态空间模型。除了广泛的操作状态空间模型舰导弹对象提供,您可以使用ssm2bssm切换到一个标准的线性状态空间模型的贝叶斯视图通过将指定的舰导弹对象一个bssm对象相等的。因为舰导弹函数允许您创建一个标准的线性状态空间模型通过显式地指定系数矩阵,standard-to-Bayesian模型转换可以方便简单的状态空间模型。

创建

描述

有几种方法可以创建一个bssm对象代表了一个贝叶斯:状态空间模型

  • 创建之前模型——直接创建一个bssm对象,代表之前的模型中,通过使用bssm函数和指定parameter-to-matrix映射函数和日志参数的先验分布函数。这种方法适应状态空间模型简单通过复杂的结构。更多细节,请参阅下面的语法。

  • 标准模型转换为贝叶斯先验模型——把一个指定的标准,线性状态空间模型,一个舰导弹对象,bssm通过模型对象ssm2bssm函数。转换后的贝叶斯模型状态空间结构具有相同的标准模型。使用这种方法对于简单的状态空间模型,当你喜欢指定明确的系数矩阵。你可以选择指定的日志前密度参数。有关详细信息,请参见ssm2bssm舰导弹

  • 后估计模型——通过一个bssm对象代表之前的模型中,观察到的响应数据,初始参数值估计函数来获得一个bssm对象代表一个后模型。更多细节,请参阅估计

例子

PriorMdl= bssm (ParamMap,ParamDistribution)创建状态空间模型贝叶斯对象PriorMdl之前,模型和高斯状态扰动和观察创新,使用parameter-to-matrix映射函数ParamMap,你写日志先验分布的参数。

ParamMap函数映射的集合线性状态空间模型参数Θ定常或时变系数矩阵一个,B,C,D。除了系数矩阵,ParamMap可以映射任何以下数量:

  • 初始状态均值和方差Mean0Cov0

  • 状态类型StateType

  • 泄气的观测数据DeflatedData以适应观测方程中回归组件

ParamDistribution密度函数接受Θ并返回相应的日志。

PriorMdl是一个模板,用于指定Θ联合先验分布和状态空间模型的结构。

例子

PriorMdl= bssm (ParamMap,ParamDistribution,名称=值)属性代表国家分布的扰动和观察创新使用名称-值参数。例如,bssm (ParamMap ParamDistribution ObservationDistribution =结构(“名称”,“t”,“景深”,6))指定t分布在6个自由度为所有观察创新变量ut在贝叶斯状态空间模型。

输入参数

全部展开

Parameter-to-matrix映射函数,确定数据的可能性,指定为一个函数处理形式@fcnName,在那里fcnName是函数名。ParamMap设置ParamMap财产。对象的功能bssm计算数据的可能性标准卡尔曼滤波器另外,概率条件的参数。

假设paramMapMATLAB的名称吗®指定参数Θ状态空间模型如何映射到函数的系数矩阵,可选地,其他特征状态空间模型。然后,paramMap一定是这种形式。

函数[A, B, C, D, Mean0 Cov0, StateType, DeflateY] =paramMap(θotherInputs…)…结束
地点:

指定参数后验分布中包含通过设置他们的价值一个条目的第一个输入参数θ并设置项的系数值。例如,下面的行定义一维定常状态空间模型

x t = 一个 x t 1 + b u t y t = x t + d ε t

一个=θ(1);B =θ(2);C = 1;D =θ(3);

如果paramMap只需要输入参数向量参数,您可以创建的bssm对象通过调用:

Mdl = bssm (@paramMap,……)

一般来说,创建的bssm对象通过调用:

Mdl = bssm (@ (θ)paramMap(θotherInputArgs…)…)

例子:bssm (@ (params)paramFun(@ParamDistributionθ,y, z))指定parameter-to-matrix映射函数paramFun接受状态空间模型的参数θ,观察反应y和预测数据z

提示

一个最佳实践是集StateType每个州的ParamMap对下列原因:

  • 默认情况下,软件生成StateType可能不准确,但默认选择。例如,软件无法区分一个常数1状态和一个静态状态。

  • 软件不能推断出StateType理论上的数据,因为数据来自观测方程。状态方程的实现是不可见的。

数据类型:function_handle

日志状态空间模型联合概率密度函数的参数Π(Θ),指定为一个函数处理形式@fcnName,在那里fcnName是函数名。ParamDistribution设置ParamDistribution财产。

假设logPrior是MATLAB函数定义的名字Θ的联合先验分布。然后,logPrior一定是这种形式。

函数logpdf=logPrior(θotherInputs…)…结束
地点:

  • θ是一个numParams1数字Θ向量线性状态空间模型的参数。的元素θ必须对应于这些的ParamMap。函数可以接受其他投入在随后的位置。

  • logpdf是代表日志数字标量Θ联合概率密度的输入θ

如果ParamDistribution只需要输入参数向量参数,您可以创建的bssm对象通过调用:

Mdl = bssm (…, @logPrior)

一般来说,创建的bssm对象通过调用:

Mdl = bssm (…, @ (θ)logPrior(θ,otherInputArgs…))

提示

因为之前界外密度评价是0,界外的日志前密度参数设置参数

数据类型:function_handle

属性

全部展开

Parameter-to-matrix映射函数,存储为一个函数句柄和设定的ParamMap输入参数。ParamMap完全指定状态空间模型的结构。

数据类型:function_handle

参数分布表示,作为处理函数或存储numParams——- - - - - -numDraws数字矩阵。

  • ParamDistribution是一个函数处理日志先验分布的参数ParamDistribution当您创建PriorMdl直接用bssm或者当你转换标准,利用状态空间模型ssm2bssm

  • ParamDistribution是一个numParams——- - - - - -numDraws数字矩阵包含随机从后验分布时的参数估计后使用估计。行对应的元素θ和列对应后续的马尔可夫链蒙特卡罗采样器,比如pmmh取样器[1][2]

数据类型:function_handle

自从R2022b

分布的扰动过程,指定为一个分布在这个表名称或结构数组。bssm作为一个结构数组存储价值。

分布 的名字 变量支持金宝app 结构数组 Hyperparameter估计支持金宝app
标准高斯 “高斯” 多元 结构(“名字”、“高斯”) 不适用
学生的t “t” 多元 结构(“名字”,“t”,“景深”,景深) 是的

  • 适用于所有指定的分布状态扰动过程变量。

  • 对学生的t地理分布:

    • 如果你提供一个结构数组,您必须指定的“名称”“景深”字段。

    • 你可以改变hyperparameter值通过使用点符号在您创建模型。例如,Mdl.Distribution。景深= 3

    • 为了便于后取样,bssm代表多元学生的t规模分布变量作为inverse-gamma混合物。更多细节,请参阅潜变量的方差t-Distributed错误

更多细节分布hyperparameters,明白了分布Hyperparameters

例子:结构(“名字”,“t”,“景深”,6)指定一个t分布与6自由度状态扰动过程。

自从R2022b

分布的观察创新过程,指定为一个分布在这个表名称或结构数组。bssm作为一个结构数组存储价值。

分布 的名字 变量支持金宝app 结构数组 Hyperparameter估计支持金宝app
标准高斯 “高斯” 多元 结构(“名字”、“高斯”) 不适用
学生的t “t” 多元 结构(“名字”,“t”,“景深”,景深) 是的
有限高斯混合 “混合” 单变量 结构(“名字”、“混合”,“重”,重量“的意思是”,μ“差异”,sigma2) 没有
拉普拉斯 “拉普拉斯” 单变量 结构(“名字”、“拉普拉斯”) 不适用
斜正常 “skewnormal” 单变量 结构(“名字”、“skewnormal”、“三角洲”,δ) 是的

  • 指定的分布适用于所有观察创新过程变量。不过,您可以指定不同的高斯混合政权之间的均值和方差的变量。

  • 对学生的t地理分布:

    • 如果你提供一个结构数组,您必须指定的“名称”“景深”字段。

    • 你可以改变hyperparameter值通过使用点符号在您创建模型。例如,Mdl.Distribution。景深= 3

    • 为了便于后取样,bssm代表多元学生的t规模分布变量作为inverse-gamma混合物。更多细节,请参阅潜变量的方差t-Distributed错误

  • 为有限高斯混合分布,bssm集体制(混合组件)的数量的元素的数量重量。因此,指定重要的情况下,分布有多个政权,至少必须指定重量

更多细节分布hyperparameters,明白了分布Hyperparameters

例子:结构(“名字”,“t”,“景深”,6)指定一个t分布与6自由度状态扰动过程。

例子:结构(“名字”、“混合”,“意思”,[1],“体重”,[0.6 - 0.4])单变量指定一个two-regime高斯混合模型观察创新变量。政权的权重0.60.4。政权意味着向量[1]。默认所有政权是方差1

对象的功能

估计 状态空间模型参数的贝叶斯估计后验分布
模拟 模拟后画的贝叶斯参数状态空间模型
调优 调优贝叶斯后取样器状态空间模型

例子

全部折叠

创建一个贝叶斯状态空间模型包含两个独立的、静止的,自回归的状态。观察结果的确定性和两个州(换句话说,模型不实施观察错误 ε t )。象征性地,方程组

( x t , 1 x t , 2 ] = ( ϕ 1 0 0 ϕ 2 ] ( 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 ]

任意假设的先验分布 ϕ 1 , ϕ 2 , σ 1 2 , σ 2 2 是独立的高斯随机变量平均值为0.5,方差为1。

本地函数部分包含两个功能需要指定状态空间模型贝叶斯。您可以使用函数只在这个脚本。

paramMap函数接受一个向量的状态空间模型的未知参数和返回所有以下数量:

  • 一个= ( ϕ 1 0 0 ϕ 2 ]

  • B= ( σ 1 0 0 σ 2 ]

  • C= ( 1 1 ]

  • D= 0。

  • Mean0Cov0是空数组[],指定默认值。

  • StateType= ( 0 0 ] ,表明每个状态是静止的。

paramDistribution函数接受相同的未知参数向量一样paramMap,但它返回之前的日志密度参数的当前值。指定参数值在参数空间日志前密度

建立状态空间模型的贝叶斯处理直接通过传递函数paramMapparamDistributionbssm

Mdl = bssm (@paramMap @priorDistribution)
Mdl =映射状态空间模型,定义了一个:@paramMap日志参数先验分布密度:@priorDistribution

Mdl是一个bssm模型指定结构和状态空间模型的状态空间模型参数的先验分布。因为Mdl包含未知值,它是一个模板后评估。

本地函数

这个示例使用以下功能。paramMapparameter-to-matrix映射函数和吗priorDistribution日志先验分布的参数。

函数[A, B, C, D, Mean0 Cov0, StateType] = paramMap(θ)=[θ(1)0;0θ(2)];B =[θ(3)0;0θ(4)];C = [1];D = 0;Mean0 = [];% MATLAB使用默认的初始状态的意思Cov0 = [];% MATLAB使用初始状态协方差StateType = [0;0);%两个静止的状态结束函数logprior = priorDistribution(θ)paramconstraints = [(abs(θ(1))> = 1)(abs(θ(2))> = 1)(θ(3)θ(4)< < 0)(0)];如果(和(paramconstraints) logprior =无穷;其他的mu0 = 0.5 *(元素个数(θ),1);sigma0 = 1;p = normpdf(θ,mu0, sigma0);logprior =总和(日志(p));结束结束

创建一个时变,状态空间模型贝叶斯与这些特征:

  • 从时间1到250年,马状态方程包括静止的AR(2)和(1)模型,分别观察模型的加权和两个国家。

  • 从251年到500年时期,状态模型只包括第一AR(2)模型。

  • μ 0 = ( 0 5 0 5 0 0 ] Σ 0 是单位矩阵。

  • 之前的密度是平的。

象征性地,是状态空间模型

( x 1 t x 2 t x 3 t x 4 t ] = ( ϕ 1 ϕ 2 0 0 1 0 0 0 0 0 0 θ 0 0 0 0 ] ( x 1 , t - - - - - - 1 x 2 , t - - - - - - 1 x 3 , t - - - - - - 1 x 4 , t - - - - - - 1 ] + ( σ 1 0 0 0 0 1 0 1 ] ( u 1 t u 2 t ] y t = c 1 ( x 1 t + x 3 t ) + σ 2 ε t f o r t = 1 , , 2 5 0 , ( x 1 t x 2 t ] = ( ϕ 1 ϕ 2 0 0 1 0 0 0 ] ( x 1 , t - - - - - - 1 x 2 , t - - - - - - 1 x 3 , t - - - - - - 1 x 4 , t - - - - - - 1 ] + ( σ 1 0 ] u 1 t y t = c 2 x 1 t + σ 3 ε t f o r t = 2 5 1 , ( x 1 t x 2 t ] = ( ϕ 1 ϕ 2 1 0 ] ( x 1 , t - - - - - - 1 x 2 , t - - - - - - 1 ] + ( σ 1 0 ] u 1 t y t = c 2 x 1 t + σ 3 ε t f o r t = 2 5 2 , , 5 0 0

写一个函数,用于指定参数θ状态空间模型映射到矩阵,初始状态的时刻,和国家类型。将该代码保存为一个文件命名timeVariantParamMap.m在你的MATLAB®路径。另外,开放访问函数的例子。

函数[A, B, C, D, Mean0 Cov0, StateType] = timeVariantParamMapBayes(θ,T)%时变,状态空间模型贝叶斯参数映射函数%的例子。这个函数将向量映射参数状态方程矩阵% (A, B, C, D),初始状态值和初始状态方差% (Mean0和Cov0),状态(StateType)的类型。从阶段1%通过T / 2,模型是一个静止的AR(2)和一个马(1)模型,%和观测模型的加权和两个国家。从%时期通过T, T / 2 + 1状态模型AR(2)模型。的%(见日志先验分布执行参数约束% flatPriorBSSM.m)。T1 =地板(T / 2);T2 = T - T1 - 1;A1 ={[θ(1)θ(2)0 0;1 0 0 0;0 0 0θ(4);0 0 0 0]};B1 ={[θ(3)0;0 0;0 1;0 1]}; C1 = {theta(5)*[1 0 1 0]}; D1 = {theta(6)}; Mean0 = [0.5 0.5 0 0]; Cov0 = eye(4); StateType = [0 0 0 0]; A2 = {[theta(1) theta(2) 0 0; 1 0 0 0]}; B2 = {[theta(3); 0]}; A3 = {[theta(1) theta(2); 1 0]}; B3 = {[theta(3); 0]}; C3 = {theta(7)*[1 0]}; D3 = {theta(8)}; A = [repmat(A1,T1,1); A2; repmat(A3,T2,1)]; B = [repmat(B1,T1,1); B2; repmat(B3,T2,1)]; C = [repmat(C1,T1,1); repmat(C3,T2+1,1)]; D = [repmat(D1,T1,1); repmat(D3,T2+1,1)];结束

编写一个函数,它指定了一个联合平之前和参数约束。将该代码保存为一个文件命名flatPriorBSSM.m在MATLAB的路径上。另外,开放访问函数的例子。

函数logprior = flatPriorBSSM(θ)% flatPriorBSSM计算平之前的日志密度为8%变量θ(见timeVariantParamMapBayes.m)。日志的概率%为参数在参数空间是无穷。%θ(1)和θ(2)滞后1和滞后2项在一个静止的AR (2)%的模型。的特征值需要在AR(1)表示%单位圆。evalsAR2 = eig([θ(1)θ(2);1 0]);evalsOutUC =总和(abs (evalsAR2) > = 1) > 0;%的标准偏差干扰和错误(θ(3),θ(6),%和θ(8))需要积极。nonnegsig1 =θ(3)< = 0;nonnegsig2 =θ(6)< = 0;nonnegsig3 =θ(8)< = 0;paramconstraints = [evalsOutUC nonnegsig1nonnegsig2 nonnegsig3];如果总和(paramconstraints) > 0 logprior =无穷;其他的logprior = 0;%之前密度正比于1的所有值%在参数空间。结束结束

创建一个bssm对象表示状态空间模型贝叶斯的对象。供应parameter-to-matrix映射函数timeVariantParamMapBayes作为单独处理的函数θ通过设置时间序列长度为500。

numObs = 500;Mdl = bssm(@(θ)timeVariantParamMapBayes(θ,numObs) @flatPriorBSSM)
Mdl =映射状态空间模型,定义了一个:@(θ)timeVariantParamMapBayes(θ,numObs)日志参数先验分布密度:@flatPriorBSSM

这个例子显示了如何指定国家干扰学生的状态空间模型的贝叶斯t分布式为了模型过度峰度的状态方程。的例子显示了如何准备自由度参数后验估计和示例完全指定分布。

考虑到贝叶斯在状态空间模型创建定常状态空间模型贝叶斯与已知和未知参数,但假设干扰分布作为一个学生的状态 t 随机变量。

创建的模型通过传递函数处理本地函数表示状态空间模型的结构和模型参数的先验分布 Θ 。指定的分布状态干扰学生的 t

Mdl = bssm (@paramMap @priorDistribution StateDistribution =“t”);Mdl.StateDistribution
ans =结构体字段:名称:“t”景深:南

Mdl是一个bssm模型。房地产Mdl.StateDistribution是一个结构数组指定的分布状态扰动。这个领域景深默认情况下,这意味着 t 分布的自由度 ν u 配置了所有状态空间模型未知参数估计 Θ

您可以指定一个固定值自由度两种方式:

  • 通过设置景深领域积极的标量使用点符号

  • 通过再现bssm模型和提供一个结构数组指定名称和分布的自由度

指定该自由度通过使用这两种方法都是6。

Mdl.StateDistribution。景深= 6
Mdl =映射状态空间模型,定义了一个:@paramMap日志参数先验分布密度:@priorDistribution自由度的t分布状态方程:6
statedist =结构(“名称”,“t”,“景深”6);Mdl2 = bssm (@paramMap、@priorDistribution StateDistribution = statedist)
Mdl2 =映射状态空间模型,定义了一个:@paramMap日志参数先验分布密度:@priorDistribution自由度的t分布状态方程:6

MdlMdl2是相等的。

本地函数

函数[A, B, C, D, Mean0 Cov0, StateType] = paramMap(θ)=[θ(1)0;0θ(2)];B =[θ(3)0;0θ(4)];C = [1];D = 0;Mean0 = [];% MATLAB使用默认的初始状态的意思Cov0 = [];% MATLAB使用初始状态协方差StateType = [0;0);%两个静止的状态结束函数logprior = priorDistribution(θ)paramconstraints = [(abs(θ(1))> = 1)(abs(θ(2))> = 1)(θ(3)θ(4)< < 0)(0)];如果(和(paramconstraints) logprior =无穷;其他的mu0 = 0.5 *(元素个数(θ),1);sigma0 = 1;p = normpdf(θ,mu0, sigma0);logprior =总和(日志(p));结束结束

模型波动聚类,您可以指定 日志 χ 1 2 分布式观察创新通过设置适当的混合权重,政权7-regime高斯混合分布的均值和方差。

考虑到贝叶斯在状态空间模型创建定常状态空间模型贝叶斯与已知和未知参数,但假设observation-innovations过程是分布式的 日志 χ 1 2 随机变量。

创建一个结构数组与以下字段和值。

  • 的名字与价值“混合”

  • 重量与价值(0.0089 0.0541 0.1338 0.2761 0.2923 0.1494 0.0854]

  • 的意思是与价值(-9.3202 -5.3145 -3.4147 -1.7097 - -0.4531 0.3975 - 1.1925)

  • 方差与价值(3.2793 2.4574 1.8874 1.3121 0.8843 0.5898 0.4995)。^ 2

重量= (0.0089 0.0541 0.1338 0.2761 - 0.2923 0.1494 - 0.0854);μ= (-9.3202 -5.3145 -3.4147 -1.7097 - -0.4531 0.3975 - 1.1925);sigma2 = (3.2793 2.4574 1.8874 1.3121 0.8843 0.5898 0.4995)。^ 2;ObsInnovDist =结构(“名称”,“混合”,“重量”、体重、“的意思是”亩,“方差”,sigma2);

创建的模型通过传递函数处理本地函数表示状态空间模型的结构和模型参数的先验分布 Θ 。使用结构数组ObsInnovDist指定的分布观察创新就是定义一个与hyperparameters有限高斯混合 日志 χ 1 2 分布。

Mdl = bssm (@paramMap、@priorDistribution ObservationDistribution = ObsInnovDist);Mdl.ObservationDistribution
ans =结构体字段:名称:“混合物”重量:[0.0089 0.0541 0.1338 0.2761 0.2923 0.1494 0.0854]说:[-9.3202 -5.3145 -3.4147 -1.7097 -0.4531 0.3975 1.1925]方差:[10.7538 6.0388 3.5623 1.7216 0.7820 0.3479 - 0.2495)

Mdl是一个bssm模型。房地产Mdl.ObservationDistribution是一个结构数组指定的分布observation-innovations过程。所有分布hyperparameters完全指定。

情节的分布观察创新。比较的高斯混合表示 日志 χ 1 2 而真正的 日志 χ 1 2 分布。

r =元素个数(重量);LogChi2GMMdl = gmdistribution(μ”,重塑(sigma2 1 1, r),重量);gmPDF = @ (x) arrayfun (@ (x0) pdf (x0 LogChi2GMMdl), x);logchi2PDF = @ (x)((1 /√(2 *π))* exp ((x-exp (x)) / 2));图fplot (gmPDF,[5] -10年)fplot (logchi2PDF”——r”)标题(“日志卡方分布:高斯混合与真正的“)传说(“高斯混合”,“真正的”位置=“最佳”)

图包含一个坐标轴对象。坐标轴对象与标题日志卡方分布:高斯混合与真正包含2 functionline类型的对象。这些对象代表高斯混合,真的。

分布几乎相同的出现。

本地函数

函数[A, B, C, D, Mean0 Cov0, StateType] = paramMap(θ)=[θ(1)0;0θ(2)];B =[θ(3)0;0θ(4)];C = [1];D = 0;Mean0 = [];% MATLAB使用默认的初始状态的意思Cov0 = [];% MATLAB使用初始状态协方差StateType = [0;0);%两个静止的状态结束函数logprior = priorDistribution(θ)paramconstraints = [(abs(θ(1))> = 1)(abs(θ(2))> = 1)(θ(3)θ(4)< < 0)(0)];如果(和(paramconstraints) logprior =无穷;其他的mu0 = 0.5 *(元素个数(θ),1);sigma0 = 1;p = normpdf(θ,mu0, sigma0);logprior =总和(日志(p));结束结束

考虑回归美国的失业率上和实际国民生产总值(RGNP)率,假设产生的创新是一个ARMA(1,1)过程。状态方程形式的关系

( x 1 , t x 2 , t ] = ( ϕ θ 0 0 ] ( x 1 , t - - - - - - 1 x 2 , t - - - - - - 1 ] + ( σ 1 ] u t y t - - - - - - β Z t = x 1 , t ,

地点:

  • x 1 , t 是ARMA过程。

  • x 2 , t 马是一个虚拟的状态(1)的效果。

  • y t 是观察到的失业率泄气的一个常数和RGNP率( Z t )。

  • u t 是一个iid高斯系列代表0和标准偏差1。

加载Nelson-Plosser数据集,其中包含一个表数据表失业率和RGNP系列、等系列。

负载Data_NelsonPlosser

创建一个变量数据表代表原始RGNP系列的回报。因为price-to-returns转换减少样本量,前置液系列

数据表。RGNPRate =[南;price2ret (DataTable.GNPR)];T =身高(数据表);

创建变量的回归。代表失业率作为观察系列和常数和RGNP系列通货紧缩的数据 Z t

Z =[的(T, 1) DataTable.RGNPRate];y = DataTable.UR;

写一个函数,用于指定参数θ状态空间模型映射到矩阵,将默认的初始状态的时刻,指定状态类型和指定了回归。将该代码保存为一个文件命名armaDeflateYBayes.m在你的MATLAB®路径。另外,打开这个例子来访问功能。

函数[A, B, C, D, Mean0 Cov0, StateType, DeflatedY] = armaDeflateYBayes(θ,y, Z)%定常,状态空间模型贝叶斯参数映射函数%的例子。这个函数将向量映射参数状态方程%矩阵(A, B, C, D),默认值和初始状态%的默认初始状态方差(Mean0和Cov0),状态的类型% (StateType),泄气的观察(DeflatedY)。之前的日志%分布执行参数约束(见flatPriorDeflateY.m)。(θ=θ(1)(2);0 0];B = [1;1);C =[θ(3)0];D = 0;Mean0 = [];Cov0 = [];StateType = [0 0];DeflatedY = y - Z *[θ(4); theta(5)];结束

编写一个函数,它指定了一个联合平之前和参数约束。将该代码保存为一个文件命名flatPriorDeflateY.m在MATLAB的路径上。另外,打开这个例子来访问功能。

% 2022年版权MathWorks公司。函数logprior = flatPriorDeflateY(θ)% flatPriorDeflateY计算平之前的日志密度五个%变量θ(见armaDeflateYBayes.m)。日志的概率%为参数在参数空间是无穷。θ%θ(1)和(2)是基于“增大化现实”技术和马在静止的条件% ARMA(1,1)模型。基于“增大化现实”技术的术语必须在单位圆内。AROutUC = abs(θ(1))> = 1;%的标准差(θ(3))必须积极创新。nonnegsig1 =θ(3)< = 0;paramconstraints = [AROutUC nonnegsig1];如果总和(paramconstraints) > 0 logprior =无穷;其他的logprior = 0;%之前密度正比于1的所有值%在参数空间。结束结束

创建一个bssm对象代表贝叶斯状态空间模型。指定parameter-to-matrix映射函数的单独处理函数的参数θ

Mdl = bssm(@(θ)armaDeflateYBayes(θ,y, Z), @flatPriorDeflateY)
Mdl =映射状态空间模型,定义了一个:@(θ)armaDeflateYBayes(θ,y, Z)日志参数先验分布密度:@flatPriorDeflateY

更多关于

全部展开

提示

  • 加载数据到MATLAB工作区创建模型。

  • 创建parameter-to-matrix映射函数和日志先验分布函数作为自己的文件。

  • 指定一个日志χ21分布的观察创新过程εt,设置ObservationDistribution结构数组结构(“重量”,重量“的意思是”,μ“差异”,sigma2),地点:

    • 重量(0.0089 0.0541 0.1338 0.2761 - 0.2923 0.1494 - 0.0854)

    • μ(-9.3202 -5.3145 -3.4147 -1.7097 - -0.4531 0.3975 - 1.1925)

    • sigma2(3.2793 2.4574 1.8874 1.3121 0.8843 0.5898 0.4995)。^ 2

算法

全部展开

引用

[1]黑斯廷斯,威尔弗雷德·K。“使用马尔可夫链蒙特卡罗抽样方法及其应用”。生物统计学57(1970年4月):97 - 109。https://doi.org/10.1093/biomet/57.1.97

[2]的大都市,尼古拉斯Rosenbluth,阿里安娜。W。,Rosenbluth, Marshall. N., Teller, Augusta. H., and Teller, Edward. "Equation of State Calculations by Fast Computing Machines."《物理化学》杂志上(1953年6月21日):1087 - 92。https://doi.org/10.1063/1.1699114

版本历史

介绍了R2022a

全部展开