2012-02-17 21 views
4

我使用contrast包来构建lm的对比度R。用下面的代码我在Trt1和Trt3之间做了对比。使用对比度包的lm对比度

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 

我可以看到,这不是所需的对比。我想知道如何在R中与contrast包得到正确的对比。任何在这方面的帮助将不胜感激。谢谢

P.S.我知道要使用R中的aov函数的对比矩阵,但是对于这个特殊问题我想使用contrast包。

回答

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 
+0

感谢您的全力帮助。赞赏。 – MYaseen208 2012-02-17 22:06:50