在双向方差分析中,我想在另一个因子(SpeciesA,SpeciesB)的水平内输入一个因子(10度、20度、30度)的对比水平。这假设相互作用效应是显著的,因此不能简单地对温度主效应进行对比。
我曾尝试在EZanova、multcomp和菲尼娅中这样做,但一直无法找到一个有效的语法。我错过了一个允许这样做的包裹吗?
对比系数
Contrast1: 10度与物种A的20度和30度不同吗?物种:温度(2,-1,-1,-1,0,0) Contrast2:与物种B的10度和30度不同吗?物种:温度(0,0,0,2,-1,-1) Contrast3:对物种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)))发布于 2015-09-12 18:06:45
是基地的一部分-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 您似乎还处于学习R的早期阶段,因此我建议您学习构建数据仓库,将其作为data=-arguments传递给回归函数,而不是在工作空间中处理“松散”对象,并且请不要养成使用attach的坏习惯。
https://stackoverflow.com/questions/32533236
复制相似问题