在我的R VAR模型中,我';我得到一个恒定的错误,即使每次迭代之间数据都在变化

在我的R VAR模型中,我';我得到一个恒定的错误,即使每次迭代之间数据都在变化,r,statistics,R,Statistics,我有以下R代码: library(lubridate) library(vars) library(tidyverse) library(Metrics) library(quantmod) df = read.csv('oil-data.csv') ## Horizon is the number of months in advance we're trying to predict horizon = 3 forecast_date <- ymd(df$date) month(fo

我有以下R代码:

library(lubridate)
library(vars)
library(tidyverse)
library(Metrics)
library(quantmod)

df = read.csv('oil-data.csv')
## Horizon is the number of months in advance we're trying to predict
horizon = 3
forecast_date <- ymd(df$date)
month(forecast_date) <- month(forecast_date) + horizon
forecast <- data.frame(
    forecastDate = forecast_date,
    actual = df$actual
)
varStart <- 72
VarData = df[, c("delta_production", "rea", "wti", "delta_inventories")]
## deflating the oil cost by the log of US CPI
VarData$wti = log(VarData$wti)
var_forecast <- rep(NA, nrow(df) - varStart + 1)
for (i in varStart:nrow(df)) {
    ## p value taken from Kilian and Murphy (2013)
    varModel <- VAR(VarData[1:i, ], p = 12, type="const")
    temp_var_forecast <- predict(varModel, n.ahead = horizon)
    oil_h <- exp(temp_var_forecast["fcst"]$fcst$wti[1])
    var_forecast[i - varStart + 1] <- oil_h
}
forecast = forecast[varStart:nrow(df),]
forecast$predicted = var_forecast
forecast$error <- mse(forecast$actual, forecast$predicted)
print(min(forecast$error))
print(mean(forecast$error))
print(max(forecast$error))
库(lubridate)
图书馆(vars)
图书馆(tidyverse)
图书馆(指标)
图书馆(quantmod)
df=read.csv('oil-data.csv'))
##地平线是我们试图预测的提前月数
地平线=3

forecast_date我将此交叉发布到,因为我不确定错误是统计错误还是基于代码的错误。请求帮助时,请发布带有示例输入数据的,以便我们可以运行和验证您的代码。这使帮助你变得容易多了。听起来不错。我将添加一个可复制的示例。正如我在这篇文章的CV版本中提到的,您显示的代码是不完整的,因为它不允许我们找出
forecast$actual
forecast$predicted
的来源,或者它们可能有什么问题。特别是,它们在循环中没有被修改,这可能是你的问题。对不起,我在编辑这篇文章的时候打错了。我在循环结束时设置了
forecast$predicted
,在循环开始前设置了
forecast$actual