主要内容

预测

预测向量自回归(VAR)模型反应

描述

例子

Y=预测(Mdl,numperiods,Y0)返回路径的最小均方误差(MMSE)预测(Y)的长度numperiods预测地平线使用VAR(指定的完全p)模型Mdl。预测的反应代表presample数据的延续Y0

例子

Y=预测(Mdl,numperiods,Y0,名称,值)使用附加选项指定一个或多个名称参数。例如,您可以指定未来的外生因素数据或包括未来反应条件的预测。

例子

(Y,YMSE)=预测(<年代pan class="argument_placeholder">___)返回相应的均方误差(MSE)的每个预测响应使用任何输入参数在前面的语法。

例子

全部折叠

VAR(4)模型适合消费者价格指数(CPI)和失业率数据。然后,无条件的MMSE估计反应的预测模型。

加载Data_USEconModel数据集。

负载<年代pan style="color:#A020F0">Data_USEconModel

画出两个系列在不同的情节。

图;情节(DataTable.Time DataTable.CPIAUCSL);标题(<年代pan style="color:#A020F0">“消费者价格指数”);ylabel (<年代pan style="color:#A020F0">“指数”);包含(<年代pan style="color:#A020F0">“日期”);

图;情节(DataTable.Time DataTable.UNRATE);标题(<年代pan style="color:#A020F0">“失业率”);ylabel (<年代pan style="color:#A020F0">“百分比”);包含(<年代pan style="color:#A020F0">“日期”);

稳定的CPI将它转换为一系列的增长率。同步的两个系列通过删除第一个观察失业率系列。

rcpi = price2ret (DataTable.CPIAUCSL);unrate = DataTable.UNRATE(2:结束);Data = array2timetable ([rcpi unrate),<年代pan style="color:#A020F0">“RowTimes”DataTable.Time(2:结束),<年代pan style="color:#0000FF">…“VariableNames”,{<年代pan style="color:#A020F0">“rcpi”,<年代pan style="color:#A020F0">“unrate”});

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

Mdl = varm (2、4);

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

Data.Variables EstMdl =估计(Mdl);

EstMdl是一个完全指定,估计varm模型对象。

从估计模型预测反应在三年的地平线。整个数据集指定为presample观察。

numperiods = 12;Y0 = Data.Variables;Y =预测(EstMdl numperiods, Y0);

Y是一个12-by-2矩阵的预测反应。第一和第二列包含模拟CPI增长率和失业率,分别。

情节预测反应和过去50真实的反应。

