我定义了一个广义线性模型如下:
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 **我正在尝试进行一个后期测试(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 我很困惑,也不知道如何纠正这条错误信息。任何帮助都将不胜感激!
发布于 2018-04-14 14:42:16
当您指定的变量不是一个因素时,就会发生此错误。你测试并发现它是,所以这是一个谜,我所能猜测的是,数据是变化的,因为你符合模型。因此,尝试用当前的数据集重新拟合模型。
所有这些话,我怀疑你想要做什么。首先,您有ParticleTypeSize与另外两个预测器进行交互,这意味着考虑该因素的边际均值(lsmeans)可能是不可取的。存在交互的事实意味着,这些变量的模式会根据其他变量的值发生变化。
第二,AlgaePresent和ParticlePresent真的是数值变量吗?用他们的名字来说,他们似乎应该是因素。如果它们确实是指示符(0和1),这是可以的,但是如果您使用的是lsmeans这样的函数,那么将它们编码为因子仍然比较干净,在这些函数中,各种因素和协变量被以截然不同的方式处理。
顺便说一句, being 包正在被废弃,其后继的being包正在出现新的发展。
https://stackoverflow.com/questions/49828200
复制相似问题