【问题标题】:Forecast the actual values of a transformed time series in ARIMAX model in R在 R 中预测 ARIMAX 模型中转换时间序列的实际值
【发布时间】:2019-04-23 05:40:43
【问题描述】:

我正在为我的时间序列数据拟合一个 ARIMAx 模型。 “数据”包括“速率”作为结果,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)

现在的问题是这个预测函数产生的是转换值的预测,而不是实际值。如何在不自己进行转换的情况下获得实际值的预测。

【问题讨论】:

    标签: r time-series transformation arima


    【解决方案1】:

    预测包会为您完成这一切。但是你需要使用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)
    

    【讨论】:

    • Rob 当我使用您的命令时,我收到此错误:预测错误(fit,newxreg = xreg.test,:未使用的参数(newxreg = xreg.test,lambda = lambda)似乎无法识别预测函数中的 newxreg 命令
    • 对不起。现在修好了。你需要使用 xreg,而不是 newxreg,和 forecast()
    猜你喜欢
    • 2019-08-10
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    • 2015-05-19
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多