主要内容

模拟

矢量误差校正(VEC)模型的蒙特卡罗模拟

描述

例子

Y=模拟(Mdlnumobs返回一个随机numobs多元响应序列的周期路径(Y),以模拟完全指定的VEC(p- 1)模型Mdl

例子

Y=模拟(Mdlnumobs名称,值使用一个或多个名称-值参数指定的其他选项。例如,“X”“NumPaths”,1000年,X指定模拟1000条路径和X作为外生预测数据的回归成分。

例子

YE=模拟(___返回模型创新E使用前面语法中的任何输入参数。

例子

全部折叠

考虑以下七个宏观经济系列的VEC模型,然后将模型与数据拟合。

  • 国内生产总值(GDP)

  • GDP隐性价格平减指数

  • 员工薪酬

  • 所有人的非农业务部门工作时间

  • 实际联邦基金利率

  • 个人消费支出

  • 国内私人投资总额

假设协整秩为4和一个短期项是合适的,即考虑VEC(1)模型。

加载Data_USEconVECModel数据集。

负载Data_USEconVECModel

有关数据集和变量的更多信息,请输入描述在命令行。

通过在单独的图上绘制序列来确定是否需要对数据进行预处理。

图;次要情节(2、2、1)情节(FRED.Time FRED.GDP);标题(“本地生产总值”);ylabel (“指数”);包含(“日期”);次要情节(2 2 2)情节(FRED.Time FRED.GDPDEF);标题(“GDP平减指数”);ylabel (“指数”);包含(“日期”);次要情节(2,2,3)情节(FRED.Time FRED.COE);标题(“已付雇员补偿”);ylabel (“数十亿美元”);包含(“日期”);次要情节(2,2,4)情节(FRED.Time FRED.HOANBS);标题(“非农业行业营业时间”);ylabel (“指数”);包含(“日期”);

图中包含4个轴对象。标题为国内生产总值的坐标轴对象1包含一个类型为行的对象。标题为GDP Deflator的Axes对象2包含一个类型为line的对象。标题为Paid Compensation of Employees的Axes对象3包含一个类型为line的对象。标题为非农业务部门小时的Axes对象4包含一个类型为line的对象。

图;次要情节(2、2、1)情节(FRED.Time FRED.FEDFUNDS);标题(“联邦基金利率”);ylabel (“百分比”);包含(“日期”);次要情节(2 2 2)情节(FRED.Time FRED.PCEC);标题(“消费支出”);ylabel (“数十亿美元”);包含(“日期”);次要情节(2,2,3)情节(FRED.Time FRED.GPDI);标题(“国内私人投资总额”);ylabel (“数十亿美元”);包含(“日期”);

图中包含3个轴对象。标题为“联邦基金利率”的Axes对象1包含一个类型为line的对象。标题为Consumption expenditure的Axes对象2包含一个类型为line的对象。标题为“国内私人投资总额”的坐标轴对象3包含一个类型为line的对象。

通过应用对数变换,稳定除联邦基金利率外的所有系列。将生成的系列按100缩放,以便所有系列都在相同的比例上。

弗雷德。GDP = 100*log(FRED.GDP);弗雷德。GDPDEF = 100*log(FRED.GDPDEF);弗雷德。COE = 100*log(FRED.COE); FRED.HOANBS = 100*log(FRED.HOANBS); FRED.PCEC = 100*log(FRED.PCEC); FRED.GPDI = 100*log(FRED.GPDI);

使用简写语法创建VECM(1)模型。指定变量名。

Mdl = vecm(7,4,1);Mdl。SeriesNames = FRED.Properties.VariableNames
Mdl = vecm与属性:说明:“7维秩= 4 VEC(1)模型与线性时间趋势”SeriesNames:“GDP”“GDPDEF”“COE”…和4更NumSeries: 7等级:4 P: 2常数:[7×1的向量nan]调整:[7×4矩阵nan)协整:[7×4矩阵nan)影响:[7×7矩阵nan] CointegrationConstant:[4×1的向量nan] CointegrationTrend:[4×1的向量nan]短期的:{7×7矩阵nan}在滞后[1]的趋势:[7×1的向量nan]β:协方差矩阵[7×0]:[7×7矩阵nan)

Mdl是一个结果模型对象。所有属性包含值对应于给定数据要估计的参数。

使用整个数据集和默认选项估计模型。

EstMdl =估计(Mdl,FRED.Variables)
EstMdl = vecm属性:描述:“7维Rank = 4 VEC(1)模型”SeriesNames:“GDP”“GDPDEF”“COE”…和4更多NumSeries: 7排名:4 P: 2常量:[14.1329 8.77841 -7.20359…调整:[7×4矩阵]协整:[7×4矩阵]影响:[7×7矩阵]协整常量:[-28.6082 109.555 -77.0912…and 1 more]' CointegrationTrend: [4×1 vector of zero] ShortRun: {7×7 matrix} at lag[1]趋势:[7×1 vector of zero] Beta: [7×0 matrix]协方差:[7×7 matrix]

EstMdl是估计的结果模型对象。它是完全指定的,因为所有参数都有已知值。默认情况下,估计通过从模型中去除协整趋势项和线性趋势项,对H1 Johansen VEC模型形式施加约束。从估计中排除参数相当于将相等约束施加到零。

模拟来自估计模型的响应序列路径,其长度等于数据中的路径。

rng (1);%用于再现性nummobs = size(FRED,1);Y =模拟(EstMdl, nummobs);

Y是一个240 × 7的模拟响应矩阵。中的变量名对应于列EstMdl。SeriesNames

说明之间的关系模拟而且过滤器通过估计Johansen丹麦数据集中四个响应系列的4-D VEC(1)模型。将拟合的模型和历史数据作为初始值,模拟单路径响应,然后使用相同的预采样响应,通过估计模型筛选随机的高斯扰动集。

加载约翰森的丹麦经济数据。

负载Data_JDanish

变量说明请输入描述

创建一个默认的4-D VEC(1)模型。假设协整秩为1是合适的。

Mdl = vecm(4,1,1);Mdl。SeriesNames = DataTable.Properties.VariableNames
Mdl = vecm与属性:说明:“4维秩= 1 VEC(1)模型与线性时间趋势”SeriesNames:“M2”“Y”“IB”…和1个更多NumSeries: 4排名:1 P: 2常量:[4×1 NaNs向量]调整:[4×1 NaNs矩阵]协整:[4×1 NaNs矩阵]影响:[4×4 NaNs矩阵]协整常量:NaN协整趋势:NaN ShortRun: {4×4 NaNs矩阵}滞后[1]趋势:[4×1 NaNs向量]Beta: [4×0矩阵]协方差:[4×4 NaNs矩阵]

使用整个数据集估计VEC(1)模型。指定H1* Johansen模型表单。

EstMdl =估计(Mdl,数据,“模型”“H1 *”);

的结果时模拟而且过滤器,采取这些行动是很重要的。

  • 设置相同的随机数种子使用rng

  • 属性指定相同的预采样响应数据“Y0”名称-值对参数。

设置默认的随机种子。通过将估计的模型传递给模拟.指定整个数据集作为预示例。

rng默认的;YSim =模拟(EstMdl,100,“Y0”、数据);

YSim是模拟响应的100 × 4矩阵。列对应于变量的列EstMdl。SeriesNames

设置默认的随机种子。从标准高斯分布模拟4个系列的100个观测值。

rng默认的;Z = randn(100,4);

通过估计模型对高斯值进行滤波。指定整个数据集作为预示例。

YFilter = filter(EstMdl,Z,“Y0”、数据);

YFilter是模拟响应的100 × 4矩阵。列对应于变量的列EstMdl。SeriesNames.在过滤干扰之前,过滤器尺度Z中模型协方差的下三角Cholesky因子EstMdl。Covariance

比较两者的结果反应过滤器而且模拟

(YSim - YFilter)'*(YSim - YFilter)
ans =4×40 0 0 0 0 0 0 0 0 0 0

结果是相同的。

考虑三个假设响应序列的VEC(1)模型。

Δ y t c + 一个 B y t - 1 + Φ 1 Δ y t - 1 + ε t - 1 - 3. - 3. 0 + - 0 3. 0 3. - 0 2 0 1 - 1 0 0 1 - 0 2 0 2 - 0 7 0 5 0 2 y t - 1 + 0 0 1 0 2 0 2 - 0 2 0 0 7 - 0 2 0 3. Δ y t - 1 + ε t

创新是均值为0的多元高斯分布和协方差矩阵

Σ 1 3. 0 4 1 6 0 4 0 6 0 7 1 6 0 7 5

为参数值创建变量。

调整= [-0.3 0.3;-0.2 - 0.1;1 0];协整= [0.1 -0.7;-0.2 - 0.5;0.2 - 0.2);ShortRun = {[0.]0.1 - 0.2;0.2 -0.2 0;0.7 -0.2 0.3]}; Constant = [-1; -3; -30]; Trend = [0; 0; 0]; Covariance = [1.3 0.4 1.6; 0.4 0.6 0.7; 1.6 0.7 5];

创建一个结果模型对象使用适当的名称-值对参数表示VEC(1)模型。

Mdl = vecm(“调整”调整,协整的协整,...“不变”常数,“短期的”短期的,“趋势”的趋势,...协方差的、协方差);

Mdl是否有效地完全指定结果模型对象。也就是说,协整常数和线性趋势是未知的,但由于总体常数和趋势参数是已知的,因此模拟观测或预测不需要协整常数和线性趋势。

模拟100个观测值的1000条路径。返回创新(缩放扰动)。

Numpaths = 1000;Numobs = 100;rng (1);%用于再现性[Y,E] =模拟(Mdl, nummobs,“NumPaths”, numpaths);

Y是一个100 × 3 × 1000的模拟响应矩阵。E矩阵的维数是否与的维数对应Y,但表示模拟的、缩放的扰动。列对应于响应变量名Mdl。SeriesNames

对于每个时间点,计算所有路径之间模拟响应的平均向量。

MeanSim = mean(Y,3);

MeanSim是一个100 × 7的矩阵,包含每个时间点模拟响应的平均值。

绘制模拟反应及其平均值。

图;j = 1:Mdl。NumSeriessubplot(2,2,j) plot(squeeze(Y(:,j,:)),“颜色”, 0.8, 0.8, 0.8)标题(Mdl.SeriesNames {j});持有情节(MeanSim (:, j));包含(“时间指数”)举行结束

图中包含3个轴对象。标题为Y1的Axes对象1包含1001个line类型的对象。标题为Y2的Axes对象2包含1001个line类型的对象。标题为Y3的Axes对象3包含1001个line类型的对象。

输入参数

全部折叠

VEC模型,指定为结果创建的模型对象结果估计Mdl必须完全指定。

每个输出路径生成的随机观察数,指定为正整数。输出参数Y而且Enumobs行。

数据类型:

名称-值参数

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

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

例子:Y0, Y0, X, X使用矩阵Y0作为预样响应和矩阵X作为回归分量中的预测数据。

要生成的样例路径的数目,指定为逗号分隔的对,由“NumPaths”一个正整数。输出参数Y而且ENumPaths页面。

例子:“NumPaths”,1000年

数据类型:

为模型提供初始值的预示例响应,由逗号分隔的对组成“Y0”和一个numpreobs——- - - - - -numseries数值矩阵或numpreobs——- - - - - -numseries——- - - - - -numprepaths数字数组。

numpreobs是预采样观测数。numseries是响应序列的个数(Mdl。NumSeries).numprepaths是预采样响应路径的数量。

行对应于预采样观测值,最后一行包含最新的预采样观测值。Y0至少要有Mdl。P行。如果你提供的行数比需要的多,模拟使用最新的Mdl。P观察。

中的响应序列名称必须与列对应Mdl。SeriesNames

页面对应于独立的路径。

  • 如果Y0是矩阵吗模拟应用它来模拟每个示例路径(页面)。因此,输出参数中的所有路径Y由共同的初始条件导出。

  • 否则,模拟适用于Y0 (:,:j初始化模拟路径jY0至少要有numpaths页面(见NumPaths),模拟只使用第一个numpaths页面。

默认情况下,模拟设置任何必要的预采样观察。

  • 对于无回归分量的平稳VAR过程,模拟将预采样观测值设置为无条件平均值 μ Φ 1 l c

  • 对于包含回归成分的非平稳过程或模型,模拟将预采样观测值设置为零。

数据类型:

模型中回归组件的预测器数据,指定为逗号分隔的对,由“X”和一个数字矩阵包含numpreds列。

numpreds是预测变量的数量(大小(Mdl.Beta, 2)).

行对应观测值,最后一行包含最新观测值。X至少要有numobs行。如果你提供的行数比需要的多,模拟只使用最新版本numobs观察。模拟在预采样期间不使用回归组件。

列对应于单独的预测变量。所有预测变量都出现在每个响应方程的回归分量中。

模拟适用于X到每个路径(页);也就是说,X表示观测到的预测器的一条路径。

默认情况下,模拟排除回归组件,不管它是否存在于Mdl

数据类型:

用于条件模拟的未来多元响应序列,指定为由逗号分隔的对组成“。”和一个数字矩阵或数组包含numseries列。

行对应模拟视界中的观测值,第一行是最早的观测值。具体地说,行j在采样路径中kYF (j:,k)内载有回应j未来的时期。YF至少要有numobs行来覆盖模拟视界。如果你提供的行数比需要的多,模拟只使用第一个numobs行。

中的响应变量名必须与列对应Mdl。SeriesNames

页面对应于示例路径。具体来说,路径kYF (:,:k)捕捉响应序列从过去的预样本演化而来的状态或知识(Y0)的未来。

  • 如果YF是矩阵吗模拟适用于YF给每一个numpaths输出路径(见NumPaths).

  • 否则,YF至少要有numpaths页面。如果你提供了多余的页数,模拟只使用第一个numpaths页面。

的元素YF可以是数值标量或缺失值(由值)。模拟将数值标量视为预先已知的确定性未来响应,例如由策略设置的响应。模拟模拟对应的响应值以已知值为条件。

默认情况下,YF数组由什么组成表示完全不了解所有模拟响应的未来状态的值。因此,模拟获取输出响应Y从常规的无条件蒙特卡罗模拟。

详情请参见算法

例子:考虑模拟由四个响应序列组成的VEC模型的一条路径。假设你对一些响应的未来值有先验知识,你想根据你的知识来模拟未知的响应。指定YF作为一个矩阵,包含你知道的值,并使用对于您不知道但想要模拟的值。例如,'YF',[NaN 2 5 NaN;南南0.1南;楠楠楠楠]指定您不知道第一个和第四个响应系列的未来值;您知道第二个响应序列中周期1的值,但不知道其他值;你知道第三个响应序列中周期1和2的值,但不知道周期3的值。

数据类型:

请注意

Y0而且X指出缺失的值。模拟通过按列表删除从数据中删除缺失的值。如果Y0是一个三维数组,那么模拟执行这些步骤。

  1. 水平连接页面以形成numpreobs——- - - - - -numpaths * numseries矩阵。

  2. 删除至少包含一个的任何行从连接的数据。

在观测缺失的情况下,从多个路径得到的结果Y0可能不同于从每个路径单独获得的结果。

有关条件模拟(请参阅YF),如果X包含最新版本中任何缺失的值numobs观察,然后模拟抛出错误。

输出参数

全部折叠

模拟多元响应序列,返回为numobs——- - - - - -numseries数值矩阵或numobs——- - - - - -numseries——- - - - - -numpaths数字数组。Y中的预示例响应的延续Y0

方法指定条件模拟的将来响应YF参数的名称-值对,则已知值YF出现在相同的位置Y.然而,Y中缺失观测值的模拟值YF

模拟多元模型创新系列,作为numobs——- - - - - -numseries数值矩阵或numobs——- - - - - -numseries——- - - - - -numpaths数字数组。

如果指定条件模拟的未来响应(请参阅YF名-值对参数),然后模拟从已知值中推断创新YF并将推断出的创新放在E.对于缺失的观察YF模拟从任意已知值条件下的高斯分布中绘制,并将绘制的位置放在E

算法

  • 模拟使用此过程对所有页面执行条件模拟k= 1,…,numpaths对于每一次t= 1,…,numobs

    1. 模拟推断(或反向过滤)创新E (t:,k从已知的未来反应YF (t:,k.为E (t:,k模拟模仿的模式的值。YF (t:,k

    2. 缺少的元素E (t:,k模拟执行这些步骤。

      1. Z1的已知元素条件下的随机标准高斯分布扰动E (t:,k

      2. 规模Z1条件协方差矩阵的下三角Cholesky因子。也就是说,Z2L * Z1,在那里l胆固醇(C,“低”)而且C为条件高斯分布的协方差。

      3. 嫁祸于Z2中的相应缺失值E (t:,k

    3. 中缺少的值YF (t:,k模拟通过模型过滤相应的随机创新Mdl

  • 模拟使用此过程来确定时间原点t0包含线性时间趋势的模型。

    • 如果您没有指定Y0,然后t0= 0。

    • 否则,模拟t0大小(Y0, 1)- - - - - -Mdl。P.因此,趋势分量中的次数为tt0+ 1,t0+ 2,…,t0+numobs.这种约定与模型估计的默认行为是一致的估计删除第一个Mdl。P反应,减少有效样本量。虽然模拟显式地使用第一个Mdl。PY0为初始化模型,在Y0(不包括任何缺失值)决定t0

参考文献

[1]汉密尔顿,詹姆斯D。时间序列分析.普林斯顿,新泽西州:普林斯顿大学出版社,1994。

[2]约翰森,S。协整向量自回归模型中的似然推理.牛津:牛津大学出版社,1995年。

[3]Juselius, K。协整VAR模型.牛津:牛津大学出版社,2006年。

[4]Lutkepohl, H。多重时间序列分析新导论.柏林:施普林格,2005。

版本历史

在R2017b中引入

另请参阅

对象

功能