主要内容

VAR模型案例研究

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

案例研究概述

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

  • 加载和转换数据以实现平稳性

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

  • 让几个模型

  • 将模型与数据进行拟合

  • 决定哪种型号最好

  • 根据最佳模型进行预测

加载和转换数据

该文件数据模型随附计量经济学工具箱™ 软件。该文件以表格形式包含圣路易斯联邦储备银行经济数据(FRED)数据库中的时间序列。本例使用三个时间序列:

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

  • 货币供应量(M1SL)

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

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

负载数据模型DataTable.RGDP=DataTable.GDP./DataTable.GDPDEF*100;

绘制数据以寻找趋势。

图次要情节(3、1、1)的阴谋(DataTable.Time DataTable.RGDP,“r”);标题(“实际GDP”网格)在…上次要情节(3、1、2);情节(DataTable.Time DataTable.M1SL,“b”);标题(“M1”网格)在…上次要情节(3,1,3);情节(DataTable.Time DataTable.TB3MS,“k”)标题(“三个月期国库券”网格)在…上

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

实际GDP和M1数据似乎呈指数增长,而国库券收益率没有呈指数增长。为了抵消实际GDP和M1的趋势,取数据对数的差值。此外,通过取第一个差值来稳定国库券序列。同步日期序列,使数据中每个co的行数相同立柱。

rgdpg=price2ret(DataTable.RGDP);m1slg=price2ret(DataTable.M1SL);dtb3ms=diff(数据表TB3MS);数据=阵列时间表([rgdpg m1slg dtb3ms],...“RowTimes”DataTable.Time(2:结束),“VariableNames”,{“RGDP”“M1SL”“TB3MS”});图子地块(3,1,1)图(Data.Time,Data.RGDP,“r”);标题(“实际GDP”网格)在…上次要情节(3、1、2);绘图(Data.Time、Data.M1SL、,“b”);标题(“M1”网格)在…上次要情节(3,1,3);情节(Data.Time Data.TB3MS,“k”),标题(“三个月期国库券”网格)在…上

图中包含3个轴对象。标题为Real 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”);传奇(“实际GDP”,“M1”,“三个月期国库券”); 持有

图中包含一个Axis对象。Axis对象包含3个line类型的对象。这些对象表示实际GDP、M1、3-mo T-bill。

选择和适合的模型

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

  • 带对角自回归的VAR(2)

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

  • VAR(4)与对角自回归

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

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

idx=all(~ismissing(Data),2);Data=Data(idx,:);

创建四个模型。

numseries = 3;dnan =诊断接头(nan (numseries, 1));seriesnames = {“实际GDP”,“M1”,“三个月期国库券”};VAR2diag = varm (“AR”,{dnan dnan},“系列名称”, seriesnames);VAR2full = varm (numseries 2);VAR2full。SeriesNames = SeriesNames;VAR4diag = varm (“AR”{dnan dnan dnan dnan},“系列名称”,系列名称);VAR4full=varm(numseries,4);VAR4full.SeriesNames=SeriesNames;

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

要评估模型的质量,请创建指数向量,将响应数据分为三个阶段:预采样、估计和预测。将模型与估计数据进行拟合,使用预采样阶段提供滞后数据。将拟合模型的预测与预测数据进行比较。估计周期为样本,预测周期为ecast周期不在样本范围内(也称为val).

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

idxPre=1:4;T=ceil(.9*size(数据,1));idxEst=5:T;idxF=(T+1):size(数据,1);fh=numel(idxF);

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

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

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

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

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

检查模型充分性

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

EstMdl1.说明
ans=“AR平稳三维VAR(2)模型”
EstMdl2。描述
ans=“AR平稳三维VAR(2)模型”
EstMdl3.说明
ans = "AR-Stationary 3d VAR(4) Model"
EstMdl4.说明
ans = "AR-Stationary 3d VAR(4) Model"

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

