在R中的ARIMAX模型中预测转换后的时间序列的实际值

时间:2018-11-20 17:51:49

标签: r time-series transformation arima

我正在将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)

现在问题是,此预测函数将生成转换后的值而不是实际值的预测。不用自己进行转换,如何获得实际值的预测。

1 个答案:

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