Как получить прогноз из модели INLA в R без ее подгонки?
Давайте представим, что я хочу подогнать модель INLA к большому набору данных и сделать прогноз, используя подобранную модель. Одно из решений состоит в том, чтобы включить в дату ковариаты, используемые для прогнозирования результата, присвоив результату значения NA.
В моем случае я хочу регулярно рассчитывать прогнозируемый результат на основе обновленных ковариат. В идеале я хотел бы запустить модель один раз, чтобы подогнать ее, сохранить и использовать позже для регулярного прогнозирования (например, для линейной модели «lm()» в R с использованием функции «predict()»).
Я не нашел способ сделать это в INLA. Ниже приведен простой воспроизводимый пример.
library(INLA)
#simulate data
n = 100; a = 1; b = 1; tau = 100
z = rnorm(n)
eta = a + b*z
scale = exp(rnorm(n))
prec = scale*tau
y = rnorm(n, mean = eta, sd = 1/sqrt(prec))
plot(z,y)
#run INLA model
data = list(y=y, z=z)
formula = y ~ 1+z
result = inla(formula, family = "gaussian", data = data)
summary(result)
#define prediction data
data.pred$z = c(data$z,seq(2,4,length.out=100))
data.pred$y = c(data$y, y=rep(NA,100))
#run INLA model with prediction
result = inla(formula, family = "gaussian", data = data,
control.compute=list(config = TRUE))
summary(result)
#get posterior samples of the predictions
post.samples <- inla.posterior.sample(n = 10, result = result)
pred <- do.call(cbind,
lapply(post.samples,
function(X) X$latent[startsWith(rownames(X$latent), "Pred")]))