window.default(x, ...) 中的错误:'start' 不能在 'end' 之后,在 R 中的 VAR 模型的交叉验证期间

Error in window.default(x, ...) : 'start' cannot be after 'end' during cross-validation of VAR model in R

我有一个包含不同数据的数据框。

数据的格式为 [1] "mts" "ts" "matrix"(也试过 "mts" "ts")。

数据从 2008 年 3 月到 2020 年 8 月(总共 150 个值)。

chicago_diff11 数据帧的样本 dput 如下:

structure(c(-4000, 3000, 1000, 5000, 3500, -3500, 0.0499999999999998, 
-0.0499999999999998, 0.12, 0.28, 0.109999999999999, 0.0500000000000007
), .Dim = c(6L, 2L), .Dimnames = list(NULL, c("Median_price_ts_diff1", 
"Average_rate_ts_diff1")), .Tsp = c(2008.16666666667, 2008.58333333333, 
12), class = c("mts", "ts", "matrix"))

我正在尝试复制 this question 中的代码。

我当前的代码看起来像

# Forecast horizon
j <- 12

# Length of minimum training set
k <- nrow(chicago_diff11) - j 

# Create actual and prediction
prediction <- data.frame()
actual <- data.frame()

for (i in j) { 
  trainingset <- window(chicago_diff11, end = k+i-1)
  testset <- window(chicago_diff11, start = k-j+i+1, end = k+j)
  fit <- VAR(trainingset, p = 10)                       
  fcast <- forecast(fit, h = j)
  fcastmean <- do.call('cbind', fcast[['mean']])
  fcastmean <- as.data.frame(fcastmean)

  prediction <- rbind(prediction, fcastmean)
  actual <- rbind(actual, as.data.frame(testset[,1]))
}

# add predictions and actual values
result <- cbind(prediction, actual[, 1])
names(result) <- c("Predicted", "Actual")
result$Difference <- abs(result$Actual - result$Predicted)

# Use Mean Absolute Error as Evalution 
summary(result$Difference)

但是这个函数失效了

Error in window.default(x, ...) : 'start' cannot be after 'end'

我的数据结构和原题一样。我错过了什么,在哪里错过了什么?谢谢!

您对 window 函数的 end/start 的说明是错误的。请参阅下面的示例。

window(chicago_diff11, end = c(2008, 7))
         Median_price_ts_diff1 Average_rate_ts_diff1
Mar 2008                 -4000                  0.05
Apr 2008                  3000                 -0.05
May 2008                  1000                  0.12
Jun 2008                  5000                  0.28
Jul 2008                  3500                  0.11