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



作为对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

我怎样才能使它工作?

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))

相关内容

  • 没有找到相关文章

最新更新