Перекрестная проверка временных рядов в R: использование tsCV () с tslm () - множественная модель - PullRequest
0 голосов
/ 07 декабря 2018

Как реакция на: Перекрестная проверка временных рядов в R: использование tsCV () с tslm () - Модели Я пытался использовать его с несколькими переменными предикторами, я создал их матрицу, но это не такработает.

    fcTslm <- function(y, h, xreg)
{
if(NROW(xreg) < length(y) + h)
stop("Not enough xreg data for forecasting")
X <- head(xreg, length(y))
fit <- tslm(y ~ X)
X <- subset(xreg, start=length(y)+1, end=length(y)+h)
forecast(fit, newdata=X)
}

> pred <- ts(cbind(rnorm(length(AirPassengers)),rnorm(length(AirPassengers))), start=start(AirPassengers),
+            frequency=frequency(AirPassengers))


> tsCV(AirPassengers, fcTslm, xreg=matrix(pred,ncol=2))
     Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1949  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
1950  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
1951  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
1952  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
1953  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
1954  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
1955  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
1956  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
1957  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
1958  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
1959  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
1960  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA

Как я могу заставить его работать?

1 Ответ

0 голосов
/ 14 декабря 2018
function(y, h, xreg)
{
  X <- xreg[1:length(y),]
  if(NROW(xreg) < length(y) + h)
    stop("Not enough xreg data for forecasting")
  newX <- xreg[length(y)+(1:h),]
  fit <- tslm(y ~ X)
  forecast(fit, newdata=newX)
}

tsCV(AirPassengers, fcTSLM, xreg=matrix(pred,ncol=1))
...