主要内容

模拟

矢量误差修正(VEC)模型的蒙特卡罗仿真

描述

例子

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

例子

Y=模拟(Mdlnumobs名称,值使用由一个或多个名称值对参数中指定的附加选项。例如,“X”“NumPaths”,1000年,X指定模拟1000点的路径和X作为回归组件的外生预测数据。

例子

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

例子

全部折叠

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

  • 本地生产总值

  • 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个轴。标题为“国内生产总值”的轴上包含一个线型对象。标题为GDP平减器的轴2包含一个类型为line的对象。标题为Paid Compensation of Employees的坐标轴3包含一个line类型的对象。标题为“非农业业务部门时间”的坐标轴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个轴。标题为联邦基金利率的轴1包含一个类型为line的对象。标题为消费支出的轴2包含一个类型为line的对象。标题为“国内私人投资总额”的坐标轴上包含一个类型线对象。

稳定全系列,除了将联邦基金利率,通过应用数变换。100缩放由此带来的一系列使所有系列都以相同的规模。

弗雷德。国内生产总值= 100 *日志(FRED.GDP);弗雷德。GDPDEF = 100 *日志(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 =结果(7 4 1);Mdl.SeriesNames=弗雷德。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矩阵]:CointegrationConstant [7×7的NaN矩阵]:[4×1的NaN矢量] CointegrationTrend:[4×1个的向量的NaN] ShortRun的:{7×7的NaN矩阵}在延迟[1]趋势:的NaN]贝塔[7×1的向量:[7×0矩阵]协方差:[7×7的NaN矩阵]

Mdl是A.VECM模型对象。所有属性包含数值对应于给定数据中要估计的参数。

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

FRED.Variables EstMdl =估计(Mdl)
EstMdl = VECM具有属性:说明: “7维评级= 4 VEC(1)模型” SeriesNames: “GDP” “GDPDEF” “COE” ...和4个NumSeries:7等级:4 P:2常数:[14。13.29 8.77841 -7.20359 ... and 4 more]' Adjustment: [7×4 matrix] Cointegration: [7×4 matrix] Impact: [7×7 matrix] CointegrationConstant: [-28.6082 109.555 -77.0912 ... and 1 more]' CointegrationTrend: [4×1 vector of zeros] ShortRun: {7×7 matrix} at lag [1] Trend: [7×1 vector of zeros] Beta: [7×0 matrix] Covariance: [7×7 matrix]

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

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

rng (1);重复性的%numobs =大小(弗雷德,1);Y =模拟(EstMdl numobs);

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
描述:“具有线性时间趋势的4维Rank = 1 VEC(1)模型”系列名称:“M2”“Y”“IB”…和1更NumSeries: 4排名:1 P: 2常数:[4×1的向量NaN]调整:[4×1矩阵NaN)协整:[4×1矩阵NaN)影响:[4×4矩阵NaN] CointegrationConstant:南CointegrationTrend:南短期的:{4×4矩阵NaN}在滞后[1]的趋势:[4×1的向量NaN]β:协方差矩阵[4×0]:[4×4矩阵NaN)

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

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

当再现的结果模拟筛选在美国,采取这些行动很重要。

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

  • 属性指定相同的前样例响应数据“Y0”名称-值对的论点。

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

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

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

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

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

通过估计模型过滤高斯值。指定整个数据集作为前示例。

YFilter =过滤器(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 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);短期的={[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];

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

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

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

模拟1000条路径的100个观察。返回创新(大规模扰动)。

numpaths = 1000;numobs = 100;rng (1);重复性的%(Y, E) =模拟(Mdl numobs,“NumPaths”, numpaths);

Y是一个100 × 3 × 1000的模拟响应矩阵。E一个矩阵的维数与的维数对应吗Y,但代表了模拟,比例失调。列对应于所述响应的变量名Mdl.SeriesNames

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

MeanSim =意味着(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个轴。轴1与标题Y1包含类型的线1001级的对象。轴2与标题Y2包含类型的线1001级的对象。轴3与标题Y3包含类型的线1001级的对象。

输入参数

全部折叠

VEC模型,指定为VECM模型对象由VECM估计Mdl必须完全指定。

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

数据类型:双倍的

名称-值对的观点

指定可选的逗号分隔的对名称,值论点。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数name1,value1,...,namen,valuen

例子:Y0, Y0, X, X采用矩阵Y0作为预样响应和矩阵X作为回归部件预测数据。

的样品路径数来生成,指定为逗号分隔的一对组成的“NumPaths”和一个正整数。输出参数YENumPaths页面。

例子:“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;NaN 0.1 NaN;南南南]指定你有没有第一和第四响应系列的未来值的知识;你知道在第二个响应一系列期间1的值,但没有其他价值;并且知道在第三响应系列周期1和2的值,但不为周期3的值。

数据类型:双倍的

请注意

Y0X表明缺失值。模拟通过列表删除从数据中删除缺失的值。如果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条件协方差矩阵的下三角乔尔斯基因子。也就是说,Z2L * Z1, 在哪里lCHOL(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。Ppresample反应Y0为了初始化模型,在Y0(不包括任何丢失的值)确定t0

参考文献

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

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

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

[4]Lutkepohl, H。新介绍多时间序列分析.柏林:施普林格,2005年。

另请参阅

对象

功能

介绍了R2017b