Я все еще совсем не уверен, что это хорошая идея, я думаю, что вероятность запутаться в том, что означают контрасты, слишком высока. Тем не менее, я бы сделал новую функцию контрастов, которая вычисляет контрасты суммы, но устанавливает имена равными именам по умолчанию из контрастов лечения.
set.seed(5)
n <- 5
y <- c(10 + rnorm(n, 0, 1), 20 + rnorm(n, 0, 1), 30 + rnorm(n, 0, 1))
wFactor <- as.factor(c(rep("A", n), rep("B", n), rep("C", n)))
contr.sumX <- function(...) {
conT <- contr.treatment(...)
conS <- contr.sum(...)
colnames(conS) <- colnames(conT)
conS
}
Для справки, вот обычный вывод:
> m1 <- lm(y ~ wFactor, contrasts = list(wFactor=contr.sum(n = levels(wFactor))))
> coef(summary(m1))
Estimate Std. Error t value Pr(>|t|)
(Intercept) 19.8218432 0.2481727 79.8711599 9.889455e-18
wFactor1 -9.6079241 0.3509692 -27.3754029 3.480430e-12
wFactor2 -0.1934654 0.3509692 -0.5512319 5.915907e-01
А вот вывод функции contr.sumX
.
> m2 <- lm(y ~ wFactor, contrasts = list(wFactor=contr.sumX(n = levels(wFactor))))
> coef(summary(m2))
Estimate Std. Error t value Pr(>|t|)
(Intercept) 19.8218432 0.2481727 79.8711599 9.889455e-18
wFactorB -9.6079241 0.3509692 -27.3754029 3.480430e-12
wFactorC -0.1934654 0.3509692 -0.5512319 5.915907e-01
Кроме того, вы можете заранее установить контрасты для определенного фактора:
contrasts(wFactor) <- "contr.sumX"
m3 <- lm(y ~ wFactor)
> coef(summary(m3))
Estimate Std. Error t value Pr(>|t|)
(Intercept) 19.8218432 0.2481727 79.8711599 9.889455e-18
wFactorB -9.6079241 0.3509692 -27.3754029 3.480430e-12
wFactorC -0.1934654 0.3509692 -0.5512319 5.915907e-01
person
Aaron left Stack Overflow
schedule
01.06.2012
model.matrix
. Это применимо только в том случае, если для контрастов установлено значение, отличное от значения по умолчанию. Я согласен с @joran, я думаю, вы застряли. (Вы также можете задать контрасты явно и назвать их столбцы, затем назначить их определенным факторам.) - person Ben Bolker   schedule 30.05.2012contr.Treatment
в пакетеcar
, как сделать функцию контраста с разными именами для контрастов. - person Brian Diggs   schedule 31.05.2012