我正在使用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
包。
答案 0 :(得分:6)
您应该将包含的治疗水平指定为矢量(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