时间序列R中的交叉验证:使用tsCm()和tslm() - 模型

时间:2018-05-09 14:30:30

标签: r cross-validation forecasting

我目前正在尝试使用时间序列交叉验证来评估tslm模型。我想使用一个固定的模型(没有参数重新估计),看一下去年评估期的1到3步前景预测。

我无法从预测库中获取mysqli_real_escape_stringtsCV以便一起使用。我错过了什么?

tslm

我有一种感觉,tc39/proposal-async-iteration#103是相关的。我如何将其应用于上述场景?

1 个答案:

答案 0 :(得分:2)

对于时间序列交叉验证,您应该为每个训练集拟合一个单独的模型,而不是传递现有模型。对于预测变量,函数需要能够在拟合每个模型时获取相关元素,并在生成预测时获取其他元素。

以下内容可行。

fc <- function(y, h, xreg)
{
  if(NROW(xreg) < length(y) + h)
    stop("Not enough xreg data for forecasting")
  X <- xreg[seq_along(y),]
  fit <- tslm(y ~ X)
  X <- xreg[length(y)+seq(h),]
  forecast(fit, newdata=X)
}

# Predictors of the same length as the data
# and with the same time series characteristics.    
pred <- ts(rnorm(length(AirPassengers)), start=start(AirPassengers),
           frequency=frequency(AirPassengers))

# Now pass the whole time series and the corresponding predictors 
tsCV(AirPassengers, fc, xreg=pred)

如果您有多个预测变量,那么xreg应该是一个矩阵。