es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error en eval(expr, p): objeto ‘X’ no encontrado; predecir (BayesARIMAX)

Estoy intentando utilizar BayesARIMAX para modelar y predecir el PIB de los Estados Unidos (puede encontrar los datos aquí: https://fred.stlouisfed.org/series/GDP). Seguí el ejemplo (https://cran.r-project.org/web/packages/BayesARIMAX/BayesARIMAX.pdf) para construir mi modelo. No tuve ningún problema importante para construir el modelo (usé manejo de errores para superar el problema https://stackoverflow.com/questions/70164422/getting-chol-default-error-when-using-bayesarimax-in-r). Sin embargo, no pude obtener la predicción del modelo. Traté de buscar solución y no hay ejemplo de predecir el modelo que se construye usando BayesARIMAX. Cada vez que ejecuto “predict” obtengo el siguiente error:
“Error in eval (expr, p): objeto ‘X’ no encontrado”

Aquí está mi código.

library(xts)
library(zoo)
library(tseries)
library(tidyverse)
library(fpp2)
gdp <- read.csv(“GDP.csv”, head = T)
date.q <- as.Date(gdp[, 1], “%Y-%m-%d”)
gdp <- xts(gdp[,2],date.q)

train.row <- 248
number.row <- dim(merge.data)[1]
gdp.train <- gdp[1:train.row]
gdp.test <- gdp[(train.row+1):number.row]
date.test <- date.q[(train.row+1):number.row]
library(BayesARIMAX)

Escribí esta función para manejar el error producido aleatoriamente debido a la simulación MCMC

test_function <- function(a,b,P=1,Q=1,D=1,error_count = 0)
{
tryCatch(
{
model = BayesARIMAX(Y=a,X = b,p=P,q=Q,d=D)
return(model)
},
error = function(cond)
{
error_count=error_count+1
if (error_count < 40)
{

     test_function(a,b,P,Q,D,error_count = error_count)
  }
  else
  {
    print(paste("Model doesnt converge for ARIMA(",P,D,Q,")"))
    print(cond)
  }
 }

)
}

set.seed(1)
x = rnorm(length(gdp.train),4,1)
bayes_arima_model <- test_function(a = gdp.train,b=x,P = 3,D = 2,Q = 2)
bayes_arima_pred <- xts(predict(bayes_arima_model[[1]],newxreg = x[1:3])$pred,date.test)

y aquí está el código de error

Error in eval(expr, p) : object ‘X’ not found

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error “Error in eval(expr, p) : object X not found” sugiere que la variable “X” utilizada en la función predict no está definida. En este caso, “X” se refiere a la variable exógena utilizada para entrenar el modelo. La función BayesARIMAX requiere que el usuario utilice una variable exógena para entrenar el modelo.

    Para solucionar este error, asegúrate de haber definido la variable exógena “x” antes de intentar predecir utilizando el modelo BayesARIMAX. Asegúrate de que “x” esté definida tanto en los conjuntos de datos de entrenamiento como en los de prueba.

    Además, al utilizar la función predict, asegúrate de pasar el mismo número de variables exógenas que se usaron en el paso de entrenamiento. En este caso, parece que la función predict está tratando de utilizar una variable exógena “X” que no está definida en el conjunto de datos de prueba.

    Intenta modificar la función predict para usar la variable exógena definida “x” en lugar de “X”. Aquí está el código modificado:

    x_test = x[number.row-train.row+1:number.row]
    bayes_arima_pred <- xts(predict(bayes_arima_model[[1]],newxreg = x_test)$pred,date.test)
    

    En este código modificado, definimos la variable exógena para el conjunto de prueba como “x_test”. Luego utilizamos esta variable para predecir el modelo BayesARIMAX sobre el conjunto de prueba.

Comments are closed.