您可以使用限制性(对角线)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.
拒收3=lratiotest(logL4、logL3、np4-np3)
拒绝3=必然的1.
rratiotest (loggl4, loggl2,np4 - np2)
拒绝4=必然的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([logL1 logL2 logL3 logL4],[np1 np2 np3 np4])
艾克=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)diag(x)”;MSE=cellfun(extractMSE,FYCov2,“UniformOutput”,假);SE=sqrt(cell2mat(MSE));YFI=零(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=绘图(数据时间(idxF),FY2(:,j));h3=绘图(数据时间(idxF),YFI(:,j,1),“k——”);情节(Data.Time (idxF) YFI (: j 2),“k——”);title(EstMdl2.SeriesNames{j});h=gca;fill([Data.Time(idxF(1))h.XLim([22])Data.Time(idxF(1))],...陈志强,王志强,王志强,等。“k”,“FaceAlpha”,0.1,“EdgeColor”,“没有”); 图例([h1 h2 h3],“真正的”,“预测”,“95%的预测区间”,...“位置”,“西北”)持有;终止

图中包含3个轴对象。标题为Real GDP的轴对象1包含5个line、patch类型的对象。这些对象表示True、Forecast、95%的预测间隔。标题为M1的轴对象2包含5个line、patch类型的对象。这些对象表示True、Forecast、95%的预测间隔。标题为3-mo T-bill的轴对象3包含5个o类型为line、patch的对象。这些对象表示True、Forecast和95%的预测间隔。

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

Error1=数据{idxF,:}-FY1;Error2=数据{idxF,:}-FY2;Error3=数据{idxF,:}-FY3;Error4=数据{idxF,:}-FY4;SSerror1=Error1(:)'*Error1(:);SSerror2=Error2(:)'*Error2(:);SSerror3=Error3(:);SSerror4=Error4(:)'*ERRORR2(:);图形栏([SSERRORSERRORSERRORR1],.5])(误差平方和)set(gca,“XTickLabel”,...{“AR2诊断”“AR2已满”“AR4诊断”“AR4完整”})头衔(“预测误差平方和”)

图中包含一个Axis对象。标题为预测误差平方和的Axis对象包含一个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:});

通过撤消应用于原始数据的缩放和差分来转换预测。确保在使用之前在时间序列的开头插入最后一个观测值累加撤消差分。并且,由于差分是在取对数之后发生的,所以在使用之前插入对数累加

YFirst=数据表(idx{“RGDP”“M1SL”“TB3MS”}); EndPt=YFirst{end,:};EndPt(:,1:2)=log(EndPt(:,1:2));YPred(:,1:2)=YPred(:,1:2)/100;%重新调节比例YPred = [EndPt;YPred];%为康苏姆做准备YPred(:,1:3)=积数(YPred(:,1:3));YPred(:,1:2)=经验(YPred(:,1:2));fdates=dateshift(YFirst.Time(end),“结束”,“季”, 0:10);插入预测层位数字对于j = 1: EstMdl2。NumSeries次要情节(3 1 j)情节(fdates, YPred (:, j),“--b”)持有在…上绘图(YFirst.Time,YFirst{:,j},“k”网格)在…上标题(EstMdl2.SeriesNames{j})h=gca;填充([fdates(1)h.XLim([2 2])fdates(1)],h.YLim([1 1 2]),“k”,...“FaceAlpha”,0.1,“EdgeColor”,“没有”); 持有终止

图中包含3个轴对象。标题为Real 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.Time,YLast{:,j},“k”网格)在…上标题(EstMdl2.SeriesNames{j})h=gca;填充([fdates(1)h.XLim([2 2])fdates(1)],h.YLim([1 1 2]),“k”,...“FaceAlpha”,0.1,“EdgeColor”,“没有”); 持有终止

图中包含3个轴对象。标题为Real 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);

通过撤消应用于原始数据的缩放和差分来转换预测。确保在使用之前在时间序列的开头插入最后一个观测值累加撤消差分。并且,由于差分是在取对数之后发生的,所以在使用之前插入对数累加

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:end),YLast{end-10:end,j},“k”) plot(fdates,YMean(:,j) + YSTD(:,j),“--r”)绘图(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的适度至小幅增长以及国库券利率方向的不确定性。

另见

物体

功能

相关话题