Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在预测包中找不到对象错误_R_Package_Forecast - Fatal编程技术网

R 在预测包中找不到对象错误

R 在预测包中找不到对象错误,r,package,forecast,R,Package,Forecast,我正在使用R(版本3.5.3)中的forecast包(版本8.5),尝试使用华丽的auto.ARIMA()函数进行一些ARIMA预测 运行这个函数时,我总是收到一个错误代码,上面写着, “eval(expr,p)中出错:找不到对象'fitxreg'。我已经尝试过调试,但无法准确地找出问题所在,但是当我返回到forecast 8.4时,这段代码可以正常工作 arimaIssue <- function(fitxreg = NULL, forxreg = NULL){ library(fo

我正在使用R(版本3.5.3)中的forecast包(版本8.5),尝试使用华丽的auto.ARIMA()函数进行一些ARIMA预测

运行这个函数时,我总是收到一个错误代码,上面写着, “eval(expr,p)中出错:找不到对象'fitxreg'。我已经尝试过调试,但无法准确地找出问题所在,但是当我返回到forecast 8.4时,这段代码可以正常工作

arimaIssue <- function(fitxreg = NULL, forxreg = NULL){
  library(forecast)

  fit <- auto.arima(AirPassengers[1:87], 
                    seasonal = FALSE, 
                    xreg = fitxreg, lambda = 'auto', allowmean = TRUE)

  fcast <- forecast(fit, xreg = forxreg, h = 3)

  return(fcast)
}

arimaIssue()


arimaIssue解决方案

我们可以添加一个检查来查看fitxreg是否为NULL

arimaIssue <- function(fitxreg = NULL, forxreg = NULL){
  library(forecast)

  if(missing(fitxreg)){
    fit <- auto.arima(AirPassengers[1:87], 
                    seasonal = FALSE, 
                    xreg = NULL, lambda = 'auto', allowmean = TRUE)
  } else {
    fit <- auto.arima(AirPassengers[1:87], 
                            seasonal = FALSE, 
                            xreg = fitxreg, lambda = 'auto', allowmean = TRUE)
  }
  fcast <- forecast(fit, xreg = forxreg, h = 3)

  return(fcast)
}

arimaIssue()
解决方案如果您不介意为全局环境设置变量

arimaIssue <- function(fitxreg = NULL, forxreg = NULL){
  library(forecast)
  fitxreg <<- fitxreg
    fit <- auto.arima(AirPassengers[1:87], 
                    seasonal = FALSE, 
                    xreg = fitxreg, lambda = 'auto', allowmean = TRUE)

  fcast <- forecast(fit, xreg = forxreg, h = 3)

  return(fcast)
}

arimaIssue()


   Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
88       320.8124 278.8410 370.7503 259.3371 401.0221
89       310.9559 254.0070 384.2721 229.0197 431.6157
90       301.5867 239.6709 384.1640 213.1853 439.0395

arimaIssue解决方案

我们可以添加一个检查来查看fitxreg是否为NULL

arimaIssue <- function(fitxreg = NULL, forxreg = NULL){
  library(forecast)

  if(missing(fitxreg)){
    fit <- auto.arima(AirPassengers[1:87], 
                    seasonal = FALSE, 
                    xreg = NULL, lambda = 'auto', allowmean = TRUE)
  } else {
    fit <- auto.arima(AirPassengers[1:87], 
                            seasonal = FALSE, 
                            xreg = fitxreg, lambda = 'auto', allowmean = TRUE)
  }
  fcast <- forecast(fit, xreg = forxreg, h = 3)

  return(fcast)
}

arimaIssue()
解决方案如果您不介意为全局环境设置变量

arimaIssue <- function(fitxreg = NULL, forxreg = NULL){
  library(forecast)
  fitxreg <<- fitxreg
    fit <- auto.arima(AirPassengers[1:87], 
                    seasonal = FALSE, 
                    xreg = fitxreg, lambda = 'auto', allowmean = TRUE)

  fcast <- forecast(fit, xreg = forxreg, h = 3)

  return(fcast)
}

arimaIssue()


   Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
88       320.8124 278.8410 370.7503 259.3371 401.0221
89       310.9559 254.0070 384.2721 229.0197 431.6157
90       301.5867 239.6709 384.1640 213.1853 439.0395
arimaIssue明白了

问题是fit对象包含外部回归器的名称为“fitxreg”,当forecast()查找“fitxreg”时,它什么也找不到。下面的代码更新现在生成一个预测。多亏了赫克托的线索,才知道发生了什么事

arimaIssue <- function(fitxreg = NULL, forxreg = NULL){
  library(forecast)

  fit <- auto.arima(AirPassengers[1:87], seasonal = FALSE, xreg = fitxreg, lambda = 'auto',
                    allowmean = TRUE)

  if(is.null(fitxreg)){
    fit$call$xreg <- NULL
  }


  fcast <- forecast(fit, xreg = forxreg, h = 3)

  return(fcast)
}

arimaIssue()
arimaIssue明白了

问题是fit对象包含外部回归器的名称为“fitxreg”,当forecast()查找“fitxreg”时,它什么也找不到。下面的代码更新现在生成一个预测。多亏了赫克托的线索,才知道发生了什么事

arimaIssue <- function(fitxreg = NULL, forxreg = NULL){
  library(forecast)

  fit <- auto.arima(AirPassengers[1:87], seasonal = FALSE, xreg = fitxreg, lambda = 'auto',
                    allowmean = TRUE)

  if(is.null(fitxreg)){
    fit$call$xreg <- NULL
  }


  fcast <- forecast(fit, xreg = forxreg, h = 3)

  return(fcast)
}

arimaIssue()

arimaisse这肯定是可行的,但是在全局环境中没有设置变量的情况下,有没有办法处理这个问题?谢谢你的帮助!这更合适吗@布里波塔托曼是的!非常感谢。我刚刚发布了一个解决方案,可以做同样的事情,只是代码更少。谢谢你的帮助@BuryToToMax不担心,这是一个有趣的问题,如果回答了你的问题,考虑接受答案(绿色答案在左上角),这肯定有效,但是无论如何都不需要在全球环境中设置变量来处理这个问题吗?谢谢你的帮助!这更合适吗@布里波塔托曼是的!非常感谢。我刚刚发布了一个解决方案,可以做同样的事情,只是代码更少。谢谢你的帮助@BuryToToMax不担心,这是一个有趣的问题,如果回答了你的问题,考虑接受答案(答案的左上方的绿色刻度)。