r语言 - eval(expr, p) 中的错误:找不到对象'X';预测(贝叶斯阿里麦克斯)



我正在尝试使用BayesARIMAX来建模和预测美国gdp(您可以在这里找到数据:https://fred.stlouisfed.org/series/GDP).我以(https://cran.r-project.org/web/packages/BayesARIMAX/BayesARIMAX.pdf)来建立我的模型。我没有任何重大问题来构建模型(在R问题中使用BayesARIMAX时,使用错误处理来克服Getting chol.default错误(。但无法得到模型的预测结果。我试图寻找解决方案,但没有使用BayesARIMAX预测模型的例子。每次我运行";预测";我得到以下错误:"eval(expr,p(中出错:找不到对象"X">

这是我的密码。

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)
#wrote this function to handle randomly procuded error due to MCMC simulation
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)

这是错误代码

eval(expr,p(中的错误:找不到对象"X">

以下是我在阅读BayesARIMAX代码后解决问题的方法(https://rdrr.io/cran/BayesARIMAX/src/R/BayesianARIMAX.R)。我基本上创建了变量";X〃;并将其传递给预测函数得到结果。您只需要将X变量的长度设置为等于预测的数量。

这是用于预测的解决方案代码。

X <- c(1:3)
bayes_arima_pred <- xts(predict(bayes_arima_model[[1]],newxreg = X[1:3])$pred,date.test)

这给了我以下的结果。

bayes_arima_pred
[,1]
2009-01-01 14462.24
2009-04-01 14459.73
2009-07-01 14457.23

最新更新