模拟

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

描述

例子

y=模拟(Mdlnumobs返回一个随机的numobs多变量响应系列的渗透路径(y)模拟完全指定的VEC(P.–1)模型Mdl

例子

y=模拟(Mdlnumobs名称,值使用由一个或多个名称-值对参数指定的附加选项。例如,'numpath',1000,'x',x指定模拟1000条路径和路径X作为回归组件的外生预测数据。

例子

[yE.) =模拟(___返回模型创新E.使用先前语法中的任何输入参数。

例子

全部折叠

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

  • 本地生产总值

  • GDP隐式价格缩小剂

  • 雇员已付补偿

  • 所有人的非农商业部门时间

  • 有效联邦基金利率

  • 个人消费支出

  • 私人国内投资

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

加载data_useconvecmodel.数据集。

负载data_useconvecmodel.

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

通过在单独的图中绘制系列,确定数据是否需要预处理。

图;子图(2,2,1)绘图(Fred.time,Fred.gdp);标题(“国内生产总值”);ylabel (“指数”);Xlabel('日期');子地块(2,2,2)绘图(FRED.Time,FRED.GDPDEF);标题(“GDP平减指数”);ylabel (“指数”);Xlabel('日期');子图(2,2,3)绘图(Fred.time,Fred.coe);标题(‘雇员的已支付补偿’);ylabel (数十亿美元的);Xlabel('日期');子图(2,2,4)绘图(Fred.time,Fred.Hoanbs);标题(“非农业企业营业时间”);ylabel (“指数”);Xlabel('日期');

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

通过应用对数变换稳定除联邦基金利率外的所有序列。将结果系列按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 = vecm(7,4,1);mdl.seriesnames = fred.properties.variablenames.
Mdl=vecm,属性:Description:“7维秩=4个具有线性时间趋势的VEC(1)模型”系列名称:“GDP”“GDPDEF”“COE”…以及其他4个数字系列:7秩:4 P:2常数:[7×1个NaNs向量]调整:[7×4个NaNs矩阵]协整:[7×4个NaNs矩阵]影响:[7×7个NaNs矩阵]协整常数:[4×1南部向量]协整趋势:[4×1南部向量]短期:{7×7南部矩阵}滞后[1]趋势:[7×1南部向量]β:[7×0矩阵]协方差:[7×7南部矩阵]

Mdl是一个向量误差修正模型模型对象。所有属性包含数值对应于给定数据中要估计的参数。

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

FRED.Variables EstMdl =估计(Mdl)
EstMdl=vecm,属性:Description:“7维秩=4 VEC(1)模型”系列名称:“GDP”“GDPDEF”“COE”。。。还有4个数字系列:7个秩:4个P:2常数:[14.1329 8.77841-7.20359…还有4个]'调整:[7×4矩阵]协整:[7×4矩阵]影响:[7×7矩阵]协整常数:[28.6082 109.555-77.0912…还有1个]'协整趋势:[4×1零向量]短期:[7×7矩阵]滞后[1]趋势:[7×1零向量]β:[7×0矩阵]协方差:[7×7矩阵]

EstMdl是一个估计向量误差修正模型模型对象。它是完全指定的,因为所有参数都有已知的值。默认情况下,估计通过从模型中移除协整趋势和线性趋势术语来强加H1 Johansen VEC模型形式的约束。从估计的参数排除相当于将平等约束施加到零。

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

RNG(1);%为了再现性numobs = size(fred,1);y =模拟(estmdl,numobs);

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

说明了与之间的关系模拟滤器借鉴约翰森丹麦数据集的四个响应系列的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)模型具有线性时间趋势”系列序列:“M2”“Y”“IB”......和1更多NumSeries:4等级:1 P:2常数:[4×1载体的NAN]调整:[4×1矩阵NAN]结合:[4×1矩阵NANS]影响:[4×4矩阵NANS] COINTEGRIONCONSTANT:NAN COINTEGRATIONTREND:纳米4×4矩阵NANS}滞后[1]趋势:[4×1载体的NANS] BETA:[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];

创建一个向量误差修正模型使用适当的名称-值对参数表示VEC(1)模型的模型对象。

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

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

模拟1000个观察路径。返回创新(缩放扰动)。

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。NumSeries次要情节(2,2,j)情节(挤压(Y (: j:)),“颜色”, 0.8, 0.8, 0.8)标题(Mdl.SeriesNames {j});持有绘图(均线(:,j));Xlabel(“时间索引”)举行结束

输入参数

全部折叠

VEC模型,指定为向量误差修正模型模型对象由向量误差修正模型估计Mdl必须完全指定。

每个输出路径生成的随机观测数量指定为正整数。输出参数yE.numobs行。

数据类型:双重的

名称-值对的观点

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

例子:'y0',y0,'x',x使用矩阵Y0作为预先反应和矩阵X作为回归组件中的预测数据。

要生成的样本路径数,指定为逗号分隔对,由“NumPaths”和一个正整数。输出参数yE.努帕斯页面。

例子:“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页面。

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

  • 对于没有回归成分的平稳VAR过程,模拟将预先检测设置为无条件的平均值 μ = Φ 1 L. C

  • 对于包含回归分量的非营养进程或模型,模拟将样本前观察值设置为零。

数据类型:双重的

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

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

行对应于观察,最后一行包含最新的观察。X必须至少numobs行。如果您提供了多余的行,模拟只使用最新版本numobs观察。模拟不使用预先定位时段中的回归分量。

列对应于各个预测变量。所有预测变量都存在于每个响应方程的回归分量中。

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

默认情况下,模拟排除回归组件,无论其在Mdl

数据类型:双重的

用于条件模拟的未来多变量响应系列,指定为逗号分隔对组成“。”以及包含numseries列。

行对应模拟视界中的观测值,第一行是最早的观测值。具体地说,行j在样本路径K.YF (j,:K.)包含响应j未来的时期。YF必须至少numobs行以覆盖模拟视界。如果您提供了多余的行,模拟只使用第一个numobs行。

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

页面对应于示例路径。具体来说,路径K.YF (:,:K.)捕获响应序列从样本前的过去演变而来的状态或知识(Y0)进入未来。

  • 如果YF那么,这是一个矩阵模拟适用YF给每一位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.对于T.he missing observations inYF模拟在任意已知值的条件下从高斯分布中绘制,并将绘制放在相应的位置E.

算法

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

    1. 模拟Infers(或逆筛选)的创新E(T.,:K.根据已知的未来反应YF (T.,:K.对于E(T.,:K.模拟模仿出现的值YF (T.,:K.

    2. 为缺失的元素E(T.,:K.模拟执行这些步骤。

      1. Z1,随机,标准高斯分布干扰的障碍是有条件的已知元素E(T.,:K.

      2. 规模Z1条件协方差矩阵的下三角乔尔斯基因子。也就是说,Z2=L * Z1哪里L.=胆固醇(C,‘较低’)C是条件高斯分布的协方差。

      3. 赋予Z2替换中相应的缺失值E(T.,:K.

    3. 中缺失的值YF (T.,:K.模拟通过模型过滤相应的随机创新Mdl

  • 模拟使用此过程来确定时间来源T.0.包括线性时间趋势的模型。

    • 如果您未指定Y0, 然后T.0.= 0。

    • 否则,模拟T.0.尺寸(Y0,1)-Mdl。P.因此,趋势分量中的次数为T.=T.0.+ 1,T.0.+ 2,…,T.0.+numobs。此约定与模型估计的默认行为一致,其中估计删除第一个Mdl。P响应,减少了有效样本量。虽然模拟显式使用第一个Mdl。Ppresample反应Y0初始化模型,观察总数Y0(不包括任何丢失的值)确定T.0.

工具书类

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

[2]约翰森,S。基于似然的协整矢量自动评级模型的推断.牛津大学出版社,1995。

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

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

在R2017B中介绍