R:VAR模型精度误差

时间:2016-02-09 18:23:35

标签: r statistics arguments

我有两个问题。 (注意:问题的第一部分已在下面的评论中解决

  1. 首先,我试图根据Rob Hyndman的this tutorial确定VAR预测的平均绝对误差,并收到以下错误消息:

    Error in `-.default`(fcast[['mean']], dxnext) :
      non-numeric argument to binary operator
    

    我相信我已设法将其追踪到VAR的输出,这是非数字的,并且似乎导致了这个问题。

    有解决方法吗?

  2. 其次,此代码需要适用于双变量和多变量模型,因此我怀疑是否应该使用dx的{​​{1}}长度作为教程建议,或者其中一个变量的长度,因为这是表示给定时间范围的长度。问题在于n的长度以及在给定预测长度(在这种情况下为12)的循环中如何处理它。任何意见都将不胜感激。

  3. 以下是包含示例数据和所需包的代码,以便可以复制错误。

    dx

    修改

    以下代码似乎可以解决上述问题,但我仍然遇到有关如何处理输出的问题。

    我的直觉是它只记录循环的最后一次迭代,并且该迭代的预测范围延伸到未来(超出可用数据的范围)。

    正如我在上面提供的链接中部分解释的那样,代码尝试基于蓝色数据运行模型(参见下面的示例图片)并预测红色数据集,记录每个预测范围的平均误差,将其存储在数据帧,最后取所有迭代的平均误差。

    CV

    require("forecast")
    require("vars")
    
    x <- rnorm(70)
    y <- rnorm(70)
    
    dx <- cbind(x,y)
    dx <- as.ts(dx)
    
    # Forecast Accuracy
    k <- 58 # data length less forecast horison (as minimum)
    n <- length(dx)
    mae <- matrix(NA, n-k, 12)
    st <- tsp(dx)[1]+(k-2)/12
    
    for (i in 1:(n-k)) {
     dxshort <- window(dx, end=st+i/12)
     dxnext <- window(dx, start=st + (i+1)/12, end=st+(i+12)/12)
     fit <- VAR(dxshort, p = 2)
     fcast <- forecast(fit, h = 12)
     mae[i,1:length(dxnext)] <- abs(fcast[['mean']] - dxnext)
    }
    
    plot(1:12, colMeans(mae,na.rm = TRUE), type = "1", Col = 2, xlab = "horizon", ylab = "MAE")
    

0 个答案:

没有答案