我已经定义了一个广义线性模型如下:
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
我难以理解并且不确定如何纠正此错误消息。任何帮助将不胜感激!
答案 0 :(得分:0)
当您指定的变量不是因素时,会发生该错误。你测试过并发现它是,所以这是一个谜,我所能猜到的是,因为你适合模型,数据发生了变化。因此,请尝试使用当前数据集重新拟合模型。
所有这一切,我怀疑你要做什么。首先,您有ParticleTypeSize
与其他两个预测变量进行交互,这意味着可能不建议查看该因子的边际均值(lsmeans)。存在交互的事实意味着这些方式的模式根据其他变量的值而变化。
其次,AlgaePresent
和ParticlePresent
真的是数字变量吗?根据他们的名字,他们似乎应该是因素。如果它们确实是指标(0和1),那就没问题,但是如果你使用像lsmeans
这样的函数,那么将它们编码为因子仍然更清晰,其中因子和协变量的处理方式截然不同。