[R-sig-ME] glmer error: contrasts can only be applied to factors of 2 or more levels
Dan McCloy
drmccloy at uw.edu
Mon Sep 1 11:19:32 CEST 2014
I'm getting the following error, despite the fact that all my fixed
effects were converted to factors and had their contrast attributes
set prior to calling glmer.
Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) :
contrasts can be applied only to factors with 2 or more levels
Calls: glmer ... model.matrix -> model.matrix.default -> contrasts<-
Here is the model specification:
glmer(press ~ truth*adj*idn*num + (1|subj), data=wl,
family=binomial(link="probit"))
Here are the predictors. As you can see, they are all already factors
and have contrasts set, so I can't figure out why glmer is trying to
set contrasts anyway, much less why it thinks any of these have fewer
than two levels:
R> head(wl$truth)
[1] neither neither neither neither neither neither
attr(,"contrasts")
target foil
neither 0 0
target 1 0
foil 0 1
Levels: neither target foil
R> head(wl$adj)
[1] TRUE TRUE TRUE TRUE TRUE TRUE
attr(,"contrasts")
TRUE
TRUE 1
FALSE -1
Levels: TRUE FALSE
R> head(wl$idn)
[1] FALSE FALSE FALSE FALSE FALSE FALSE
attr(,"contrasts")
TRUE
TRUE 1
FALSE -1
Levels: TRUE FALSE
R> head(wl$num)
[1] six six six six six six
attr(,"contrasts")
three
three 1
six -1
Levels: three six
Here is the session info:
R version 3.1.1 (2014-07-10)
Platform: x86_64-pc-linux-gnu (64-bit)
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] lme4_1.1-7 Rcpp_0.11.2 Matrix_1.1-4
loaded via a namespace (and not attached):
[1] grid_3.1.1 lattice_0.20-29 MASS_7.3-34 minqa_1.2.3
nlme_3.1-117 nloptr_1.0.4 splines_3.1.1 tools_3.1.1
Can anybody shed some light on what is going on here, and / or how to
work around it? I've run similar models with very similar data on
slightly older versions of lme4 (but still >1.0) and never run into
this, so I'm wondering if a bug was introduced in the latest version.
-- dan
Daniel McCloy
http://dan.mccloy.info/
Postdoctoral Research Fellow
Institute for Learning and Brain Sciences
University of Washington
More information about the R-sig-mixed-models
mailing list