Контрасты для lm с использованием контрастного пакета

Я использую пакет contrast для создания контрастов для lm в R. С помощью следующего кода я создаю контраст между Trt1 и Trt3.

Y <- c(10, 12, 14, 16, 9, 8)
Trt <- gl(n=3, k=2, length=3*2)
Data1 <- data.frame(Y, Trt)

Data1.lm <- lm(Y~Trt, data = Data1)

library(contrast)
Contrs1 <- contrast(Data1.lm, a=list(Trt="1"), b=list(Trt="3"), type = "average")
print(Contrs1, X=TRUE)

Я хотел бы сделать контраст между средним значением (Trt1 и Trt2) и Trt3. я использовал этот код

Contrs2 <- contrast(Data1.lm, a=list(Trt="1", Trt="2"), b=list(Trt="3"), type = "average")
print(Contrs2, X=TRUE)

lm model parameter contrast

  Contrast     S.E.    Lower    Upper    t df Pr(>|t|)
1      6.5 1.224745 2.602315 10.39768 5.31  3   0.0131

Contrast coefficients:
  (Intercept) Trt2 Trt3
1           0    1   -1

Я вижу, что это не желаемый контраст. Интересно, как получить правильный контраст с пакетом contrast в R. Любая помощь в этом отношении будет высоко оценена. Спасибо

P.S. Я знаю, что нужно использовать матрицу контраста для функции aov в R, но для этой конкретной проблемы я хочу использовать пакет contrast.


person MYaseen208    schedule 17.02.2012    source источник


Ответы (1)


Вы должны указать включенные уровни лечения в виде вектора (Trt=c("1","2")), а не списка. Я понял это, посмотрев примеры в ?contrast.lm (хотя, по общему признанию, это помогает понять, что вы ищете):

Contrs2 <- contrast(Data1.lm, a=list(Trt=c("1","2")), b=list(Trt="3"),
                    type = "average")
print(Contrs2, X=TRUE)
## lm model parameter contrast
##   Contrast    S.E.    Lower    Upper    t df Pr(>|t|)
## 1      4.5 1.06066 1.124506 7.875494 4.24  3    0.024
person Ben Bolker    schedule 17.02.2012