[R-sig-ME] MCMCglmm predictions using new data error

Alberto Gallano alberto.gc8 at gmail.com
Fri Jan 8 17:51:33 CET 2016


Hi Sven,

thanks so much. That works. Do you know if there is any documentation as to
how to set up new data for the MCMCglmm predict method? Adding a constant
response vector to the prediction grid is different to every other R
predict method (that I know of).

One further problem i'm having is that I actually have random effects, and
now the predict function throws an error when these are not entered into
the prediction grid. It's unclear to me how they should be entered - using
a constant doesn't work. The number of random effect grouping levels may
not equal the dimensions of the rest of the prediction grid, so just adding
a vector with each unique grouping level won't work here either. Any
thoughts would be much appreciated. See "pred_grid2" at bottom of code
below:


#
----------------------------------------------------------------------------------
library(MCMCglmm)

set.seed(123)

dat <- data.frame(
    y = rnorm(100),
    x = rnorm(100),
    id = factor(rep(paste("ID", 1:20), 5))
    )

fit <- MCMCglmm(
    fixed = y ~ x,
    random = ~ id,
    rcov = ~ units,
    data = dat,
    family = "gaussian",
    pr = TRUE, pl = TRUE,
    saveX = TRUE,  saveZ = TRUE,
    nitt = 1.3e+4, thin = 10, burnin = 3e+3
)


pred_grid1 <- with(dat,
    data.frame(
    y = 0,
    x = seq(-1, 1, length.out = 30)
    ))

predict(fit, newdata = pred_grid1)

# > Error in buildZ(rmodel.terms[r], data = data, nginverse =
names(ginverse)) : object id not found


pred_grid2 <- with(dat,
    data.frame(
    y = 0,
    x = seq(-1, 1, length.out = 30),
    id = 0
    ))

predict(fit, newdata = pred_grid2)

# > Error in MCMCglmm(fixed = object$Fixed$formula, random =
object$Random$formula,  : trying to get slot "Dim" from an object of a
basic class ("numeric") with no slots
#
----------------------------------------------------------------------------------

On Thu, Jan 7, 2016 at 3:06 PM, Sven E. Templer <sven.templer at gmail.com>
wrote:

> Hi Alberto,
>
> avoid the error from predict by running
>
> pred_grid$y <- 0
>
> before
>
> predict(fit, newdata = pred_grid)
>
> Best,
> Sven
>
> > On 06 Jan 2016, at 23:39, Alberto Gallano <alberto.gc8 at gmail.com> wrote:
> >
> > I'm trying to make predictions from an MCMCglmm model using new data.
> This
> > is a feature that was recently added to the predict.MCMCglmm function
> > (version 2.22). However, when I set things up as I would for other
> predict
> > methods, I get the following error:
> >
> >> Error in eval(expr, envir, enclos) : object 'y' not found
> >
> > where 'y' is my response vector. I'm including a simplified replicable
> > example below. Is the set up of the prediction grid different for the
> > MCMCglmm predict method compared with other methods?
> >
> > best,
> > Alberto
> >
> > #
> >
> ----------------------------------------------------------------------------------
> > library(MCMCglmm)
> >
> > set.seed(123)
> >
> > dat <- data.frame(x = rnorm(100), y = rnorm(100))
> >
> >
> > fit <- MCMCglmm(
> >
> >    fixed = y ~ x,
> >
> >    rcov = ~ units,
> >
> >    data = dat,
> >
> >    family = "gaussian",
> >
> >    pr = TRUE, pl = TRUE,
> >
> >    saveX = TRUE,  saveZ = TRUE,
> >
> >    nitt = 1.3e+4, thin = 10, burnin = 3e+3
> >
> > )
> >
> >
> > pred_grid <- data.frame(x = seq(-1, 1, length.out = 30))
> >
> >
> > predict(fit, newdata = pred_grid)
> >
> > #
> >
> ----------------------------------------------------------------------------------
> >
> >       [[alternative HTML version deleted]]
> >
> > _______________________________________________
> > R-sig-mixed-models at r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
>
>

	[[alternative HTML version deleted]]



More information about the R-sig-mixed-models mailing list