Estou fazendo uma ANOVA de sentido único (por espécie) com 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
onde eu comparo a intensidade 0,5 contra 5, 5 contra 12,5 e assim por diante. Estes são os dados em que estou trabalhando
com os seguintes 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 é a média global para "nifhargus". Na intensidade1, estou comparando médias da intensidade 0,5 contra 5.
Se eu entendi direito, o coeficiente de intensidade1 de 2,2 deve ser metade da diferença entre as médias dos níveis de intensidade 0,5 e 5. No entanto, meus cálculos manuais não coincidem com os do resumo. Alguém pode chip no que estou fazendo errado?
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
fonte
fonte
geom_points(position=position_dodge(width=0.75))
corrigirá a maneira como os pontos em seu gráfico não se alinham com as caixas.geom_jitter
, que é um atalho para todos os parâmetros geom_point () que tremem.geom_jitter(position_dodge)
o trabalho? Eu tenho usadogeom_points(position_jitterdodge)
para adicionar pontos aos boxplots com esquivando.geom_jitter
aqui . Na minha experiência desde a minha resposta acima, acho desnecessário usar boxplots. Sempre. Se tenho muitos pontos, utilizo gráficos de violino que mostram densidade de pontos em detalhes muito mais finos que os gráficos de caixa. Os boxplots foram inventados quando a plotagem de muitos pontos ou suas densidades não eram convenientes. Talvez seja a hora de começarmos a abandonar essa visualização (deficiente).Respostas:
A matriz que você especificou para os contrastes está correta em princípio. Para convertê-lo em uma matriz de contraste apropriada , é necessário calcular o inverso generalizado da sua matriz original.
Se
M
é sua matriz:Agora, calcule o inverso generalizado usando
ginv
e transponha o resultado usandot
:O resultado é idêntico ao de @Greg Snow. Use essa matriz para sua análise.
Essa é uma maneira muito mais fácil do que fazer manualmente.
Existe uma maneira ainda mais fácil de gerar uma matriz de diferenças deslizantes (também conhecidas como contrastes repetidos ). Isso pode ser feito com a função
contr.sdif
e o número de níveis de fator como parâmetro. Se você tiver cinco níveis de fator, como no seu exemplo:fonte
Se a matriz na parte superior é como você está codificando as variáveis fictícias (o que você está passando para
C
oucontrast
funciona em R), então a primeira delas está comparando o 1º nível com os outros (na verdade, 0,8 vezes o 1º subtraído de 0,2 vezes o soma dos demais).O segundo termo compara os primeiros 2 níveis aos últimos 3. O terceiro compara os primeiros 3 níveis aos últimos2 e o quarto compara os primeiros 4 níveis ao último.
Se você deseja fazer as comparações que você descreve (compare cada par), a codificação da variável dummy que você deseja é:
fonte
aov()
vez delm()
? Estou perguntando, porque li vários tutoriais, nos quais as matrizes de contrasteaov()
são construídas exatamente como a apresentada por Roman. Por exemplo, consulte o Capítulo 5 em cran.r-project.org/doc/contrib/Vikneswaran-ED_companion.pdfaov
função chama alm
função para fazer os cálculos principais, portanto, coisas como matrizes de contraste terão o mesmo efeito em ambas.