我正在尝试使用varsR中的包来学习矢量自回归模型.这个包没有任何方法来测量返回模型的准确性.
具体来说,我想使用R中包中accuracy函数中定义的MASE forecast,将VAR预测与每个组件时间序列上使用Arima模型的预测进行比较(我使用了4个可能相关的时间序列).accuracy无法识别varest返回的对象vars.如何获取每个预测组件的MASE?我想计算样本内和样本外的准确度
代码示例:
library(vars)
library(forecast)
data(Canada)
v<- VAR(window(Canada, end=c(1998,4)), p=2)
accuracy(v$varresult[[1]])
Run Code Online (Sandbox Code Playgroud)
参数accuracy是一个lm对象,并返回系列1的训练精度:
ME RMSE MAE MPE MAPE MASE
Training set 1.536303e-15 0.3346096 0.2653946 -1.288309e-05 0.0281736 0.03914555
Run Code Online (Sandbox Code Playgroud)
我希望使用类似的东西来获得样本外的测试精度(不完全是这样,因为需要指定预测期):
accuracy(v$varresult[[1]], window(Canada[,1], start=c(1999,1)))
Run Code Online (Sandbox Code Playgroud)
但是lm对象不支持这种情况并返回错误
Error in testaccuracy(f, x, test) : Unknown list structure
Run Code Online (Sandbox Code Playgroud)
如果我直接使用这些值如下,我没有得到MASE,它需要有关训练集的信息.这也容易出现一个错误,因为使用了值而不是ts对象,因为它们accuracy将直接匹配存储的时间:
p<-predict(v, n.ahead=8)
accuracy(p$fcst[[1]][,"fcst"],window(Canada[,1], start=c(1999,1)))
ME RMSE MAE MPE MAPE ACF1 Theil's U
Test set -0.1058358 0.8585455 0.7385238 -0.01114099 0.07694492 0.5655117 1.359761 …Run Code Online (Sandbox Code Playgroud)