跳频= dateshift (Data.Time(结束),<年代pan style="color:#A020F0">“结束”,<年代pan style="color:#A020F0">“季”1:12);图;h1 =情节(Data.Time ((end-49):结束),Data.rcpi ((end-49):结束);持有<年代pan style="color:#A020F0">在;h2 =情节(fh, Y (: 1));标题(<年代pan style="color:#A020F0">CPI增长的);ylabel (<年代pan style="color:#A020F0">“增长率”);包含(<年代pan style="color:#A020F0">“日期”);甘氨胆酸h =;填充([Data.Time(结束)跳频([结束结束])Data.Time(结束)],h。YLim ([1 1 2 2]),<年代pan style="color:#A020F0">“k”,<年代pan style="color:#0000FF">…“FaceAlpha”,0.1,<年代pan style="color:#A020F0">“EdgeColor”,<年代pan style="color:#A020F0">“没有”);传奇((h1 h2),<年代pan style="color:#A020F0">“真正的”,<年代pan style="color:#A020F0">“预测”)举行<年代pan style="color:#A020F0">从;

图;h1 =情节(Data.Time ((end-49):结束),Data.unrate ((end-49):结束);持有<年代pan style="color:#A020F0">在;h2 =情节(fh, Y (:, 2));标题(<年代pan style="color:#A020F0">“失业率”);ylabel (<年代pan style="color:#A020F0">“百分比”);包含(<年代pan style="color:#A020F0">“日期”);甘氨胆酸h =;填充([Data.Time(结束)跳频([结束结束])Data.Time(结束)],h。YLim ([1 1 2 2]),<年代pan style="color:#A020F0">“k”,<年代pan style="color:#0000FF">…“FaceAlpha”,0.1,<年代pan style="color:#A020F0">“EdgeColor”,<年代pan style="color:#A020F0">“没有”);传奇((h1 h2),<年代pan style="color:#A020F0">“真正的”,<年代pan style="color:#A020F0">“预测”,<年代pan style="color:#A020F0">“位置”,<年代pan style="color:#A020F0">“西北”)举行<年代pan style="color:#A020F0">从;

估计4向量自回归模型包括外生因素(VARX(4))的消费者价格指数(CPI),失业率,国内生产总值(GDP)。包括线性回归组件包含当前季度和过去四个季度的政府消费支出和投资(GCE)。从估计的模型预测的反应路径。

加载Data_USEconModel数据集,计算出实际国内生产总值。

负载<年代pan style="color:#A020F0">Data_USEconModel数据表。RGDP = DataTable.GDP. / DataTable.GDPDEF * 100;

情节所有变量在不同的情节。

图;次要情节(2、2、1)情节(DataTable.Time DataTable.CPIAUCSL);ylabel (<年代pan style="color:#A020F0">“指数”);标题(<年代pan style="color:#A020F0">“消费者价格指数”);次要情节(2 2 2)情节(DataTable.Time DataTable.UNRATE);ylabel (<年代pan style="color:#A020F0">“百分比”);标题(<年代pan style="color:#A020F0">“失业率”);次要情节(2,2,3)情节(DataTable.Time DataTable.RGDP);ylabel (<年代pan style="color:#A020F0">“输出”);标题(<年代pan style="color:#A020F0">“实际国内生产总值(gdp)”);次要情节(2,2,4)情节(DataTable.Time DataTable.GCE);ylabel (<年代pan style="color:#A020F0">数十亿美元的);标题(<年代pan style="color:#A020F0">“政府支出”);

稳定CPI, GDP,全球教育运动将每个转换为一系列的增长率。同步失业率系列与其他通过删除第一次观察。

数据源= {<年代pan style="color:#A020F0">“CPIAUCSL”“RGDP”“全球教育运动”};Data = varfun (@price2ret DataTable,<年代pan style="color:#A020F0">“数据源”、数据源);Data.Properties。VariableNames =数据源;数据。UNRATE = DataTable.UNRATE(2:结束);

GCE率系列扩展到一个矩阵,其中包括它的当前值,通过四个滞后值。删除全球教育运动变量的数据

rgcelag4 = lagmatrix (Data.GCE, 0:4);数据。全球教育运动=(];

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

Mdl = varm (3、4);Mdl.SeriesNames=(<年代pan style="color:#A020F0">“rcpi”“unrate”“rgdpg”];

估计模型使用最后三年的数据。指定GCE矩阵作为回归数据组件。

bfh = Data.Time(结束)年(3);estIdx =数据。时间< bfh;EstMdl =估计(Mdl、数据{estIdx:}<年代pan style="color:#A020F0">“X”rgcelag4 (estIdx:));

季度的预测路径响应三年后的未来。

Y0 = {estIdx:}数据;Y =预测(EstMdl 12数据{estIdx:},<年代pan style="color:#A020F0">“X”rgcelag4 (~ estIdx:));

Y是一个12-by-3矩阵模拟响应。列对应于CPI增长率,失业率和实际GDP增长率。

情节预测反应和过去50真实的反应。

图;<年代pan style="color:#0000FF">为j = 1: Mdl。NumSeries次要情节(2,2,j) h1 =情节(Data.Time ((end-49):结束),数据{(end-49):最终,j});持有<年代pan style="color:#A020F0">在;h2 =情节(Data.Time (~ estIdx), Y (:, j));标题(Mdl.SeriesNames {j});甘氨胆酸h =;填充([bfh h。XLim([2 2]) bfh],h.YLim([1 1 2 2]),<年代pan style="color:#A020F0">“k”,<年代pan style="color:#0000FF">…“FaceAlpha”,0.1,<年代pan style="color:#A020F0">“EdgeColor”,<年代pan style="color:#A020F0">“没有”);持有<年代pan style="color:#A020F0">从;<年代pan style="color:#0000FF">结束hl =传奇((h1 h2),<年代pan style="color:#A020F0">“数据”,<年代pan style="color:#A020F0">“预测”);霍奇金淋巴瘤。位置= (0.6 - 0.25 hl.Position (3:4)];

分析预测精度使用预测间隔在三年的地平线。这个例子之前,从预测无条件响应系列VAR模型(4)

加载Data_USEconModel数据集和数据进行预处理。

负载<年代pan style="color:#A020F0">Data_USEconModelrcpi = price2ret (DataTable.CPIAUCSL);unrate = DataTable.UNRATE(2:结束);Data = array2timetable ([rcpi unrate),<年代pan style="color:#A020F0">“RowTimes”DataTable.Time(2:结束),<年代pan style="color:#0000FF">…“VariableNames”,{<年代pan style="color:#A020F0">“rcpi”,<年代pan style="color:#A020F0">“unrate”});

估计一个VAR(4)模型的两个反应级数。保留最后三年的数据。

bfh = Data.Time(结束)年(3);estIdx =数据。时间< bfh;Mdl = varm (2、4);EstMdl =估计(Mdl、数据{estIdx:});

从估计模型预测反应在三年的地平线。整个数据集指定为presample观察。返回的MSE的预测。

numperiods = 12;Y0 = {estIdx:}数据;[Y, YMSE] =预测(EstMdl numperiods, Y0);

Y是一个12-by-2矩阵的预测反应。YMSE是一个12-by-1细胞相应的均方误差矩阵的向量。

从矩阵中提取主对角线元素的每一个细胞YMSE。应用结果的平方根获得标准错误。

extractMSE = @ (x)诊断接头(x) ';MSE = cellfun (extractMSE YMSE,<年代pan style="color:#A020F0">“UniformOutput”、假);SE =√cell2mat (MSE));

估计大约95%的预估区间为每个反应级数。

YFI = 0 (numperiods Mdl.NumSeries 2);YFI (:: 1) = Y - 2 * SE;YFI (:: 2) = Y + 2 * SE;

情节预测反应和过去50真实的反应。

图;h1 =情节(Data.Time ((end-49):结束),Data.rcpi ((end-49):结束);持有<年代pan style="color:#A020F0">在;h2 =情节(Data.Time (~ estIdx), Y (: 1));h3 =情节(Data.Time (~ estIdx) YFI (:, 1, 1),<年代pan style="color:#A020F0">“k——”);情节(Data.Time (~ estIdx) YFI (:, 1, 2),<年代pan style="color:#A020F0">“k——”);标题(<年代pan style="color:#A020F0">CPI增长的);ylabel (<年代pan style="color:#A020F0">“增长率”);包含(<年代pan style="color:#A020F0">“日期”);甘氨胆酸h =;填充([bfh h。XLim([2 2]) bfh],h.YLim([1 1 2 2]),<年代pan style="color:#A020F0">“k”,<年代pan style="color:#0000FF">…“FaceAlpha”,0.1,<年代pan style="color:#A020F0">“EdgeColor”,<年代pan style="color:#A020F0">“没有”);传奇((h1 h2 h3),<年代pan style="color:#A020F0">“真正的”,<年代pan style="color:#A020F0">“预测”,<年代pan style="color:#A020F0">“95%的预测区间”,<年代pan style="color:#0000FF">…“位置”,<年代pan style="color:#A020F0">“西北”)举行<年代pan style="color:#A020F0">从;

图;h1 =情节(Data.Time ((end-49):结束),Data.unrate ((end-49):结束);持有<年代pan style="color:#A020F0">在;h2 =情节(Data.Time (~ estIdx), Y (:, 2));h3 =情节(Data.Time (~ estIdx) YFI (:, 2, 1),<年代pan style="color:#A020F0">“k——”);情节(Data.Time (~ estIdx) YFI (:, 2, 2),<年代pan style="color:#A020F0">“k——”);标题(<年代pan style="color:#A020F0">“失业率”);ylabel (<年代pan style="color:#A020F0">“百分比”);包含(<年代pan style="color:#A020F0">“日期”);甘氨胆酸h =;填充([bfh h。XLim([2 2]) bfh],h.YLim([1 1 2 2]),<年代pan style="color:#A020F0">“k”,<年代pan style="color:#0000FF">…“FaceAlpha”,0.1,<年代pan style="color:#A020F0">“EdgeColor”,<年代pan style="color:#A020F0">“没有”);传奇((h1 h2 h3),<年代pan style="color:#A020F0">“真正的”,<年代pan style="color:#A020F0">“预测”,<年代pan style="color:#A020F0">“95%的预测区间”,<年代pan style="color:#0000FF">…“位置”,<年代pan style="color:#A020F0">“西北”)举行<年代pan style="color:#A020F0">从;

输入参数

全部折叠

VAR模型,指定为一个varm创建的模型对象varm估计Mdl必须完全指定。

预测地平线,或时间点在预测期的数量,指定为一个正整数。

数据类型:

Presample反应预测,提供初始值指定为一个numpreobs——- - - - - -numseries数字矩阵或numpreobs——- - - - - -numseries——- - - - - -numprepaths数字数组。

numpreobs是presample观测的数量。numseries反应级数的数量(Mdl.NumSeries)。numprepathspresample反应路径的数量。

行对应presample观察,最后一行包含最新的观测。Y0必须包含至少Mdl.P行。如果你提供更多不必要的行,预测只使用最新的Mdl.P观察。

列必须对应响应系列名称Mdl.SeriesNames

页对应独立,独立的路径。

  • 如果你不指定YF名称-值对的论点预测初始化每个预测路径使用相应的页面(页面)Y0。因此,输出参数Ynumprepaths页面。

  • 如果你指定YF名称-值对的论点预测采取这些行动之一。

    • 如果Y0是一个矩阵,然后呢预测初始化每个预测路径(页面)YF使用Y0。因此,所有路径输出参数Y源于共同的初始条件。

    • 否则,预测适用于Y0 (:,:j)初始化预测路径jY0必须至少有numpaths页,预测只使用第一numpaths页面。

    在所有页面,观察同时出现在一个特定的行。

数据类型:

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:“X”, X, YF, YF使用矩阵X回归预测数据组件,矩阵YF部分称为未来反应条件的预测。

预测的时间序列预测模型中回归的组成部分,指定为逗号分隔组成的“X”和一个数字矩阵包含numpreds列。

numpreds预测变量的数量(大小(Mdl.Beta, 2))。

行对应于观测。行j包含了j提前预测。X必须至少有numperiods行。如果你提供更多不必要的行,预测只使用最早的numperiods观察。第一行包含最早的观察。

列对应个人预测变量。所有预测变量存在于每个响应方程的回归组件。

预测适用于X每条路径(页面);也就是说,X代表观察到的预测路径之一。

保持模型一致性预测地平线,这是一个很好的练习时指定预测预测Mdl有一个回归组件。

默认情况下,预测排除了回归组件,无论它的存在Mdl

数据类型:

未来的多元反应级数条件预测,指定为逗号分隔组成的“。”和一个数字矩阵或三维数组包含numseries列。

在预测地平线行对应于观测,第一行是最早的观察。具体地说,行j在样本路径k(YF (j:,k))包含的响应j时间进入未来。YF必须至少有numperiods行预测地平线。如果你提供更多不必要的行,预测只使用第一numperiods行。

列对应变量的响应Y0

页面对应样本路径。具体来说,路径k(YF (:,:k))捕获状态,或知识、反应级数的发展从过去presample (Y0)进入未来。

  • 如果YF是一个矩阵,然后呢预测适用于YF每一个numpaths输出路径(见Y0)。

  • 否则,YF必须至少有numpaths页面。如果你提供更多不必要的页面,预测只使用第一numpaths页面。

的元素YF可以数字标量或缺失值(显示值)。预测将数字标量视为确定性提前知道未来的反应,例如,制定的政策。预测对相应的预测响应值条件已知的值。

默认情况下,YF是一个数组组成的吗值表示一个完整的缺乏知识的未来状态的响应预测地平线。在这种情况下,预测传统MMSE估计预测。

更多细节,请参阅算法

例子:考虑预测一条路径反应VAR模型由四个系列的三个时期进入未来。假设您有先验知识对未来的一些值的反应,和你想预测未知的反应条件在你的知识。指定YF包含值,你知道,作为一个矩阵和使用值你不知道但是想预测。例如,“YF”,[南2 5南;南南0.1南;南南南南)指定你没有知识的第一和第四的未来值响应系列;你知道时期1的值在第二反应级数,但没有其他的价值;你知道时间的值1和2在第三系列反应,但不是时期3的值。

数据类型:

请注意

Y0X显示缺失值。预测从数据中删除缺失值list-wise删除。如果Y0是一个三维数组,然后呢预测执行这些步骤。

  1. 横向连接形成一个页面numpreobs——- - - - - -numpaths * numseries矩阵。

  2. 包含至少一个删除任何行连续数据。

失踪的观察,从多条路径的结果Y0可以从每个路径不同于获得的结果。

缺失值的X,预测从每个页面的删除相应的行YF。行删除后XYF,如果小于的行数numperiods,然后预测抛出一个错误。

输出参数

全部折叠

MMSE预测的多元反应系列,作为一个返回numobs——- - - - - -numseries数字矩阵或numobs——- - - - - -numseries——- - - - - -numpaths数字数组。Y代表了presample反应的延续Y0。行对应于观测,列对应于响应变量,和页面对应样本路径。行jj今后一段时间将预测。

如果您指定未来反应条件预测使用YF名称-值对的论点,然后的已知值YF出现在相同的位置Y。然而,Y包含预测的值丢失的观察YF

均方误差矩阵的预测反应Y,返回numperiods1细胞向量numseries——- - - - - -numseries数字矩阵。细胞的YMSE构成的时间序列预测误差协方差矩阵。细胞j包含了j今后一段时间将MSE矩阵。

YMSE对于所有路径是一样的。

因为预测对预测变量X外生和non-stochasticYMSE反映了误差协方差与自回归相关组件的输入模型Mdl只有。

算法

  • 预测估计使用方程无条件的预测

    y ^ t = Φ ^ 1 y ^ t 1 + + Φ ^ p y ^ t p + c ^ + δ ^ t + β ^ x t ,

    在哪里t= 1,…,numperiods预测过滤器的numperiods——- - - - - -numseries通过矩阵的新鲜感创新Mdl预测使用指定的presample创新(Y0)必要的地方。

  • 预测使用卡尔曼滤波器估计条件的预测。

    1. 预测代表了VAR模型Mdl作为一个(状态空间模型舰导弹没有观测误差模型对象)。

    2. 预测过滤器的预测数据YF通过状态方程模型。在期t在预测地平线,任何未知的响应

      y ^ t = Φ ^ 1 y ^ t 1 + + Φ ^ p y ^ t p + c ^ + δ ^ t + β ^ x t ,

      在哪里<年代pan class="inlineequation"> y ^ 年代 , 年代<t是过滤的估计y从时间年代在预测地平线。预测使用指定的presample值Y0期限前预测地平线。

    更多细节,请参阅过滤器[4],612 - 615页。

  • 的方式预测决定了numpaths,在输出参数的页面数量Y,取决于预测类型。

    • 如果你估计无条件的预测,这意味着你不指定名称-值对的论点YF,然后numpaths是输入参数的页面数量Y0

    • 如果你有条件的预测和估计Y0YF有超过一页,然后numpaths在数组的页面数量较少的页面。如果页面的数量Y0YF超过numpaths,然后预测只使用第一numpaths页面。

    • 如果你条件的预测和估计Y0YF有一个页面,然后呢numpaths在数组的页面数量最多的页面。预测使用数组每条路径的一页。

  • 预测设置时间的起源模型,包括线性时间趋势(t0)大小(Y0, 1)- - - - - -Mdl.P(删除后失踪的值)。因此,组件是时代的趋势t=t0+ 1,t0+ 2,…,t0+numobs。本公约的默认行为是一致的模型估计中估计删除第一个Mdl.P反应,减少了有效的样本大小。虽然预测显式地使用第一Mdl.Ppresample反应Y0初始化模型,观察的总数(不含缺失值)决定t0

引用

[1]<年代pan>汉密尔顿,詹姆斯D。时间序列分析。普林斯顿,纽约:普林斯顿大学出版社,1994年。

[2]<年代pan>约翰森,S。基于可能性推理在共合体向量自回归模型。牛津:牛津大学出版社,1995年。

[3]<年代pan>Juselius, K。共合体VAR模型。牛津:牛津大学出版社,2006年。

[4]<年代pan>Lutkepohl, H。新的多元时间序列分析的介绍。柏林:施普林格出版社,2005年。

版本历史

介绍了R2017a

另请参阅

对象

功能

  • |<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">