"对比度错误"在GLM上使用lsmeans Tukey测试的消息

时间:2018-04-14 05:18:56

标签: glm lsmeans posthoc tukey

我已经定义了一个广义线性模型如下:

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)来比较使用 lsmeans 包的ParticleTypeSize的交互。但是,我一进行就收到以下消息:

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 个答案:

答案 0 :(得分:0)

当您指定的变量不是因素时,会发生该错误。你测试过并发现它是,所以这是一个谜,我所能猜到的是,因为你适合模型,数据发生了变化。因此,请尝试使用当前数据集重新拟合模型。

所有这一切,我怀疑你要做什么。首先,您有ParticleTypeSize与其他两个预测变量进行交互,这意味着可能建议查看该因子的边际均值(lsmeans)。存在交互的事实意味着这些方式的模式根据其他变量的值而变化。

其次,AlgaePresentParticlePresent 真的是数字变量吗?根据他们的名字,他们似乎应该是因素。如果它们确实是指标(0和1),那就没问题,但是如果你使用像lsmeans这样的函数,那么将它们编码为因子仍然更清晰,其中因子和协变量的处理方式截然不同。

顺便说一下, lsmeans 软件包已被弃用,其后续版本 emmeans 软件包正在出现新的发展。