R语言向量自回归模型(VAR)及其实现
澳大利亚在2008 - 2009年全球金融危机期间发生了这种情况。澳大利亚政府发布了一揽子刺激计划,其中包括2008年12月的现金支付,恰逢圣诞节支出。因此,零售商报告销售强劲,经济受到刺激。因此,收入增加了。
VAR面临的批评是他们是理论上的; 也就是说,它们不是建立在一些经济学理论的基础上,这些理论强加了方程式的理论结构。假设每个变量都影响系统中的每个其他变量,这使得估计系数的直接解释变得困难。尽管如此,VAR在几种情况下都很有用:
预测相关变量的集合,不需要明确的解释;
测试一个变量是否有助于预测另一个变量(格兰杰因果关系检验的基础);
脉冲响应分析,其中分析了一个变量对另一个变量的突然但暂时的变化的响应;
预测误差方差分解,其中每个变量的预测方差的比例归因于其他变量的影响。
示例:用于预测美国消费的VAR模型
AIC(n) HQ(n) SC(n) FPE(n)\n#> 5 1 1 5","classes":{"has":1},"lang":""}" data-cke-widget-upcasted="1" data-cke-widget-keep-attr="0" data-widget="codeSnippet"> VARselect(uschange[,1:2], lag.max=8, type="const")[["selection"]] #> AIC(n) HQ(n) SC(n) FPE(n) #> 5 1 1 5
need-to-insert-img
R输出显示由vars包中可用的每个信息标准选择的滞后长度。由AIC选择的VAR(5)与BIC选择的VAR(1)之间存在很大差异。因此,我们首先拟合由BIC选择的VAR(1)。
<-VAR(uschange[,1:2], p=1, type=\"const\")\nserial.test(var1, lags.pt=10, type=\"PT.asymptotic\")\nvar2 <-VAR(uschange[,1:2], p=2, type=\"const\")\nserial.test(var2, lags.pt=10, type=\"PT.asymptotic\")","classes":{"has":1}}" data-cke-widget-upcasted="1" data-cke-widget-keep-attr="0" data-widget="codeSnippet">var1 <-VAR(uschange[,1:2], p=1, type="const") serial.test(var1, lags.pt=10, type="PT.asymptotic") var2 <-VAR(uschange[,1:2], p=2, type="const") serial.test(var2, lags.pt=10, type="PT.asymptotic")
need-to-insert-img
与单变量ARIMA方法类似,我们使用Portmanteau测试24测试残差是不相关的。VAR(1)和VAR(2)都具有一些残余序列相关性,因此我们拟合VAR(3)。
<-VAR(uschange[,1:2], p=3, type=\"const\")\nserial.test(var3, lags.pt=10, type=\"PT.asymptotic\")\n#>\n#> Portmanteau Test (asymptotic)\n#>\n#> data: Residuals of VAR object var3\n#> Chi-squared = 34, df = 28, p-value = 0.2","classes":{"has":1}}" data-cke-widget-upcasted="1" data-cke-widget-keep-attr="0" data-widget="codeSnippet">var3 <-VAR(uschange[,1:2], p=3, type="const") serial.test(var3, lags.pt=10, type="PT.asymptotic") #> #> Portmanteau Test (asymptotic) #> #> data: Residuals of VAR object var3 #> Chi-squared = 34, df = 28, p-value = 0.2
need-to-insert-img
该模型的残差通过了串联相关的测试。VAR(3)生成的预测如图所示。
%\nautoplot() +xlab(\"Year\")","classes":{"has":1}}" data-cke-widget-upcasted="1" data-cke-widget-keep-attr="0" data-widget="codeSnippet">forecast(var3) %>% autoplot() +xlab("Year")
need-to-insert-img