Решение
Мы можем добавить проверку, чтобы убедиться, что 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()
Возвращает:
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 <- 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