Factor/level error in mixed model

无人久伴 提交于 2019-12-23 04:52:26

问题


I am running a mixed model on something akin to this data:

df<-data.frame(stage=c("a","a","a","a","b","b","b","b","c","c","c","c"),
nematode=c("fn","fn","bn","bn","fn","fn","bn","bn","fn","fn","bn","bn"),
id2=c(1,2,3,4,1,2,3,4,1,2,3,4),
value=c(1,0,0,2,3,1,1,2,0,0,0,2))

The model I am trying to fit is:

stage.id <- function(x) round(summary(glmer(value ~ stage + (1 | id2),family="poisson", data = x))$coefficients[2, c(1, 2, 4)], 3)
models.id0  <- ddply(tree2, .(stage, nematode), stage.id)

However, when I run this, I continually get an error:

Error in contrasts<-(*tmp*, value = contr.funs[1 + isOF[nn]]) : contrasts can be applied only to factors with 2 or more levels

which doesn't make sense to me given that I've used the nlevels() command on each of the factors (df$stage and df$nematode) and they are 3 and 2, respectively. Any sense what might be awry?


回答1:


You have stage as a fixed effect in your model, but you're trying to fit the model for every combination of stage and nematode (ddply(tree2, .(stage, nematode), ...)). Thus in each chunk of the data there's only a single stage value, which causes the error.

You could:

  • apply only over nematode values, i.e. ddply(tree2,.(nematode), ...)
  • leave stage out of your model, i.e. fit the model value ~ 1 + (1 | id2)

According to your comment ("my goal is to compare the stages for each of the types of nematodes. I.e., for each type of nematode (e.g., bn) do the stages differ"), you want the former solution (apply only over nematode values).



来源:https://stackoverflow.com/questions/41203805/factor-level-error-in-mixed-model

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!