模拟

向量自回归(VAR)模型的蒙特卡罗模拟

描述

例子

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

例子

Y=模拟(MDL.numobs.名称,值使用由一个或多个名称值对参数指定的其他选项。例如,您可以指定多路径,外源预测器数据或将未来响应的仿真指定用于有条件模拟。

例子

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

例子

全部收缩

将VAR(4)模型适合消费者价格指数(CPI)和失业率数据。然后,模拟估计模型的响应。

加载Data_USEconModel数据集。

负载Data_USEconModel

在单独的图中绘制两个系列。

图;绘图(DataTable.Time,DataTable.cpiaUcsl);标题(“消费者价格指数”);ylabel ('指数');包含(“日期”);

图;绘图(DataTable.Time,DataTable.unrate);标题('失业率');ylabel ('百分');包含(“日期”);

将其转化为一系列增长率来稳定CPI。通过从失业率系列中删除第一次观察来同步两个系列。创建包含转换变量的新数据集,不包括任何包含至少一个缺少观察的行。

RCPI = Price2RET(DataTable.cpiaUcsl);Unverate = DataTable.unrate(2:结束);日期= DataTable.time(2:结束);idx =全部(〜Ismissing([RCPI Unverate]),2);数据= Array2Timetable([RCPI(IDX)失败(IDX)],......“RowTimes”,dataTable.time(IDX),'variablenames',{“rcpi”“unrate”});

使用简写语法创建默认VAR(4)模型。

Mdl = varm(2、4);

使用整个数据集估计模型。

estmdl =估计(mdl,data.variables);

estmdl.是完全指定的,估计的吗varm.模型对象。

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

rng (1);%的再现性numobs =大小(数据,1);Y =模拟(EstMdl numobs);

Y是模拟响应的245×2矩阵。第一列和第二列分别包含模拟的CPI生长率和失业率。

绘制模拟的和真实的响应。

图;绘图(Data.time,Y(:,1));持有;情节(Data.Time Data.rcpi)标题('CPI增长率');ylabel ('增长率');包含(“日期”);传奇(“模拟”'真的'

图;情节(Data.Time, Y (:, 2));持有;情节(Data.Time Data.unrate) ylabel ('百分');包含(“日期”);标题('失业率');传奇(“模拟”'真的'

举例说明模拟过滤器通过估计约翰森丹麦数据集中的四个响应系列的4维var(2)模型。使用拟合模型和历史数据作为初始值模拟单个响应路径,然后使用相同的预先响应过滤通过估计模型过滤一组随机的高斯干扰。

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

负载data_jdanish.

有关变量的详细信息,请输入描述

创建默认的4-D VAR(2)模型。

Mdl = varm (4,2);

使用整个数据集估算VAR(2)模型。

EstMdl =估计(Mdl、数据);

当再现的结果模拟过滤器,采取这些行动很重要。

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

  • 使用该数据指定相同的预先预定响应数据'y0'名称-值对的论点。

设置默认的随机种子。通过将估计的模型传递给100个观察模拟.将整个数据集指定为预先定位。

rng.默认ysim =模拟(estmdl,100,'y0'、数据);

ysim是一个100乘4的模拟响应矩阵。列对应于变量的列数据

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

rng.默认z = randn(100,4);

过滤通过估计的模型过滤高斯值。将整个数据集指定为预先定位。

yfilter =过滤器(estmdl,z,'y0'、数据);

YFilter是一个100乘4的模拟响应矩阵。列对应于数据中变量的列数据.在过滤干扰之前,过滤器Z由模型协方差的较低三角形凿弦因子EstMdl。Covariance

比较所产生的响应过滤器模拟

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

结果是相同的。

估计消费者价格指数(CPI),失业率和国内生产总值(GDP)的var(4)模型。包括包含当前和最后4个季度政府消费支出和投资的线性回归分量。模拟估计模型的多条路径。

加载Data_USEconModel数据集。计算真正的GDP。

负载Data_USEconModel数据表。RGDP = DataTable.GDP. / DataTable.GDPDEF * 100;

在单独的图中绘制所有变量。

图;子图(2,2,1)绘图(DataTable.Time,DataTable.cpiACSL);ylabel ('指数');标题(“消费者价格指数”);次要情节(2 2 2)情节(DataTable.Time DataTable.UNRATE);ylabel ('百分');标题('失业率');次要情节(2,2,3)情节(DataTable.Time DataTable.RGDP);ylabel ('输出');标题(“实际国内生产总值”);子图(2,2,4)绘图(DataTable.Time,DataTable.gce);ylabel (“数十亿美元”);标题('政府支出');

通过将CPI、GDP和GCE转换为一系列的增长率来稳定它们。将第一个观测值去掉,使失业率序列与其他序列同步。创建包含已转换变量的新数据集。

InputVariables = {“CPIAUCSL”'rgdp''GCE'};Data = varfun (@price2ret DataTable,“数据源”,inputvariables);data.properties.variablenames = inputvariables;data.unrate = dataTable.unrate(2:结束);日期= DataTable.time(2:结束);

将GCE比率级数展开为一个矩阵,其中包括它的当前值,以及四个滞后值。删除格索以及包含任何遗漏值的观察结果数据

rgcelag4 = lagmatrix(data.gce,0:4);idx =全部(〜ismissing([数据表(RgcelAg4)]),2);数据=数据(IDX,:);data.gce = [];

使用简写语法创建默认VAR(4)模型。

Mdl = varm(3、4);Mdl。SeriesNames = [“rcpi”“失败”“rgdpg”];

使用整个样本估计模型。指定GCE矩阵作为回归组件的数据。

estmdl =估计(mdl,data.variables,'X',rgcelag4);

从估计模型模拟1000条路径。指定路径的长度与数据的长度相同,不遗漏任何值。提供预测数据。返回创新(大规模扰动)。

numpaths = 1000;numobs =大小(数据,1);rng (1);%的再现性[y,e] =模拟(estmdl,numobs,'X'rgcelag4,'numpaths', numpaths);

Y是一个244 × 3 × 1000的模拟响应矩阵。E是矩阵,其尺寸对应于尺寸Y,但代表模拟,缩放的干扰。该列分别对应于CPI增长率,失业率和GDP增长率。模拟将相同的预测数据应用于所有路径。

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

手段=平均值(Y,3);

手段是一个244×3矩阵,包含每个时间点的模拟响应的平均值。

绘制模拟反应,它们的平均值和数据。

图;j = 1:mdl.numseries子图(2,2,j)绘图(data.time,挤压(y(:,j,:)),“颜色”,[0.8,0.8,0.8])标题(mdl.seriesnames {j});持有h1 =情节(Data.Time、数据{:,j});h2 =情节(Data.Time MeanSim (:, j));持有离开结束[h1 h2],“数据”“的意思是”);霍奇金淋巴瘤。Position = [0.6 0.25 hl.Position(3:4)];

输入参数

全部收缩

VAR模型,指定为varm.模型对象创建varm.或者估计MDL.必须完全指定。

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

数据类型:双倍的

名称值对参数

指定可选的逗号分隔的对名称,值参数。姓名参数名和价值是相应的价值。姓名必须出现在引号内。您可以以任何顺序指定多个名称和值对参数Name1, Value1,…,的家

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

生成的样本路径数量,指定为逗号分隔的对组成'numpaths'一个正整数。输出参数YENumPaths页面。

例子:“NumPaths”,1000年

数据类型:双倍的

预先确定为模型提供初始值的响应,指定为包含的逗号分隔对'y0'A.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'和一个数值矩阵包含麻木列。

麻木为预测变量的个数(尺寸(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从常规的,无条件的蒙特卡罗模拟。

有关更多详细信息,请参阅算法

例子:考虑模拟由四个响应系列三个时期组成的VAR模型的一条路径到未来。假设您已经了解了关于响应的一些未来值的知识,并且您希望模拟您的知识条件的未知响应。指定yf.作为包含您知道和使用的值的矩阵对于你不知道但想要模拟的值。例如,'yf',[南2 5楠;Nan 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通过条件协方差矩阵的较低三角形弦系因子。那是,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.p.预先反应y0.为了初始化模型,在y0.(不包括任何丢失的值)确定t0

参考文献

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

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

[3]Juselius, K。共同化的VAR模型.牛津:牛津大学出版社,2006。

[4]Lütkepohl,H.多时间序列分析新介绍.柏林:斯普林斯,2005年。

介绍了R2017a