主要内容

VAR模型案例研究

这个例子展示了如何分析VAR模型。

案例研究概述

本节包含中描述的工作流示例VAR模型的工作流.这个例子使用了三个时间序列:GDP、M1货币供应量和3个月国库券利率。这个例子表明:

  • 为平稳加载和转换数据

  • 将转换后的数据划分为前样本、估计和预测区间,以支持回溯测试实验金宝app

  • 让几个模型

  • 将模型与数据进行拟合

  • 决定哪个模型是最好的

  • 根据最佳模型进行预测

加载和转换数据

该文件Data_USEconModel随计量经济学工具箱™软件发货。该文件以表格数组的形式包含来自圣路易斯联邦储备银行经济数据(FRED)数据库的时间序列。这个例子使用了三个时间序列:

  • 国内生产总值(国内生产总值

  • M1货币供应量(M1SL

  • 三个月期国库券利率(TB3MS

加载数据集。为实际GDP创建一个变量。

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

绘制数据以寻找趋势。

图次要情节(3、1、1)的阴谋(DataTable.Time DataTable.RGDP,“r”);标题(实际国内生产总值的网格)次要情节(3、1、2);情节(DataTable.Time DataTable.M1SL,“b”);标题(“M1”网格)次要情节(3,1,3);情节(DataTable.Time DataTable.TB3MS,“k”)标题(“3-mo国债”网格)

图中包含3个轴。标题为“实际GDP”的轴1包含一个类型为line的对象。标题M1的轴2包含一个类型为line的对象。标题为3-mo T-bill的轴3包含一个类型为line的对象。

实际GDP和M1数据似乎呈指数增长,而短期国库券回报没有显示出指数增长。为了抵消实际GDP和M1的趋势,对数据取对数差。同时,通过取第一个差来稳定国债序列。同步日期序列,以便数据的每一列具有相同的行数。

rgdpg = price2ret (DataTable.RGDP);m1slg = price2ret (DataTable.M1SL);dtb3ms = diff (DataTable.TB3MS);Data = array2timetable([rgdpg m1slg dtb3ms],...“RowTimes”DataTable.Time(2:结束),“VariableNames”, {“RGDP”“M1SL”“TB3MS”});图次要情节(3、1、1)的阴谋(Data.Time Data.RGDP,“r”);标题(实际国内生产总值的网格)次要情节(3、1、2);情节(Data.Time Data.M1SL,“b”);标题(“M1”网格)次要情节(3,1,3);情节(Data.Time Data.TB3MS,“k”)、标题(“3-mo国债”网格)

图中包含3个轴。标题为“实际GDP”的轴1包含一个类型为line的对象。标题M1的轴2包含一个类型为line的对象。标题为3-mo T-bill的轴3包含一个类型为line的对象。

前两列的比例大约是第三列的100倍。前两列乘以100,这样时间序列大致上是相同的。这种缩放使得在同一个图上绘制所有系列变得很容易。更重要的是,这种类型的扩展使优化在数值上更加稳定(例如,最大化对数可能性)。

数据{:1:2}{:1:2}= 100 *数据;图绘制(Data.Time Data.RGDP,“r”);持有情节(Data.Time Data.M1SL,“b”);datetick (“x”网格)情节(Data.Time Data.TB3MS,“k”);传奇(实际国内生产总值的“M1”“3-mo国债”);持有

图中包含一个坐标轴。轴线包含3个线型对象。这些对象代表实际GDP, M1, 3个月的短期国债。

选择和适合的模型

您可以为数据选择许多不同的模型。这个例子使用了四个模型。

  • VAR(2)与对角自回归

  • VAR(2)具有完全自回归

  • VAR(4)与对角自回归

  • VAR(4)具有完全自回归

从系列的开头删除所有缺失的值。

idx =所有(~ ismissing(数据),2);=数据(idx:);

创建四个模型。

numseries = 3;dnan =诊断接头(nan (numseries, 1));seriesnames = {实际国内生产总值的“M1”“3-mo国债”};VAR2diag = varm (基于“增大化现实”技术的, {dnan dnan},“SeriesNames”, seriesnames);VAR2full = varm (numseries 2);VAR2full。SeriesNames = SeriesNames;VAR4diag = varm (基于“增大化现实”技术的{dnan dnan dnan dnan},“SeriesNames”, seriesnames);VAR4full = varm (numseries 4);VAR4full。SeriesNames = SeriesNames;

矩阵dnan对角矩阵是多少值沿其主对角线。通常,缺失值指定模型中参数的存在,并表明参数需要适合数据。MATLAB®保持非对角元素,0,估算时固定。相反,规范VAR2fullVAR4full有由值。因此,估计适合自回归矩阵的全矩阵。

为了评估模型的质量,创建指标向量,将响应数据划分为三个阶段:前样本、估计和预测。拟合模型到估计数据,使用前样本期提供滞后数据。将拟合模型的预测与预测数据进行比较。估计期是在样本内,而预测期是在样本外(也称val).

对于两个VAR(4)模型,前样本周期为的前四行数据.对VAR(2)模型使用相同的前样本期,以便所有模型都适合相同的数据。这对于模型拟合比较是必要的。对于这两个模型,预测期是最后10%的行数据.模型的估计周期从第5行到90%行。定义这些数据周期。

idxPre = 1:4;T =装天花板(。9 *大小(数据,1));idx = 5: T;idxF = (T + 1):大小(数据,1);跳频=元素个数(idxF);

既然模型和时间序列已经存在,您就可以轻松地将模型与数据相匹配。

[EstMdl1, EstSE1 logL1, E1) =估计(VAR2diag、数据{idx:}...“Y0”、数据{idxPre:});[EstMdl2, EstSE2 logL2, E2] =估计(VAR2full、数据{idx:}...“Y0”、数据{idxPre:});[EstMdl3, EstSE3 logL3, E3] =估计(VAR4diag、数据{idx:}...“Y0”、数据{idxPre:});[EstMdl4, EstSE4 logL4, E4] =估计(VAR4full、数据{idx:}...“Y0”、数据{idxPre:});
  • EstMdl模型对象是拟合的模型。

  • EstSE结构包含了拟合模型的标准误差。

  • logL值是拟合模型的对数似然数,用来帮助您选择最佳模型。

  • E向量是残差,其大小与估计数据相同。

检查模型充分性

通过显示,可以检查估计模型是否稳定和可逆描述属性。(这些模型中没有MA项,所以模型必然是可逆的。)描述表明,所有的估计模型都是稳定的。

EstMdl1。描述
ans = "AR-Stationary 3d VAR(2) Model"
EstMdl2。描述
ans = "AR-Stationary 3d VAR(2) Model"
EstMdl3。描述
ans = "AR-Stationary 3d VAR(4) Model"
EstMdl4。描述
ans = "AR-Stationary 3d VAR(4) Model"

AR-Stationary出现在输出中,表明自回归过程是稳定的。

您可以使用限制性(对角线)AR模型与非限制性(完全)AR模型进行比较lratiotest.该测试拒绝或未能拒绝一个假设,即受限制的模型是充分的,默认有5%的容忍度。这是一个样本内测试。

应用似然比检验。您必须从返回的摘要结构中提取估计参数的数量总结.然后,将估计参数和对数似然数的差异传递给lratiotest来进行测试

其中回答=总结(EstMdl1);np1 = results1.NumEstimatedParameters;results2 =总结(EstMdl2);np2 = results2.NumEstimatedParameters;results3 =总结(EstMdl3);这类= results3.NumEstimatedParameters;results4 =总结(EstMdl4);np4 = results4.NumEstimatedParameters;rratiotest (loggl2, loggl1,np2 - np1)
reject1 =逻辑1
= lratiotest(loggl4, loggl3,np4 - np3)
reject3 =逻辑1
rratiotest (loggl4, loggl2,np4 - np2)
reject4 =逻辑0

1结果表明,似然比检验拒绝了限制性模型,而倾向于相应的非限制性模型。因此,在本次检验中,不受限制的VAR(2)和VAR(4)模型更可取。然而,该检验并不排斥无限制VAR(2)模型,而倾向于无限制VAR(4)模型。(本检验将VAR(2)模型视为VAR(4)模型,限制自回归矩阵AR(3)和AR(4)均为0。)因此,无限制VAR(2)模型似乎是最好的模型。

通过最小化赤池信息准则(AIC)来寻找集合中最优模型。利用样本内数据计算AIC。计算四种模型的判据。

AIC = aicbic([loggl1 loggl2 loggl3 loggl4],[np1 np2 np3 np4])
AIC =1×4103.× 1.4794 1.4396 1.4785 1.4537

根据此准则的最佳模型是无限制VAR(2)模型。还要注意,非限制VAR(4)模型的赤池信息比任何一个限制模型都低。基于此准则,无限制VAR(2)模型是最好的,其次是无限制VAR(4)模型。

要比较四个模型的预测与预测数据,使用预测.这个函数返回平均时间序列的预测,以及给出关于平均值的置信区间的误差协方差矩阵。这是一个样本外计算。

[FY1, FYCov1] =预测(EstMdl1、跳频、数据{idx:});[FY2, FYCov2] =预测(EstMdl2、跳频、数据{idx:});[FY3, FYCov3] =预测(EstMdl3、跳频、数据{idx:});[FY4, FYCov4] =预测(EstMdl4、跳频、数据{idx:});

为最佳拟合模型估计大约95%的预测区间。

extractMSE = @ (x)诊断接头(x) ';MSE = cellfun (extractMSE FYCov2,“UniformOutput”、假);SE =√cell2mat (MSE));YFI = 0 (fh EstMdl2.NumSeries 2);Yfi (:,: 1) = fy2 - 2* se;Yfi (:,:,2) = fy2 + 2* se;

这个图显示了在右边阴影区域的最佳拟合模型的预测。

图;j = 1: EstMdl2。NumSeries次要情节(3 1 j);h1 =情节(Data.Time ((end-49):结束),数据{(end-49):最终,j});持有;h2 =情节(Data.Time (idxF) FY2 (:, j));h3 =情节(Data.Time (idxF) YFI (j,: 1),“k——”);情节(Data.Time (idxF) YFI (: j 2),“k——”);标题(EstMdl2.SeriesNames {j});甘氨胆酸h =;填充([Data.Time (idxF (1) h.XLim (2 [2]) Data.Time (idxF (1))),...陈志强,王志强,王志强,等。“k”“FaceAlpha”, 0.1,“EdgeColor”“没有”);传奇((h1 h2 h3),“真正的”“预测”“95%的预测区间”...“位置”“西北”)举行结束

图中包含3个轴。标题为实际GDP的坐标轴1包含5个类型为line, patch的对象。这些对象代表True, Forecast, 95%的Forecast区间。标题M1的轴2包含5个类型为line, patch的对象。这些对象代表True, Forecast, 95%的Forecast区间。标题为3-mo T-bill的坐标轴3包含5个类型为line、patch的对象。这些对象代表True, Forecast, 95%的Forecast区间。

现在可以直接计算预测和数据之间的平方和误差。

Error1 = Data{idxF,:} - FY1;Error2 = Data{idxF,:} - FY2;Error3 = Data{idxF,:} - FY3;Error4 = Data{idxF,:} - FY4;SSerror1 = Error1(:)' * Error1(:);SSerror2 = Error2(:)' * Error2(:);SSerror3 = Error3(:)' * Error3(:);SSerror4 = Error4(:)' * Error4(:);图条([SSerror1 SSerror2 SSerror3 SSerror4],.5) ylabel(误差平方和甘氨胆酸)组(,“XTickLabel”...“AR2诊断接头的“AR2完整”“AR4诊断接头的“AR4完整”})标题(“预测误差平方和”

图中包含一个坐标轴。标题为Sum of Squared Forecast Errors的坐标轴包含一个bar类型的对象。

四种模型的预测性能相似。

完整的AR(2)模型似乎是最好和最简洁的适合。其模型参数如下:

总结(EstMdl2)
AR-Stationary 3d VAR(2)模型有效样本量:176估计参数数:21 LogLikelihood: -698.801 AIC: 1439.6 BIC:1506.18 Value StandardError TStatistic PValue __________ _____________ __________ __________ Constant(1) 0.34832 0.11527 3.0217 0.0025132 Constant(2) 0.55838 0.1488 3.7526 0.00017502 Constant(3) -0.45434 0.15245 -2.9803 0.0028793 AR{1}(1,1) 0.26252 0.07397 3.5491 0.00038661 AR{1}(2,1) -0.029371 0.095485 -0.3076 0.5839 AR{1}(3,1) 0.22324 0.0978242.2821 0.022484 AR{1}(1,2) -0.074627 0.054476 -1.3699 0.17071 AR{1}(2,2) 0.2531 0.070321 3.5992 0.00031915 AR{1}(3,2) -0.017245 0.072044 0.23936 0.81082 AR{1}(1,3) 0.032692 0.056182 0.58189 0.56064 AR{1}(2,3) -0.35827 0.072523 -4.94 7.8112e-07 AR{1}(3,3) -0.29179 0.0743 -3.9272 8.5943e-05 AR{2}(1,1) 0.21378 0.071283 2.9991 0.0027081-0.078493 0.092016 -0.85304 0.39364 AR{2}(3,1) 0.24919 0.094271 2.6433 0.0082093 AR{2}(1,2) 0.13137 0.051691 2.5415 0.011038 AR{2}(2,2) 0.38189 0.066726 5.7233 1.045e-08 AR{2}(3,2) 0.049403 0.068361 0.72269 0.46987 AR{2}(1,3) -0.22794 0.059203 -3.85 0.00011809 AR{2}(2,3) -0.0052932 0.076423 -0.069262 0.94478 AR{2}(3,3) -0.37109 0.078296 -4.7397创新相关矩阵:1.0000 0.0798 0.2174 0.0798 1.0000 -0.1202 0.2174 -0.1202 1.0000

预测的观察

你可以使用拟合的模型(EstMdl2)通过:

  • 调用预测经过最后几排YF

  • 用。模拟几个时间序列模拟

在这两种情况下,对预测进行转换,使其直接与原始时间序列相比较。

生成10个预测从拟合模型开始在最近的时间使用预测

[YPred, YCov] =预测(EstMdl2 10数据{idxF:});

通过撤销应用于原始数据的缩放和差分来转换预测。在使用之前,请确保在时间序列的开头插入最后的观察结果cumsum消除差异。并且,由于差分是在取对数之后发生的,所以在使用之前插入对数cumsum

YFirst = DataTable (idx, {“RGDP”“M1SL”“TB3MS”});EndPt = YFirst {,,};EndPt(: 1:2) =日志(EndPt (: 1:2));YPred (:, 1:2) = YPred (:, 1:2) / 100;%重新调节比例YPred = [EndPt;YPred];%准备累积YPred (: 1:3) = cumsum (YPred (: 1:3));YPred (: 1:2) = exp (YPred (: 1:2));fdates = dateshift (YFirst.Time(结束),“结束”“季”, 0:10);插入预测层位数字j = 1: EstMdl2。NumSeries次要情节(3 1 j)情节(fdates, YPred (:, j),“——b”)举行情节(YFirst。时间,YFirst {: j},“k”网格)title(EstMdl2.SeriesNames{j}) h = gca;fill([fdates(1) h. xlim ([2 2]) fdates(1)],h. xlim ([2 2])刘志强,刘志强,刘志强,等。“k”...“FaceAlpha”, 0.1,“EdgeColor”“没有”);持有结束

图中包含3个轴。标题为实际GDP的坐标轴1包含3个类型为line, patch的对象。标题M1的轴2包含3个类型为line, patch的对象。标题为3-mo T-bill的坐标轴3包含3个类型为line、patch的对象。

图中显示的外推为浅灰色预测地平线上的蓝色虚线,原始数据系列为纯黑色。

在这张图中,我们可以看到过去几年的预测与最新数据的关系。

YLast = YFirst(170年:,);数字j = 1: EstMdl2。NumSeries次要情节(3 1 j)情节(fdates, YPred (:, j),“b——”)举行情节(YLast。时间,YLast {: j},“k”网格)title(EstMdl2.SeriesNames{j}) h = gca;fill([fdates(1) h. xlim ([2 2]) fdates(1)],h. xlim ([2 2])刘志强,刘志强,刘志强,等。“k”...“FaceAlpha”, 0.1,“EdgeColor”“没有”);持有结束

图中包含3个轴。标题为实际GDP的坐标轴1包含3个类型为line, patch的对象。标题M1的轴2包含3个类型为line, patch的对象。标题为3-mo T-bill的坐标轴3包含3个类型为line、patch的对象。

预测显示实际GDP和M1增加,利率略有下降。然而,预测没有误差条。

或者,您可以从拟合的模型中生成10个预测,从使用最迟的时间开始模拟.该方法模拟了2000次时间序列,然后生成每个时段的均值和标准差。每个时期的偏差均值就是对那个时期的预测。

从拟合模型的最晚时间开始模拟一个时间序列。

rng (1);%的再现性YSim =模拟(EstMdl2 10“Y0”、数据{idxF:}“NumPaths”, 2000);

通过撤销应用于原始数据的缩放和差分来转换预测。在使用之前,请确保在时间序列的开头插入最后的观察结果cumsum消除差异。并且,由于差分是在取对数之后发生的,所以在使用之前插入对数cumsum

EndPt = YFirst {,,};日志(EndPt EndPt (1:2) = (1:2));YSim (1:2,::) = YSim (1:2,::) / 100;YSim = [repmat (EndPt [1, 2000]); YSim);YSim (1:3,::) = cumsum (YSim (: 1:3,:));YSim (1:2,::) = exp (YSim (:, 1:2,:));

计算每个系列的平均值和标准偏差,并绘制结果。图中黑色代表平均值,红色代表正/负1的标准差。

YMean =意味着(YSim, 3);YSTD =性病(YSim 0 3);数字j = 1: EstMdl2。NumSeries次要情节(3 1 j)情节(fdates, YMean (:, j),“k”网格)持有情节(YLast.Time (end-10:结束),YLast {end-10:结束,j},“k”) plot(fdates,YMean(:,j) + YSTD(:,j),“——r”) plot(fdates,YMean(:,j) - YSTD(:,j),“——r”) title(EstMdl2.SeriesNames{j}) h = gca;fill([fdates(1) h. xlim ([2 2]) fdates(1)],h. xlim ([2 2])刘志强,刘志强,刘志强,等。“k”...“FaceAlpha”, 0.1,“EdgeColor”“没有”);持有结束

图中包含3个轴。标题为实际GDP的坐标轴1包含5个类型为line, patch的对象。标题M1的轴2包含5个类型为line, patch的对象。标题为3-mo T-bill的坐标轴3包含5个类型为line、patch的对象。

图中显示了GDP的增长,M1的温和或微弱的增长,以及国债利率方向的不确定性。

另请参阅

对象

功能

相关的话题