Вопросы к SO должны включать минимальный воспроизводимый пример данных - см. Инструкции в верхней части страницы тегов r . Поскольку вопрос не включал это, мы предоставим его на этот раз с использованием встроенного набора данных InsectSprays
, который поставляется с R.
Вот несколько подходов:
1) lm / contr.sum / dummy.coef Попробуйте использовать contr.sum
контрасты суммы к нулю для фактора spray
и посмотрите на фиктивные коэффициенты. Это расширит коэффициенты, чтобы включить все 6 уровней фактора spray
в этом примере:
fm <- lm(count ~ spray, InsectSprays, contrasts = list(spray = contr.sum))
dummy.coef(fm)
## Full coefficients are
##
## (Intercept): 9.5
## spray: A B C D E F
## 5.000000 5.833333 -7.416667 -4.583333 -6.000000 7.166667
sum(dummy.coef(fm)$spray) # check that coefs sum to zero
## [1] 0
2) tapply Если каждый уровень имеет одинаковое количество строк в данных например, как в случае с InsectSprays
, где каждый уровень имеет 12 строк, тогда мы можем взять среднее значение для каждого уровня и затем вычесть пересечение (которое является общим средним). Это не работает, если набор данных несбалансирован, т. Е. Если разные уровни имеют разное количество строк. Обратите внимание, как приведенные ниже вычисления дают тот же результат, что и (1).
mean(InsectSprays$count) # intercept
## [1] 9.5
with(InsectSprays, tapply(count, spray, mean) - mean(count))
## A B C D E F
## 5.000000 5.833333 -7.416667 -4.583333 -6.000000 7.166667
3) aov / model.tables Мы также можем использовать aov
с model.tables
следующим образом:
fm2 <- aov(count ~ spray, InsectSprays)
model.tables(fm2)
## Tables of effects
##
## spray
## spray
## A B C D E F
## 5.000 5.833 -7.417 -4.583 -6.000 7.167
model.tables(fm2, type = "means")
## Tables of means
## Grand mean
##
## 9.5
##
## spray
## spray
## A B C D E F
## 14.500 15.333 2.083 4.917 3.500 16.667
4) emmeans Мы можем использовать lm, за которым следует emmeans, например:
library(emmeans)
fm <- lm(count ~ spray, InsectSprays)
emmeans(fm, "spray")
## spray emmean SE df lower.CL upper.CL
## A 14.50 1.13 66 12.240 16.76
## B 15.33 1.13 66 13.073 17.59
## C 2.08 1.13 66 -0.177 4.34
## D 4.92 1.13 66 2.656 7.18
## E 3.50 1.13 66 1.240 5.76
## F 16.67 1.13 66 14.406 18.93
##
## Confidence level used: 0.95