[R-sig-ME] glmer error: contrasts can only be applied to factors of 2 or more levels

Ben Bolker bbolker at gmail.com
Tue Sep 2 01:18:12 CEST 2014


On 14-09-01 07:11 PM, Dan McCloy wrote:
> Never mind this one.  As usual, I was making a silly mistake due to
> the late hour, and Ben Bolker knew just what to suggest to illuminate
> my error.  Indeed, I had mis-typed one of the level names in one of
> the factors, yielding only one level represented when it got passed to
> glmer and run through na.omit().
> -- dan

   It might be creepying nannyism (this term has unfortunate political
associations, but I don't know of a better term to indicate the drive to
incorporate more and more checks to make sure that users aren't doing
something silly ... "creeping featurism" is a standard software term,
but I want a term that is more specific to user input screening), but
... it might be feasible to add a tryCatch loop around this invocation
of model.matrix that would indicate *which* factor had only a single
level, which might be helpful for debugging purposes ... or we could add
this error to
https://github.com/lme4/lme4/blob/24772d2a31c10a7fd6f77f6110fca8786573a9aa/man/troubleshooting.Rd
...

> 
> On Mon, Sep 1, 2014 at 5:19 PM, Dan McCloy <drmccloy at uw.edu> wrote:
>> 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
> 
> _______________________________________________
> R-sig-mixed-models at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
>



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