我想知道我是否可以使用函数"TukeyHSD"来执行具有一个因子(例如,GROUP)和一个连续协变量(例如,AGE)的"aov()"模型的所有成对比较。例如,我做了:
library(multcomp)
data('litter', package = 'multcomp')
litter.aov <- aov(weight ~ gesttime + dose, data = litter)
TukeyHSD(litter.aov, which = 'dose')
我收到这样的警告消息:警告消息:在复制(paste("~", xx)中,data = mf):忽略非因子:gesttime
上面的这个过程正确吗?警告消息的含义是什么?"TukeyHSD"是否适用于严重不平衡的设计?
另外,上面和下面的过程有什么区别吗?
litter.mc <- glht(litter.aov, linfct = mcp(dose = 'Tukey'))
summary(litter.mc)
贝斯特,苏
没有区别。 TukeyHSD()
只是更渴望告诉你潜在的问题。请注意,这是一条警告消息,而不是错误,这意味着结果可能不是您所期望的,但仍会返回它们,以便您可以自己判断。
至于它的意思,它的意思是它所说的:非因素变量被忽略。请记住,您正在比较组之间的差异,并且分组是使用因子完成的,因此TukeyHSD()
关心因素。在您的情况下,您明确告诉函数只关心dose
,这是因素,因此警告可能会被视为过于谨慎。
避免警告的一种方法是将gesttime
转换为因子,由于它仅由四个级别组成,因此这样做是有意义的。
data('litter', package = 'multcomp')
litter$gesttime <- as.factor(litter$gesttime)
litter.aov <- aov(weight ~ gesttime + dose, data = litter)
TukeyHSD(litter.aov, which = 'dose')
这是一个古老的线程,但我不确定现有的答案是否正确......
我一直在用我自己的数据尝试这两个函数,并且与 Sue 的情况类似,其中 TukeyHSD 给出了关于忽略非因子协变量的警告消息,而 glht() 没有。
他们似乎并没有做同样的事情,而不是另一个答案。结果是不同的,TukeyHSD似乎并没有在非因子协变量上边缘化(如警告所述)。glht() 似乎正确地使用非因子协变量的平均值来计算感兴趣组的边际平均值,因为点估计值与从 lsmeans() 获得的点估计值相同。
因此,TukeyHSD似乎并不过分谨慎,只是似乎它无法处理非因子协变量,而glht能够处理。因此,对我来说,glht 似乎是在这种情况下使用的正确函数。