Tengo un desbalance de medidas repetidas conjunto de datos a analizar, y he leído que la forma en que la mayoría de los paquetes estadísticos de manejar esto con ANOVA (es decir, el tipo III suma de cuadrados) está equivocado. Por lo tanto, me gustaría utilizar un modelo de efectos mixtos para el análisis de estos datos. He leído mucho acerca de los modelos mixtos en R
, pero todavía soy muy nuevo en R
y modelos de efectos mixtos y no muy seguro de que estoy haciendo las cosas bien. Tenga en cuenta que yo no puedo todavía completamente divorcio a mí mismo de métodos "tradicionales", y todavía necesita $p$-valores y post hoc de ensayos.
Me gustaría saber si el siguiente enfoque tiene sentido, o si estoy haciendo algo terriblemente mal. Aquí está mi código:
# load packages
library(lme4)
library(languageR)
library(LMERConvenienceFunctions)
library(coda)
library(pbkrtest)
# import data
my.data <- read.csv("data.csv")
# create separate data frames for each DV & remove NAs
region.data <- na.omit(data.frame(time=my.data$time, subject=my.data$subject, dv=my.data$dv1))
# output summary of data
data.summary <- summary(region.data)
# fit model
# "time" is a factor with three levels ("t1", "t2", "t3")
region.lmer <- lmer(dv ~ time + (1|subject), data=region.data)
# check model assumptions
mcp.fnc(region.lmer)
# remove outliers (over 2.5 standard deviations)
rm.outliers <- romr.fnc(region.lmer, region.data, trim=2.5)
region.data <- rm.outliers$data
region.lmer <- update(region.lmer)
# re-check model assumptions
mcp.fnc(region.lmer)
# compare model to null model
region.lmer.null <- lmer(dv ~ 1 + (1|subject), data=region.data)
region.krtest <- KRmodcomp(region.lmer, region.lmer.null)
# output lmer summary
region.lmer.summary <- summary(region.lmer)
# run post hoc tests
t1.pvals <- pvals.fnc(region.lmer, ndigits=10, withMCMC=TRUE)
region.lmer <- lmer(dv ~ relevel(time,ref="t2") + (1|subject), data=region.data)
t2.pvals <- pvals.fnc(region.lmer, ndigits=10, withMCMC=TRUE)
region.lmer <- lmer(dv ~ relevel(time,ref="t3") + (1|subject), data=region.data)
t3.pvals <- pvals.fnc(region.lmer, ndigits=10, withMCMC=TRUE)
# Get mcmc mean and 50/95% HPD confidence intervals for graphs
# repeated three times and stored in a matrix (not shown here for brevity)
as.numeric(t1.pvals$fixed$MCMCmean)
as.numeric(t1.pvals$fixed$HPD95lower)
as.numeric(t1.pvals$fixed$HPD95upper)
HPDinterval(as.mcmc(t1.pvals$mcmc),prob=0.5)
HPDinterval(as.mcmc(t1.pvals$mcmc),prob=0.5)
Específicamente algunas de las preguntas que tengo:
- Es esta una forma válida de análisis de modelos de efectos mixtos? Si no, ¿qué debo estar haciendo en su lugar.
- Son las críticas parcelas de salida por mcp.fnc lo suficientemente bueno para la verificación de los supuestos del modelo, o debo de tomar medidas adicionales.
- Entiendo que para los modelos mixtos para ser válidos, los datos deben respetar los supuestos de normalidad y homoscedasticity. Cómo puedo juzgar lo que es "aproximadamente normal" y qué no lo es por mirar el la crítica gráficos generados por mcp.fnc? Qué necesito para tener una idea para esto, o es su una forma establecida de hacer las cosas? Cómo robusto son modelos mixtos en relación a estos supuestos?
- Necesito para evaluar las diferencias entre los tres puntos de tiempo de ~20 características (biomarcadores) de los sujetos en mi muestra. Es montaje y pruebas de modelos separados para cada aceptable tanto tiempo como yo informe llevado a cabo pruebas (significativas o no), o necesito alguna formulario de corrección para comparaciones múltiples.
Para ser un poco más precisos en lo que respecta a la experiencia, aquí hay algunos detalles más. Seguimos con un número de participantes longitudinalmente como se sometieron a un tratamiento. Hemos medido una serie de biomarcadores antes del inicio del tratamiento y en dos puntos de tiempo después. Lo que me gustaría ver es si hay diferencia en estos biomarcadores entre los tres puntos en el tiempo.
Me estoy basando la mayor parte de lo que yo estoy haciendo aquí, en este tutorial, pero hizo algunos cambios en base a mis necesidades y cosas que he leído. Los cambios que he hecho son:
- relevel el factor "tiempo" para obtener t1-t2, t2-t3 y t1-t3 comparaciones con pvals.fnc (desde el languageR paquete)
- comparar mi modelo mixto para el modelo nulo uso de un aproximado de F-test, basado en un Kenward-Roger el enfoque de la (utilizando el pbkrtest paquete) en lugar de una prueba de razón de verosimilitud (porque he leído, que Kenward-Roger es mejor considerado ahora)
- El uso de la LMERConvenienceFunctions paquete para comprobar hipótesis y eliminar los valores atípicos (porque he leído que los modelos mixtos son muy sensibles a los valores extremos)