【发布时间】:2014-07-01 17:13:14
【问题描述】:
好的,大家,一劳永逸,你如何(强调你,因为我确信有不止一种方法可以实现这一点)对比代码(处理、求和、helmert 等)并保留一个有意义的glm 函数中的因子标签(以便您可以对效果做出有意义的解释)?
我知道我可以使用 level() 来了解哪个因子水平是参考,但是当我开始涉及具有 5 或 10 个水平的因子及其相互作用时,这会变得乏味。
这是我的意思的一个快速的两个因素示例
outcome <- c(1,0,0,1,1,0,0,0,1, 0, 0, 1)
firstvar <- c("A", "B", "C", "C", "B", "B", "A", "A", "C", "A", "C", "B")
secondvar <- c("D", "D", "E", "F", "F", "E", "D", "E", "F", "F", "D", "E")
df <- as.data.frame(cbind(outcome, firstvar, secondvar))
df$firstvar <- as.factor(df$firstvar)
df$secondvar <- as.factor(df$secondvar)
#not coded manually (and default appears to be dummy or treatment coding)
#gives meaningful factor labels in summary function
summary(glm(outcome ~ firstvar*secondvar, data=df, family="binomial"))
#effects coded
#does not give meaningful factor labels
contrasts(df$firstvar)=contr.sum(3)
contrasts(df$secondvar)=contr.sum(3)
summary(glm(outcome ~ firstvar*secondvar, data=df, family="binomial"))
#dummy coded
contrasts(df$firstvar)=contr.treatment(3);
contrasts(df$secondvar)=contr.treatment(3);
summary(glm(outcome ~ firstvar*secondvar, data=df, family="binomial"))
我们将不胜感激任何和所有建议。这个问题困扰了我一段时间,我确信有一个简单的(ish)解决方案。
【问题讨论】: