r - merTools predictInterval() for model with nested random effect -


does predictinterval() mertools package not nested random effects? example, using msleep dataset ggplot2 package:

library("lme4") library("mertools") library("ggplot2") mod <- lmer(sleep_total ~ bodywt + (1|vore/order), data=msleep) predint <- predictinterval(mermod=mod, newdata=msleep)  

returns error:

error in '[.data.frame'(newdata, , j) : undefined columns selected 

this runs fine no problem:

mod <- lmer(sleep_total ~ bodywt + (1|vore) + (1|order), data=msleep) predint <- predictinterval(mermod=mod, newdata=msleep) 

(well gives warning na levels in random effect variables, i'm not concerned that)

update

as discussed in comments of ben bolker's answer below, new version of mertools accounts nested random effects. however, when try predict data contains new levels of nested random effect, errors.

this works:

mod <- lmer(sleep_total ~ bodywt + (1|vore/order), data=msleep) predint <- predictinterval(mermod=mod, newdata=msleep)  

and works, albeit couple of warnings (see below additional q warnings*):

mod <- lmer(sleep_total ~ bodywt + (1|vore) + (1|order), data=msleep) msleep2 <- msleep %>% mutate(vore = "omni") predint <- predictinterval(mermod=mod, newdata=msleep2)  

but not work:

mod <- lmer(sleep_total ~ bodywt + (1|vore/order), data=msleep) msleep2 <- msleep %>% mutate(vore = "omni") predint <- predictinterval(mermod=mod, newdata=msleep2)  

with following error:

error in `[.data.frame`(tmp, alllvl) : undefined columns selected in addition: warning message: in predictinterval(mermod = mod, newdata = msleep3) :   newdata tbl_df or tbl object dplyr package , has been               coerced data.frame 

and here, "omni" isn't new level of vore, when combined order, creates new nested combinations of variables.

if use "new" or else isn't observed level of vore, similar results: works non-nested version of model, not nested version.


*also, should concerned warning given second model chunk above:

> mod <- lmer(sleep_total ~ bodywt + (1|vore) + (1|order), data=msleep) > msleep2 <- msleep %>% mutate(vore = "omni") > predint <- predictinterval(mermod=mod, newdata=msleep2) warning messages:   1: in predictinterval(mermod = mod, newdata = msleep2) :      newdata tbl_df or tbl object dplyr package , has been        coerced data.frame   2: in chol.default(sigma, pivot = true) :      matrix either rank-deficient or indefinite 

i'm going guess second 1 result of vore taking on same value each observation, shouldn't issue prediction, should it? see being issue if variable took on same value when fitting model, don't think should issue when predicting new observations?

one can (apparently) work around writing out interaction term explicitly. warning: haven't checked make sure resulting predictions correct, seen no error produced , resulting object approximately sensible ...

msleep <- transform(msleep,voreorder=interaction(vore,order,drop=true)) mod2 <- lmer(sleep_total ~ bodywt + (1|vore)+(1|voreorder), data=msleep) predint <- predictinterval(mermod=mod2, newdata=msleep)  

this generate warning messages, apparently they're due <na> values in vore variable (i don't know data set ...)


Comments

Popular posts from this blog

Delphi XE2 Indy10 udp client-server interchange using SendBuffer-ReceiveBuffer -

Qt ActiveX WMI QAxBase::dynamicCallHelper: ItemIndex(int): No such property in -

Enable autocomplete or intellisense in Atom editor for PHP -