Estoy haciendo un ANOVA unidireccional (por especie) con contrastes personalizados.
[,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
donde comparo la intensidad 0.5 contra 5, 5 contra 12.5 y así sucesivamente. Estos son los datos en los que estoy trabajando
con los siguientes resultados
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 es la media global para "niphargus". En intensidad1, estoy comparando las medias de intensidad 0.5 contra 5.
Si entendí bien, el coeficiente de intensidad1 de 2.2 debería ser la mitad de la diferencia entre las medias de los niveles de intensidad 0.5 y 5. Sin embargo, mis cálculos manuales no coinciden con los del resumen. ¿Alguien puede intervenir en lo que estoy haciendo mal?
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
anova
contrasts
generalized-least-squares
Roman Luštrik
fuente
fuente
geom_points(position=position_dodge(width=0.75))
arreglará la forma en que los puntos en su diagrama no se alinean con los cuadros.geom_jitter
, que es un acceso directo para todos los parámetros de geom_point () que fluctúan.geom_jitter(position_dodge)
el trabajo? He estado usandogeom_points(position_jitterdodge)
para agregar puntos a los gráficos de caja con esquivar.geom_jitter
aquí . En mi experiencia desde mi respuesta anterior, encuentro innecesario usar boxplots. Nunca. Si tengo muchos puntos, uso gráficos de violín que muestran la densidad de puntos en detalles mucho más finos que los gráficos de caja. Los gráficos de caja se inventaron cuando trazar muchos puntos o sus densidades no eran convenientes. Quizás es hora de que empecemos a pensar en abandonar esta visualización (para discapacitados).Respuestas:
La matriz que especificó para los contrastes es correcta en principio. Para convertirlo en una matriz de contraste adecuada , debe calcular el inverso generalizado de su matriz original.
Si
M
es tu matriz:Ahora, calcule el inverso generalizado usando
ginv
y transponga el resultado usandot
:El resultado es idéntico al de @Greg Snow. Use esta matriz para su análisis.
Esta es una manera mucho más fácil que hacerlo manualmente.
Hay una forma aún más fácil de generar una matriz de diferencias deslizantes (también conocido como contrastes repetidos ). Esto se puede hacer con la función
contr.sdif
y el número de niveles de factores como parámetro. Si tiene cinco niveles de factores, como en su ejemplo:fuente
Si la matriz en la parte superior es cómo está codificando las variables ficticias (lo que está pasando a la función
C
ocontrast
en R), entonces la primera compara el primer nivel con las otras (en realidad 0.8 veces la primera resta de 0.2 veces la suma de los otros).El segundo término compara los primeros 2 niveles con el último 3. El tercero compara los primeros 3 niveles con el último2 y el cuarto compara los primeros 4 niveles con el último.
Si desea hacer las comparaciones que describe (compare cada par), la codificación de variable ficticia que desea es:
fuente
aov()
lugar delm()
? Lo pregunto porque he leído varios tutoriales, en los que las matrices de contrasteaov()
se construyen exactamente como la que da Roman. Por ejemplo, véase el Capítulo 5 de cran.r-project.org/doc/contrib/Vikneswaran-ED_companion.pdfaov
función llama a lalm
función para hacer los cálculos principales, por lo que cosas como las matrices de contraste tendrán el mismo efecto en ambos.