gpt4 book ai didi

r - 为什么更改对比度类型会更改 R lm 摘要中的行标签?

转载 作者:行者123 更新时间:2023-12-04 11:58:57 24 4
gpt4 key购买 nike

使用 R (contr.treatment) 中的默认对比,线性模型对象的摘要根据级别名称给出行名称。当我将对比更改为 contr.sum 时,线性模型对象的摘要会根据编造的数字给出行名称。

对于下面的示例代码,处理对比的行名称是 xa xb xc xd xe,对于总对比,它们是 x1 x2 x3 x4 x5。

除了手动重命名行之外,有没有办法让这些行为相同?

例子:

y <- rnorm(10, 0, 1)
x <- factor(rep(letters[1:5], each = 2))

options(contrasts = c("contr.treatment", "contr.poly"))
summary(lm(y ~ x))

options(contrasts = c("contr.sum", "contr.poly"))
summary(lm(y ~ x))

最佳答案

我喜欢你的解决方案@Aaron,并且已经实现了它,但我认为它包含一个危险的错误。总和对比为您提供前 n-1 个因子和总平均值之间的差异,而不是最后 n-1 个因子,这是您的命名算法返回的结果。参见 Crawley 的 R 书第 2 版第 442-443 页。

因此,我认为正确的功能应该是:

contr.sum.keepnames <- function(...) {
conS <- contr.sum(...)
colnames(conS) = rownames(conS)[-length(rownames(conS))]
conS
}

顺便说一句,我尝试将此添加为评论,但在评论中添加代码块时遇到了困难。

关于r - 为什么更改对比度类型会更改 R lm 摘要中的行标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10808853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com