我正在将ARIMAx模型拟合到我的时间序列数据。 “数据”包括“ Rate”作为结果,x1,x2和x3作为协变量,我已经使用Box-Cox变换对结果进行了变换。我的数据分为火车和测试集,我想用实际值而不是转换后的值预测测试集。我已完成以下操作:
data.train <- ts(data[1:24, ] , frequency = 4, start = c(2011, 4)
data.test <- ts(data[25:28, ], frequency = 4, start = c(2017, 4))
covariates <- c("x1", "x2", "x3")
xreg.train <- data.train[, covariates]
xreg.test <- data.test[, covariates]
outcome <- data.train[, "Rate"]
lambda <- BoxCox.lambda(outcome)
outcome.trans <- BoxCox(outcome, lambda)
fit <- auto.arima(outcome.trans, xreg = xreg.train, trace = TRUE, stepwise = FALSE, seasonal = TRUE)
现在我想用实际值而不是转换后的值预测测试集:
forecast.test <- predict(fit, newxreg = xreg.test, lambda = lambda)
现在问题是,此预测函数将生成转换后的值而不是实际值的预测。不用自己进行转换,如何获得实际值的预测。
答案 0 :(得分:2)
预测程序包将为您完成所有这一切。但是您需要使用forecast()
函数,而不是predict()
函数。
data.train <- ts(data[1:24,] ,frequency=4, start=c(2011,4)
data.test <- ts(data[25:28,], frequency=4, start=c(2017,4))
covariates <- c("x1","x2","x3")
xreg.train <- data.train[, covariates]
xreg.test <- data.test[, covariates]
outcome <- data.train[,"Rate"]
lambda <- BoxCox.lambda(outcome)
fit<- auto.arima(outcome, xreg=xreg.train, lambda=lambda,
trace=TRUE, stepwise=FALSE, seasonal=TRUE, lambda=lambda)
forecast.test <- forecast(fit, xreg=xreg.test, lambda=lambda)