У мене є незбалансований набір даних повторних заходів для аналізу, і я читав, що спосіб більшості статистичних пакетів обробляє це за допомогою ANOVA (тобто сума третього типу) неправильна. Тому я хотів би використовувати модель змішаних ефектів для аналізу цих даних. Я багато читав про змішані моделі R
, але я все ще дуже новинки R
та моделей зі змішаним ефектом і не дуже впевнений, що все роблю правильно. Зауважте, що я ще не можу повністю розлучитися з "традиційними" методами, і мені ще потрібні та пост-тести.
Мені хотілося б знати, чи має сенс наступний підхід, чи я роблю щось жахливо неправильне. Ось мій код:
# 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)
У мене є деякі конкретні питання:
- Це вірний спосіб аналізу моделей змішаних ефектів? Якщо ні, то що мені робити замість цього.
- Чи достатньо хороші графіки критики, виведені mcp.fnc, для перевірки припущень щодо моделей, чи я повинен вживати додаткових кроків.
- Я вважаю, що для змішаних моделей, щоб бути дійсними, дані потребують дотримання припущень щодо нормальності та гомоскедастичності. Як судити про те, що "приблизно нормально", а що не, дивлячись на сюжети критики, згенеровані mcp.fnc? Чи потрібно мені просто відчути це, чи це їх встановлений спосіб робити? Наскільки надійні змішані моделі стосовно цих припущень?
- Мені потрібно оцінити відмінності між трьома часовими точками для ~ 20 характеристик (біомаркерів) суб'єктів у моїй вибірці. Чи підходить і тестується окрема модель для кожної прийнятної, якщо я повідомляю про всі проведені тести (значні чи ні), чи мені потрібна будь-яка форма корекції для кількох порівнянь.
Щоб бути трохи більш точним щодо експерименту, ось ще кілька деталей. Ми довго стежили за кількістю учасників, коли вони проходили лікування. Ми вимірювали кількість біомаркерів перед початком лікування та через два моменти часу після. Що я хотів би побачити, якщо є різниця в цих біомаркерів між трьома часовими точками.
Я базую більшу частину того, що я роблю тут, на цьому підручнику , але вніс деякі зміни, виходячи з моїх потреб та речей, які я читав. Зміни, які я внесла:
- вивести коефіцієнт "час" для отримання t1-t2, t2-t3 і t1-t3 порівняння з pvals.fnc (з пакета languageR)
- порівняйте мою змішану модель з нульовою моделлю, використовуючи приблизний F-тест, заснований на підході Кенварда-Роджера (використовуючи пакет pbkrtest), а не тест коефіцієнта ймовірності (тому що я читав, що Кенвард-Роджер краще розглядається зараз)
- Використовуйте пакет LMERConvenienceFunctions для перевірки припущень та видалення сторонніх людей (бо я читав, що змішані моделі дуже чутливі до людей, що вижили)