J'utilise lmer dans R pour vérifier l'effet de condition ( cond
) sur un résultat. Voici quelques données composées, où s est l'identifiant du sujet et a
, b
et c
sont des conditions.
library("tidyr")
library("dplyr")
set.seed(123)
temp <- data.frame(s = paste0("S", 1:30),
a = rnorm(30, -2, 1),
b = rnorm(30, -3, 1),
c = rnorm(30, -4, 1))
Je voudrais comparer
- niveau
a
à la moyenne des niveauxb
etc
et - niveau
b
à niveauc
.
Ma question est la suivante: comment puis-je définir les contrastes de manière à ce que l'ordonnée à l'origine reflète la moyenne des trois conditions et que les deux estimations calculées reflètent directement les différences définies en 1. et 2.?
J'ai essayé avec
c1 <- cbind(c(-0.5, 0.25, 0.25), c(0, -0.5, 0.5))
gather(temp, cond, result, a, b, c) %>%
lmer(result ~ cond + (1|s), data = ., contrasts = list(cond = c1))
où cond2
semble être OK, mais cond1
ne l'est pas.
Suite Comment interpréter ces contrastes personnalisés? , J'ai essayé d'utiliser l'inverse généralisé à la place, mais ces estimations n'ont pas de sens non plus.
c2 <- t(ginv(c1))
gather(temp, cond, result, a, b, c) %>%
lmer(result ~ cond + (1|s), data = ., contrasts = list(cond = c2))
J'ai aussi essayé les contrastes Helmert, mais les moyens ne correspondent toujours pas.
gather(temp, cond, result, a, b, c) %>%
mutate(cond = factor(cond, levels = c("c", "b", "a"))) %>%
lmer(result ~ cond + (1|s), data = ., contrasts = list(cond = contr.helmert))
Quelle est la bonne façon de procéder?