模拟
类:舰导弹
状态空间模型的蒙特卡罗模拟
描述
输入参数
numObs
- - - - - -要模拟的每个路径的周期数
正整数
生成变量的每个路径的周期数,指定为正整数。
如果Mdl
是一个时变模型,则系数矩阵对应的单元向量长度必须至少为numObs
.
如果numObs
是否小于周期数Mdl
能不能支万博1manbetx持,那么软件只使用矩阵中的第一个numObs
对应于系数矩阵的单元向量的单元。
数据类型:双
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
NumPaths
- - - - - -生成变量的样例路径的数量
1
(默认)|正整数
生成变量的样例路径数,由逗号分隔的对组成“NumPaths”
一个正整数。
例子:“NumPaths”,1000年
数据类型:双
参数个数
- - - - - -未知参数的值
数值向量
状态空间模型中未知参数的值,指定为逗号分隔的对,由“参数”
和一个数值向量。
的要素参数个数
对应于状态空间模型矩阵中的未知参数一个
,B
,C
,D
,和可选的初始状态均值Mean0
协方差矩阵Cov0
.
如果你创建了
Mdl
显式地(即通过指定矩阵而不使用参数到矩阵的映射函数),然后软件映射的元素参数个数
来南
S在状态空间模型矩阵和初始状态值。该软件搜索南
S列按顺序排列一个
,B
,C
,D
,Mean0
,Cov0
.如果你创建了
Mdl
隐式地(即通过使用参数到矩阵映射函数指定矩阵),您必须为状态空间模型矩阵、初始状态值和参数到矩阵映射函数中的状态类型设置初始参数值。
如果Mdl
包含未知参数,则必须指定它们的值。否则,软件将忽略的值参数个数
.
数据类型:双
输出参数
X
-模拟状态
数值矩阵|数值向量的单元格矩阵
模拟的状态,返回为数值矩阵或单元格矩阵的向量。
如果Mdl
那么对于状态来说是定常模型吗X
是一个numObs
——- - - - - -米——- - - - - -numPaths
数组中。也就是说,每行对应一个周期,每列对应模型中的一个状态,每页对应一个示例路径。最后一行对应最新的模拟状态。
如果Mdl
是一个随状态变化的模型吗X
是一个numObs
——- - - - - -numPaths
向量的单元矩阵。X {t j}
包含长度向量米t周期的模拟状态t样本路径的j.最后一行X
包含最新的模拟状态集。
U
-模拟状态扰动
矩阵|单元矩阵的数值向量
模拟的状态扰动,返回为向量的矩阵或单元矩阵。
如果Mdl
那么对于状态扰动,模型是时不变的吗U
是一个numObs
——- - - - - -h——- - - - - -numPaths
数组中。也就是说,每行对应一个周期,每列对应模型中的一个状态扰动,每页对应一个样本路径。最后一行对应最新的模拟状态扰动。
如果Mdl
是一个时变模型,关于状态扰动,那么U
是一个numObs
——- - - - - -numPaths
向量的单元矩阵。U {t j}
包含长度向量ht周期内的模拟状态扰动t样本路径的j.最后一行U
包含最新的模拟状态干扰集。
数据类型:细胞
|双
E
-模拟观测创新
矩阵|单元矩阵的数值向量
模拟观测创新,返回为数值向量的矩阵或单元矩阵。
如果Mdl
那么,对于观测创新来说,模型是定常的吗E
是一个numObs
——- - - - - -h——- - - - - -numPaths
数组中。也就是说,每行对应一个周期,每列对应模型中的一个观测创新,每页对应一个样本路径。最后一行对应的是最新的模拟观测创新。
如果Mdl
是一个时变模型相对于观测创新,那么E
是一个numObs
——- - - - - -numPaths
向量的单元矩阵。E {t j}
包含长度向量ht周期的模拟观测创新t样本路径的j.最后一行E
包含最新的模拟观测集。
数据类型:细胞
|双
例子
时不变状态-空间模型的状态和观测模拟
假设一个潜在过程是一个AR(1)模型。状态方程是
在哪里 为均值为0,标准差为1的高斯分布。
生成100个观察值的随机序列 ,假设该系列从1.5开始。
T = 100;ARMdl = arima(基于“增大化现实”技术的, 0.5,“不变”0,“方差”1);X0 = 1.5;rng (1);%用于再现性x =模拟(ARMdl,T,“Y0”, x0);
进一步假设潜在过程受附加测量误差的影响。观测方程为
在哪里 为均值为0,标准差为0.75的高斯分布。潜伏过程和观测方程共同构成了一个状态空间模型。
使用随机潜伏状态过程(x
)和观测方程来生成观测值。
y = x + 0.75*randn(T,1);
指定四个系数矩阵。
A = 0.5;B = 1;C = 1;D = 0.75;
使用系数矩阵指定状态空间模型。
Mdl = ssm(A,B,C,D)
Mdl =状态空间模型类型:ssm状态向量长度:1观测向量长度:1状态扰动向量长度:1观测创新向量长度:1模型支持的样本量:无限状态变量:x1, x2,…万博1manbetx状态扰动:u1, u2,…观测序列:y1, y2,…观测创新:e1, e2,…状态方程:x1(t) = (0.50)x1(t-1) + u1(t)观测方程:y1(t) = x1(t) + (0.75)e1(t)初始状态分布:初始状态表示x1 0初始状态协方差矩阵x1 x1 1.33状态类型x1平稳
Mdl
是一个舰导弹
模型。使用命令窗口中的显示来验证模型是否正确指定。该软件推断状态过程是平稳的。随后,软件将初始状态均值和协方差设置为AR(1)模型平稳分布的均值和方差。
模拟状态和观察的每个路径。指定路径跨越100个周期。
[simY,simX] =模拟(Mdl,100);
simY
是模拟响应的100 × 1向量。simX
是模拟状态的100 × 1向量。
用模拟状态绘制真实状态值。此外,将观察到的响应与模拟的响应绘制成图。
图subplot(2,1,1) plot(1:T,x,“- k”1: T, simX“:r”,“线宽”2)标题({“真状态值和模拟状态”})包含(“时间”) ylabel (“状态”)({传奇“真实状态值”,“模拟状态值”}) subplot(2,1,2) plot(1:T,y,“- k”1: T, simY“:r”,“线宽”2)标题({“观察反应和模拟反应”})包含(“时间”) ylabel (“响应”)({传奇观察到的反应的,“模拟反应”})
默认情况下,模拟
在状态空间模型中为每个状态和观测模拟一条路径。为了进行蒙特卡罗研究,指定要模拟大量的路径。
模拟包含未知参数的状态空间模型
若要从状态空间模型生成变量,请为所有未知参数指定值。
显式地创建这个状态空间模型。
在哪里 而且 均值为0,方差为1的独立高斯随机变量。假设初始状态均值和方差均为1,且状态为平稳过程。
A = NaN;B = NaN;C = 1;D = NaN;Mean0 = 1;Cov0 = 1;stateType = 0;Mdl = ssm(A,B,C,D,“Mean0”mean0,“Cov0”cov0,“StateType”, stateType);
模拟100个来自Mdl
.设自回归系数为0.75,状态扰动标准差为0.5,观测创新标准差为0.25。
Params = [0.75 0.5 0.25];y =模拟(Mdl,100,“参数”、参数);图;情节(y);标题“模拟反应”;包含“时间”;
该软件搜索南
值按照A, B, C, D, Mean0和Cov0的顺序列。元素的顺序参数个数
应该与这次搜索相对应。
状态空间模型的估计蒙特卡罗预测
假设失业率的变化( )和名义国民生产总值增长率( )可以用下面的状态空间模型形式表示。
地点:
是当时失业率的变化吗t.
是MA(1)效应的虚拟状态 .
当时的国民生产总值增长率是多少t.
是MA(1)效应的虚拟状态 .
是观察到的失业率变化。
为观察到的nGNP增长率。
而且 为均值为0,标准差为1的状态扰动的高斯序列。
观测创新的高斯级数是否具有均值0和标准差 .
观测创新的高斯级数是否具有均值0和标准差 .
加载Nelson-Plosser数据集,其中包含失业率和nGNP系列。
负载Data_NelsonPlosser
对数据进行预处理,取nGNP系列的自然对数,以及每个的第一差值。另外,去掉起始部分南
每个系列的值。
isNaN = any(ismissing(DataTable),2);包含nan的标记句点gnpn = dattable . gnpn (~isNaN);u = dattable . ur (~isNaN);T = size(gnpn,1);%样本量y = 0 (t -1,2);% PreallocateY (:,1) = diff(u);Y (:,2) = diff(log(gnpn));
本例继续使用无序列南
值。然而,使用卡尔曼滤波器框架,该软件可以容纳包含缺失值的系列。
为了确定模型对观测值的预测效果,可以去掉最后10个观测值进行比较。
numPeriods = 10;%预测范围isY = y(1:end-numPeriods,:);样本内观测值%oosY = y(end- numperiods +1:end,:);%样本外观测值
指定系数矩阵。
A = [NaN NaN 0;0 0 0 0;NaN 0 NaN NaN;0 0 0 0];B = [10 0; 10 0;0 1;0 1];C = [1 0 0 0;0 0 10 0];D = [NaN 0; 0 NaN];
使用指定状态空间模型舰导弹
.验证模型规范是否与状态空间模型一致。
Mdl = ssm(A,B,C,D)
Mdl =状态空间模型类型:ssm状态向量长度:4观测向量长度:2状态扰动向量长度:2观测创新向量长度:2模型支持的样本量:无限估计未知参数:8状态变量:x1, x2,…万博1manbetx状态扰动:u1, u2,…观测序列:y1, y2,…观测创新:e1, e2,…未知参数:c1, c2,…状态方程:x1(t) = (c1)x1(t-1) + (c3)x2(t-1) + (c4)x3(t-1) + u1(t) x2(t) = u1(t) x3(t) = (c2)x1(t-1) + (c5)x3(t-1) + (c6)x4(t) + u2(t) x4(t) = u2(t)观测方程:y1(t) = x1(t) + (c7)e1(t) y2(t) = x3(t) + (c8)e2(t)初态分布:未指定初态均值。初始状态协方差矩阵未指定。未指定状态类型。
估计模型参数,并使用一组随机的初始参数值进行优化。限制估计
而且
对所有正数,实数使用“磅”
名称-值对参数。为了数值稳定性,在软件计算参数协方差矩阵时指定Hessian,使用“CovMethod”
名称-值对参数。
rng (1);Params0 = rand(8,1);[EstMdl,estParams] =估计(Mdl,isY,params0,...“磅”,[-Inf -Inf -Inf -Inf -Inf -Inf -Inf 0 0],“CovMethod”,“海赛”);
方法:最大似然(fmincon)样本量:51对数似然:-170.92赤井信息准则:357.84贝叶斯信息准则:373.295 | t统计概率多项式系数Std犯错 ---------------------------------------------------- c (1) c(2) | | 0.06750 0.16548 0.40791 0.68334 -0.01372 0.05887 -0.23302 0.81575摄氏度(3)0 c(4) | | 2.71201 0.27039 10.03006 0.83815 2.84585 0.29452 0.76836摄氏度(5)c(6) | | 0.06274 2.83469 0.02213 0.98234 0.05196 2.56872 0.02023 0.98386摄氏度(7)c(8) | | 0.00273 2.40769 0.00113 0.99910 0.00016 0.13942 0.00113 0.99910 | |最终状态性病Dev t统计概率(1)| -0.00000 0.00273 -0.00033 0.99973 x (2) | 0.12237 - 0.929540.13164 0.89527 x(3) | 0.04049 0.00016 256.74447 0 x(4) | 0.01183 0.00016 72.51089 0
EstMdl
是一个舰导弹
模型,您可以使用点表示法访问它的属性。
过滤估计的状态空间模型,并从最终周期中提取过滤的状态及其方差。
[~,~,Output] = filter(EstMdl,isY);
修改估计的状态空间模型,使初始状态均值和协方差是过滤后的状态及其最终周期的协方差。这建立了预测范围内的模拟。
EstMdl1 = EstMdl;EstMdl1。Mean0=Output(end).FilteredStates; EstMdl1.Cov0 = Output(end).FilteredStatesCov;
模拟5 e5
从拟合的状态空间模型观测的路径EstMdl
.指定模拟每个周期的观测值。
numPaths = 5e5;simmy =模拟(EstMdl1,10,“NumPaths”, numPaths);
SimY
是一个10
——- - - - - -2
——- - - - - -numPaths
包含模拟观测的数组。一排排的SimY
对应于周期,列对应于模型中的观察结果,页对应于路径。
估计预测观测值及其在预测视界内的95%置信区间。
MCFY = mean(SimY,3);CIFY =分位数(SimY,[0.025 0.975],3);
估计理论预测波段。
[Y,YMSE] = forecast(EstMdl,10,isY);Lb = Y -根号(YMSE)*1.96;Ub = Y +根号(YMSE)*1.96;
将预测观测值与它们的真实值和预测间隔绘制出来。
figure h = plot(dates(end- numperiods -9:end),[isY(end-9:end,1);oosY(:,1)],“- k”,...日期(end-numPeriods + 1:结束),MCFY (end-numPeriods + 1:结束,1),“。r”,...日期(end-numPeriods + 1:结束),CIFY (end-numPeriods + 1:最终,1,1),“- b”,...日期(end-numPeriods + 1:结束),CIFY (end-numPeriods + 1:结束,1,2),“- b”,...日期(end-numPeriods + 1:结束),Y (: 1),”:c ',...日期(end-numPeriods + 1:结束),磅(:1),“m”,...日期(end-numPeriods + 1:结束),乌兰巴托(:1),“m”,...“线宽”3);包含(“时间”) ylabel (“失业率的变化”)传说(h((1、2、6)){“观察”,“MC预测”,...“95%预测区间”,理论预测的,...“95%理论区间”},“位置”,“最佳”)标题(“失业率的观察和预测变化”)
figure h = plot(dates(end- numperiods -9:end),[isY(end-9:end,2);oosY(:,2)],,“- k”,...日期(end-numPeriods + 1:结束),MCFY (end-numPeriods + 1:结束,2),“。r”,...日期(end-numPeriods + 1:结束),CIFY (end-numPeriods + 1:结束,2,- 1),“- b”,...日期(end-numPeriods + 1:结束),CIFY (end-numPeriods + 1:最终,2,2),“- b”,...日期(end-numPeriods + 1:结束),Y (:, 2),”:c ',...日期(end-numPeriods + 1:结束),磅(:,2),“m”,...日期(end-numPeriods + 1:结束),乌兰巴托(:,2),“m”,...“线宽”3);包含(“时间”) ylabel (国民生产总值增长率)传说(h((1、2、6)){“观察”,“MC预测”,...'95% MC间隔',理论预测的,“95%理论区间”},...“位置”,“最佳”)标题(“观察和预测的国民生产总值增长率”)
提示
用给出的响应模拟关节条件后验分布的状态simsmooth
.
参考文献
[1]德宾J.和S. J.库普曼。状态空间方法的时间序列分析.牛津:牛津大学出版社,2012年。
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。