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
我有一个包含不同数据的数据框。
数据的格式为 [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