2016-12-17 1 views
0

Je courais un modèle mixte sur quelque chose de semblable à ces données:erreur de facteur/niveau dans le modèle mixte

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)) 

Le modèle que je suis en train de répondre est:

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) 

Cependant, quand je exécuter cette commande, je reçois toujours une erreur:

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

qui ne fait pas de sens pour moi étant donné que je l'ai utilisé les NLEVELS() commande sur chacun des facteurs s (df $ stage et df $ nematode) et ils sont 3 et 2, respectivement. Quel est le sens de ce qui pourrait être de travers?

Répondre

3

Vous avez stage comme un effet fixe dans votre modèle, mais vous essayez d'ajuster le modèle pour toutes les combinaisons de stage et nematode (ddply(tree2, .(stage, nematode), ...)). Ainsi, dans chaque segment des données, il n'y a qu'une seule valeur stage, ce qui provoque l'erreur.

Vous pouvez:

  • appliquer seulement sur nematode valeurs, à savoir ddply(tree2,.(nematode), ...)
  • laisser stage de votre modèle, à savoir adapter le modèle value ~ 1 + (1 | id2)

Selon votre commentaire ("mon objectif est de comparer les étapes pour chacun des types de nématodes.C'est à dire, pour chaque type de nématode (par exemple, bn) les étapes diffèrent "), vous voulez la première solution (appliquer uniquement sur nematode valeurs).

+0

Je devrais dire que mon but est de comparer les étapes pour chacun des types de nématodes. C'est-à-dire que pour chaque type de nématode (par exemple, bn), les étapes diffèrent. L'une ou l'autre de vos suggestions semble donner les mêmes résultats. Je crois qu'ils me permettront de déterminer si les stades sont significativement différents pour chaque type de nématode, mais y a-t-il un moyen de faire un test de comparaison a posteriori pour déterminer quels stades diffèrent pour chaque type de nématode? Merci. – elduderino260

+0

En fait, je pense que je l'ai eu: bn <-subset (df, nématode == "bn") bn.mod <-glmer (valeur ~ étape + (1 | id2), famille = "poisson", données = bn) bn.tuk <-glht (bn.mod, mcp (étape = "Tukey")) résumé (bn.tuk) tuk.cld <- cld (bn.tuk) # affichage à base de lettre opar <- par (mai = c (1,1,1,5,1)) plot (tuk.cld) par (opar) – elduderino260

+0

Mais, si je fais cela alors mes tests de comparaison trouvent des différences significatives dans les nématodes entre les stades pour les nématodes. modèle mixte n'a pas trouvé de différence significative. Par exemple, le modèle mixte a trouvé que bn ne différait pas entre les étapes (p = 0,34) alors que si je fais le test de Tukey post hoc, il trouve des différences significatives (p <0,01) ... Cela dit, c'est plus une question pour Cross Validated ... – elduderino260