如何解释这些自定义对比?


10

我正在使用自定义对比度进行单因素方差分析(每个物种)。

     [,1] [,2] [,3] [,4]
0.5    -1    0    0    0
5       1   -1    0    0
12.5    0    1   -1    0
25      0    0    1   -1
50      0    0    0    1

我将强度0.5与5、5与12.5进行比较,依此类推。这些是我正在处理的数据

在此处输入图片说明

具有以下结果

Generalized least squares fit by REML
  Model: dark ~ intensity 
  Data: skofijski.diurnal[skofijski.diurnal$species == "niphargus", ] 
       AIC      BIC    logLik
  63.41333 67.66163 -25.70667

Coefficients:
            Value Std.Error  t-value p-value
(Intercept) 16.95 0.2140872 79.17334  0.0000
intensity1   2.20 0.4281744  5.13809  0.0001
intensity2   1.40 0.5244044  2.66970  0.0175
intensity3   2.10 0.5244044  4.00454  0.0011
intensity4   1.80 0.4281744  4.20389  0.0008

 Correlation: 
           (Intr) intns1 intns2 intns3
intensity1 0.000                      
intensity2 0.000  0.612               
intensity3 0.000  0.408  0.667        
intensity4 0.000  0.250  0.408  0.612 

Standardized residuals:
       Min         Q1        Med         Q3        Max 
-2.3500484 -0.7833495  0.2611165  0.7833495  1.3055824 

Residual standard error: 0.9574271 
Degrees of freedom: 20 total; 15 residual

16.95是“ niphargus”的全球平均值。在强度1中,我正在将强度0.5的平均值与5进行比较。

如果我理解正确的话,强度1的系数2.2应该是强度水平0.5和5的均值之差的一半。但是,我的手工计算与摘要的计算不匹配。任何人都可以弄清楚我在做什么错吗?

ce1 <- skofijski.diurnal$intensity
levels(ce1) <- c("0.5", "5", "0", "0", "0")
ce1 <- as.factor(as.character(ce1))
tapply(skofijski.diurnal$dark, ce1, mean)
       0    0.5      5 
  14.500 11.875 13.000 
diff(tapply(skofijski.diurnal$dark, ce1, mean))/2
      0.5       5 
  -1.3125  0.5625 

能否提供您用来估算的R中的lm()函数。您如何使用对比功能?
菲利普(Philippe)2012年

btw geom_points(position=position_dodge(width=0.75))将解决您的绘图中的点不与框对齐的方式。
飞行

自从我提出问题以来,@ flies一直在介绍geom_jitter,这是所有抖动的geom_point()参数的快捷方式。
RomanLuštrik18年

我没有注意到那里的抖动。做geom_jitter(position_dodge)工作?我一直在使用geom_points(position_jitterdodge)闪避将点添加到箱形图中。
飞行

@flies在geom_jitter 此处查看文档。根据以上答案,根据我的经验,我发现没有必要使用箱形图。曾经 如果我有很多点,我会使用小提琴图来显示点的密度,其细节要比箱形图精细得多。绘制许多点或密度不方便时,又发明了箱形图。也许是时候开始考虑删除此(残障人士)可视化了。
RomanLuštrik18年

Answers:


10

您为对比度指定的矩阵原则上是正确的。要将其转换为适当的对比度矩阵,您需要计算原始矩阵的广义逆。

如果M是您的矩阵:

M

#     [,1] [,2] [,3] [,4]
#0.5    -1    0    0    0
#5       1   -1    0    0
#12.5    0    1   -1    0
#25      0    0    1   -1
#50      0    0    0    1 

现在,使用来计算广义逆,ginv并使用来转置结果t

library(MASS)
t(ginv(M))

#     [,1] [,2] [,3] [,4]
#[1,] -0.8 -0.6 -0.4 -0.2
#[2,]  0.2 -0.6 -0.4 -0.2
#[3,]  0.2  0.4 -0.4 -0.2
#[4,]  0.2  0.4  0.6 -0.2
#[5,]  0.2  0.4  0.6  0.8

结果与@Greg Snow的结果相同。使用此矩阵进行分析。

这比手动完成要容易得多。


有一种更简单的方法来生成滑动差异矩阵(又称重复对比)。这可以通过功能contr.sdif和因子级别数作为参数来完成。如果您有五个因子水平,例如您的示例:

library(MASS)
contr.sdif(5)

#   2-1  3-2  4-3  5-4
#1 -0.8 -0.6 -0.4 -0.2
#2  0.2 -0.6 -0.4 -0.2
#3  0.2  0.4 -0.4 -0.2
#4  0.2  0.4  0.6 -0.2
#5  0.2  0.4  0.6  0.8

4

如果顶部的矩阵是您编码伪变量的方式(您要传递给R中的Cor contrast函数),则它们的第一个将第一级与其他一级进行比较(实际上是第一级的0.8倍,再减去0.2倍)。其他的总和)。

第二项将第一个2级别与最后一个3进行比较。第三项将第一个3级别与last2进行比较,第4个将第一个4级别与最后一个进行比较。

如果要进行描述的比较(比较每对),则所需的虚拟变量编码为:

      [,1] [,2] [,3] [,4]
[1,] -0.8 -0.6 -0.4 -0.2
[2,]  0.2 -0.6 -0.4 -0.2
[3,]  0.2  0.4 -0.4 -0.2
[4,]  0.2  0.4  0.6 -0.2
[5,]  0.2  0.4  0.6  0.8

当使用aov()代替时,lm()是否也需要使用这种广义的Inverese矩阵?我之所以问是因为,我已经阅读了几本教程,其中的对比矩阵的aov()构建就像Roman给出的那样。例如,请参阅cran.r-project.org/doc/contrib/Vikneswaran-ED_companion.pdf中的
crsh 2012年

2
aov函数调用该lm函数进行主要计算,因此诸如对比度矩阵之类的东西在这两者中将具有相同的效果。
格雷格·斯诺
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.