Сообщение "Ошибка контрастности" с lsmeans Tukey Test на GLM

Я определил обобщенную линейную модель следующим образом:

glm(formula = ParticleCount ~ ParticlePresent + AlgaePresent + 
ParticleTypeSize + ParticlePresent:ParticleTypeSize + AlgaePresent:ParticleTypeSize, 
family = poisson(link = "log"), data = PCB)

и у меня ниже значимых взаимодействий

                                 Df  Deviance  AIC  LRT Pr(>Chi)   
<none>                               666.94  1013.8                  
ParticlePresent:ParticleTypeSize  6  680.59  1015.4 13.649 0.033818 * 
AlgaePresent:ParticleTypeSize     6  687.26  1022.1 20.320 0.002428 **

Я пытаюсь приступить к тесту posthoc (Tukey), чтобы сравнить взаимодействие ParticleTypeSize с помощью пакета lsmeans. Тем не менее, я получаю следующее сообщение, как только я продолжаю:

library(lsmeans)
leastsquare=lsmeans(glm.particle3,~ParticleTypeSize,adjust ="tukey")

Error in `contrasts<-`(`*tmp*`, value = contrasts.arg[[nn]]) : 
  contrasts apply only to factors

Я проверил, является ли ParticleTypeSize действительным фактором, применяя:

 l<-sapply(PCB,function(x)is.factor(x))
 l
      Sample     AlgaePresent  ParticlePresent ParticleTypeSize 
        TRUE            FALSE            FALSE             TRUE 
   ParticleCount 
       FALSE 

Я озадачен и не уверен, как я могу исправить это сообщение об ошибке. Любая помощь приветствуется!

1 ответ

Эта ошибка возникает, когда указанная переменная не является фактором. Вы проверили и обнаружили, что это так, так что это загадка, и все, что я могу догадаться, это то, что данные изменились, так как вы подходите модели Поэтому попробуйте переоснастить модель текущим набором данных.

После всего этого я подвергаю сомнению то, что вы пытаетесь сделать. Во-первых, у вас есть ParticleTypeSize взаимодействовать с двумя другими предикторами, что означает, что, вероятно, не рекомендуется рассматривать предельные средние (lsmeans) для этого фактора. Тот факт, что существуют взаимодействия, означает, что структура этих средств изменяется в зависимости от значений других переменных.

Во-вторых, являются AlgaePresent а также ParticlePresent действительно числовые переменные? По своим именам они кажутся факторами. Если они действительно являются индикаторами (0 и 1), то все в порядке, но все же лучше кодировать их как факторы, если вы используете такие функции, как lsmeans где факторы и ковариаты трактуются совершенно по-разному.

Кстати, пакет lsmeans устарел, и в его преемнике, пакете emmeans, происходят новые разработки.

Другие вопросы по тегам