Mam do analizy zestaw danych z niezrównoważonymi powtarzanymi pomiarami i przeczytałem, że sposób, w jaki większość pakietów statystycznych obsługuje to z ANOVA (tj. Suma kwadratów typu III) jest błędny. Dlatego chciałbym użyć modelu mieszanych efektów do analizy tych danych. Dużo czytałem o modelach mieszanych R
, ale wciąż jestem R
nowicjuszem w modelach z efektami mieszanymi i nie jestem zbyt pewny, że robię wszystko dobrze. Zauważ, że nie mogę jeszcze całkowicie rozwieść się z „tradycyjnymi” metodami i nadal potrzebuję wartości i testów post hoc.
Chciałbym wiedzieć, czy poniższe podejście ma sens, czy też robię coś strasznie złego. Oto mój kod:
# 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)
Mam kilka konkretnych pytań:
- Czy to prawidłowy sposób analizowania modeli efektów mieszanych? Jeśli nie, co powinienem zamiast tego zrobić.
- Czy wykresy krytyki wyprowadzane przez mcp.fnc są wystarczająco dobre do weryfikacji założeń modelu, czy też powinienem podjąć dodatkowe kroki.
- Rozumiem, że aby modele mieszane były ważne, dane muszą szanować założenia normalności i homoscedastyczności. Jak ocenić, co jest „w przybliżeniu normalne”, a co nie, patrząc na wykresy krytyki wygenerowane przez mcp.fnc? Czy muszę to po prostu wyczuć, czy jest to przepisany sposób robienia rzeczy? Jak solidne są modele mieszane w odniesieniu do tych założeń?
- Muszę ocenić różnice między trzema punktami czasowymi dla ~ 20 cech (biomarkerów) badanych w mojej próbie. Dopasowanie i testowanie osobnych modeli dla każdego możliwego do zaakceptowania, o ile zgłaszam wszystkie podjęte testy (znaczące lub nie), czy też potrzebuję jakiejkolwiek formy korekty do wielu porównań.
Aby być nieco bardziej precyzyjnym w odniesieniu do eksperymentu, oto kilka szczegółów. Obserwowaliśmy wielu uczestników, którzy poddawali się leczeniu. Zmierzyliśmy wiele biomarkerów przed rozpoczęciem leczenia i po dwóch punktach czasowych. Chciałbym zobaczyć, czy między tymi trzema punktami czasowymi istnieją różnice w tych biomarkerach.
Opieram większość tego, co robię tutaj, na tym samouczku , ale wprowadziłem pewne zmiany w zależności od moich potrzeb i rzeczy, które czytam. Wprowadzone przeze mnie zmiany to:
- przypisać współczynnik „czasu” do uzyskania porównań t1-t2, t2-t3 i t1-t3 z pvals.fnc (z pakietu languageR)
- porównaj mój model mieszany z modelem zerowym przy użyciu przybliżonego testu F opartego na podejściu Kenwarda-Rogera (przy użyciu pakietu pbkrtest) zamiast testu współczynnika wiarygodności (ponieważ czytam, że Kenward-Roger jest teraz lepiej postrzegany)
- Użyj pakietu LMERConvenienceFunctions, aby sprawdzić założenia i usunąć wartości odstające (ponieważ czytam, że modele mieszane są bardzo wrażliwe na wartości odstające)