Estoy usando lmer en R para verificar el efecto de la condición ( cond) en algún resultado. Aquí están algunos hechos de seguridad de datos, donde s es el identificador de objeto y a, by cson condiciones.
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))
Me gustaria comparar
- el nivel
ade la media de los nivelesbycy - nivel
ba nivelc.
Mi pregunta es, ¿cómo configuro los contrastes para hacer esto de tal manera que la intersección refleje la media de las tres condiciones y las dos estimaciones calculadas reflejen directamente las diferencias definidas en 1. y 2.?
Lo intenté con
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))
donde cond2parece estar bien, pero cond1no lo está.
Siguiente ¿Cómo interpretar estos contrastes personalizados? , Intenté usar el inverso generalizado, pero estas estimaciones tampoco tienen sentido.
c2 <- t(ginv(c1))
gather(temp, cond, result, a, b, c) %>%
lmer(result ~ cond + (1|s), data = ., contrasts = list(cond = c2))
También probé los contrastes de Helmert, pero los medios aún no coinciden.
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))
¿Cuál es la forma correcta de hacer esto?

Respuestas:
Para los siguientes pasos, necesitamos el marco de datos en formato largo. La trama de datos
datcontiene la variable dependienteresult, el predictor categóricocond(niveles:a,byc), y el factor aleatorios.A continuación, ilustraré dos enfoques para crear una matriz de contraste correspondiente a las condiciones que desea comparar:
Contrastes personalizados
La matriz
matcorresponde a las diferencias de nivel.Para crear la matriz de contraste real, calculamos el inverso generalizado con
ginv(desdeMASS).Esta matriz de contraste
cMatse puede usar enlmer.Como puede ver, las estimaciones de efectos fijos corresponden a las diferencias especificadas anteriormente. Además, la intersección representa la media general.
Helmert contrasta con
contr.helmertTambién puede usar la
contr.helmertfunción incorporada para crear la matriz de contraste.Sin embargo, el pedido no se corresponde con el que especificó en la pregunta. Por lo tanto, tenemos que invertir el orden de las columnas y filas. La primera columna corresponde a
bvs.ay la segunda corresponde acvs. la media debya.Compare la matriz de contraste
cHelmert2concMat. Notará que las columnas son versiones escaladas de la otra matriz.El resultado de
lmeres:Esta matriz de contraste permite las mismas comparaciones que la matriz de contraste personalizada. Sin embargo, dado que los valores en la matriz son diferentes, los coeficientes de efectos fijos también son diferentes. No es sorprendente que los valores sean los mismos.t
fuente
matlo seríac(1, -1/3, -1/3, -1/3)? Por lo tanto, siempre establezco los números como estarían en la fórmula (a + (b + c + d) / 3) y luego losginvescalo adecuadamente para que los coeficientes reflejen directamente la diferencia. Y cuando cambiaste el orden en el ejemplo de Helmert, ¿eso solo coincidía con la pregunta? De lo contrario, los resultados deberían ser los mismos, independientemente del orden de los contrastes, ¿verdad?