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