2015-09-11 43 views
3

在双因子ANOVA的背景下,我想输入另一个因子(SpeciesA,SpeciesB)水平内一个因子(10,20,30度)的对比度水平。这假定交互作用是显着的,所以对比不能简单地在温度主效应上进行。R:交互作用中的特殊对比

我曾试图在EZanova,multcomp和phia中做到这一点,但一直无法弄清楚有效的语法。我错过了一个允许这个的包吗?

对比度和系数

Contrast1: 10是否度20和30物种A不同? 种类:温度(2,-1,-1,0,0,0) 对比度2:对于物种B,10度与20和30不同吗? 种类:温度(0,0,0,2,-1,-1) 对比度3:物种A的10度与物种B的20度和30度不同? 种类:温度(2,0,0,0,-1,-1)

species<-rep(c("speciesA","speciesB"),each=12) 
temp<-rep(rep(c("10","20","30"),each=4),2) 
y<-rnorm(24,5,3) 
(result<-anova(lm(y~species*temp))) 
+0

查看'stats'包中的'contrasts'。你可以使用不同的函数来创建对比矩阵(例如'contrasts','contr.treatment','contr.poly','contr.helmert'等) –

+0

我试过了:'anova(lm(y 〜物种*温度+ C(温度, contr =矩阵(c(2,-1,-1,0,0,0,0,0,0,2,-1,-1,2,0,0, 0,-1,-1), nrow = 3,ncol = 6,byrow = T),how.many = 6)+ C(species, contr = matrix(c(2,-1,-1,0 ,0,0,0,0,0,2,-1,-1,2,0,0,0,-1,-1), nrow = 2,ncol = 6,byrow = T),如何。 many = 6))),但是输出仍然与没有用C()'添加对比矩阵相同。 –

回答

1

它的碱-R的一部分。请参阅?contrasts页面。我会说明第一个要求的对比;另外两个应该很直接。我假设你想要单独计算这些对比p值,所以我使用how.many参数将对比度构造限制为单个比较。否则,你会得到5个反差,因为在默认情况下contrasts函数试图建立一个跨越组正交对比:

set.seed(123) 
species <- rep(c("speciesA","speciesB"),each=12) 
temp <- rep(rep(c("10","20","30"),each=4),2) 
y<-rnorm(24,5,3) 

intvar <- interaction(species, temp) # create an interaction variable 
?contrasts 

需要知道哪些层面是要正确排序的对比度值:

> levels(intvar) 
[1] "speciesA.10" "speciesB.10" "speciesA.20" "speciesB.20" "speciesA.30" 
[6] "speciesB.30" 

所以这应该建立在A物种之间的10和20或30的角度对比:

contrasts(intvar, how.many=1) <- c(2,0,-1,0,-1,0) 
anova(lm(y~intvar)) 
#------------ 
Analysis of Variance Table 

Response: y 
      Df Sum Sq Mean Sq F value Pr(>F) 
intvar  1 0.013 0.0129 0.0015 0.9695 
Residuals 22 190.306 8.6503  

你似乎是在学外贸相当早期阶段ng R,所以我建议您学习构建数据框以便通过data= - 回归函数的参数,而不是在工作空间中处理“松散”的对象,请不要采用使用attach的讨厌习惯。

+0

感谢您的回应/有用的信息。您提供的代码提供了一个清晰的路径来对比全套交互方式。理想情况下,我希望在双因子方差分析中做这种对比,这意味着对比度F比的分母是来自完整ANOVA的MS残差(即来自全模型和18 df的残差)。我可以使用2-way ANOVA输出与您的代码结合使用。显然,在没有一些手动计算的情况下,还没有一种简单的方法可以在R中执行此操作。 –

+0

共有21个df,因此具有5个对比度的“完整模型”在残差中将具有21-5 = 16df。如果你只在“完整模型”中有三个对比(这在我理解的任何意义上都不是完整的),那么数字18对于残差中的df是有意义的。没有手工计算需要......只是清楚地说明所需的内容。这听起来像是一个家庭作业问题,这就是为什么我给它留下了“读者”填写的部分。我从未喜欢为他们完成别人的作业(并没有得到任何信用)。 –