Интерпретация 95% ДИ для модели оценочной разницы между двумя факторами уровня в линейной модели смешанных эффектов - PullRequest
0 голосов
/ 05 февраля 2019

Это мой фрейм данных (пожалуйста, скопируйте и вставьте для воспроизведения):

Control <- replicate(2, c("112", "113", "116", "118", "127", "131", "134", "135", "136", "138", "143", "148", "149", "152", "153", "155", "162", "163"))
EPD <- replicate(2, c("101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "114", "115", "117", "119", "120", "122", "124", "125", "126", "128", "130", "133", "137", "139", "140", "141", "142", "144", "145", "147"))
Subject <- c(Control, EPD)
Control_FA_L <- c(0.43, 0.39, 0.38, 0.58, 0.37, 0.5, 0.35, 0.36, 0.72, 0.38, 0.45, 0.30, 0.47, 0.30, 0.67, 0.34, 0.42, 0.29)
Control_FA_R <- c(0.36, 0.49, 0.55, 0.59, 0.33, 0.41, 0.32, 0.50, 0.59, 0.52, 0.32, 0.40, 0.49, 0.33, 0.46, 0.39, 0.37, 0.33)
EPD_FA_L <- c(0.25, 0.39, 0.36, 0.42, 0.21, 0.40, 0.43, 0.16, 0.31, 0.41, 0.39, 0.40, 0.35, 0.29, 0.31, 0.24, 0.39, 0.36, 0.54, 0.38, 0.34, 0.28, 0.42, 0.33, 0.40, 0.36, 0.42, 0.28, 0.40, 0.41)
EPD_FA_R <- c(0.26, 0.36, 0.36, 0.61, 0.22, 0.33, 0.36, 0.34, 0.35, 0.37, 0.39, 0.45, 0.30, 0.31, 0.50, 0.31, 0.29, 0.43, 0.41, 0.21, 0.38, 0.28, 0.66, 0.33, 0.50, 0.27, 0.46, 0.37, 0.26, 0.39)
FA <- c(Control_FA_L, Control_FA_R, EPD_FA_L, EPD_FA_R)
Control_Volume_L <- c(99, 119, 119, 146, 127, 96, 100, 132, 103, 103, 107, 142, 140, 134, 117, 117, 133, 143)
Control_Volume_R <- c(93, 123, 114, 152, 122, 105, 98, 138, 111, 110, 115, 137, 142, 140, 124, 102, 153, 143)
EPD_Volume_L <- c(132, 115, 140, 102, 130, 131, 110, 124, 102, 111, 93, 92, 94, 104, 92, 115, 144, 118, 104, 132, 90, 102, 94, 112, 106, 105, 79, 114, 104, 108)
EPD_Volume_R <- c(136, 116, 143, 105, 136, 137, 103, 121, 105, 115, 97, 97, 93, 108, 91, 117, 147, 111, 97, 129, 85, 107, 91, 116, 113, 101, 75, 108, 95, 98)
Volume <- c(Control_Volume_L, Control_Volume_R, EPD_Volume_L, EPD_Volume_R)
Group <- c(replicate(36, "Control"), replicate(60, "Patient"))

data <- data.frame(Subject, FA, Volume, Group) 

Затем я запускаю линейную смешанную модель для значений FA с пакетом nlme:

library(nlme)
lmm <- lme(FA ~ Volume + Group, ~ 1|Subject, data = data)
summary(lmm)

Теперь я хотел бы определить 95% доверительный интервал для модельной оценки различий в ФА между двумя уровнями «группового» фактора (контроль и пациент).Обычно я выполняю следующий код:

# Compute 95% Confidence Interval for Group factor

# True difference in STN FA between Control and EPD subjects
0.0857851 # Value from mixed model

# Multiply 97.5 percentile point of normal distribution by std error from mixed model
1.96 * 0.02555076 # 95% CI:  0.086 ± 0.050 mm^3 (p = .0016) - !!CI includes values > 1!!

Мне трудно понять, что это значит.Рассчитанный мною доверительный интервал включает значения больше 1, что не имеет смысла, так как предполагается, что FA является отношением от 0 до 1. Является ли тот факт, что моя зависимая переменная является значением отношения, является проблемой?Если да, то нужно ли мне каким-то образом преобразовывать мои данные (например, преобразование журнала), чтобы исправить это?Любая обратная связь будет принята с благодарностью!

1 Ответ

0 голосов
/ 05 февраля 2019

Как указывает @ 42-, проблема здесь связана с самой моделью.Поскольку FD ограничено [0, 1], мы не можем использовать lme, что допускает нормальные ошибки.

Определение модели

Я не знаю подробностей о ваших данных /эксперимент, но, возможно, бета-модель может работать;в частности, мы могли бы использовать иерархическую модель с перехватом в форме

enter image description here

, где мы связываем среднее значение FD µ с Subject -конкретный перехват и предикторы Volume и Group через логит-ссылку.

Реализация

Библиотека glmmTMB позволяет реализовать такую ​​модель смешанного эффекта

library(glmmTMB)
lmm <- glmmTMB(
    FA ~ Volume + Group + (1 | Subject),
    data = data,
    family = "beta_family")
summary(lmm)$coef$cond
#                 Estimate  Std. Error   z value     Pr(>|z|)
#(Intercept)   0.502858259 0.348506927  1.442893 0.1490505719
#Volume       -0.006464251 0.002782781 -2.322947 0.0201820253
#GroupPatient -0.369273205 0.104832100 -3.522520 0.0004274642

Некоторые комментарии к оценкам

Обратите внимание, что оценки даны по шкале logit (log odds);тогда оценка для Group = Control составляет 0.503 - 0.369 * 0 = 0.503, а для Group = Patient - 0.503 - 0.369 * 1 = 0.134.Разница между Group = Patient и Group = Control (снова на шкале логитов) - это просто коэффициент для GroupPatient, равный -0.369.

Сравнение предельных средних

Затем я рекомендую использовать emmeans для любых последующих анализов;в этом случае мы можем использовать emmeans::pairs для сравнения оценочных предельных средних (EMM) для двух Group уровней

library(emmeans)
confint(pairs(emmeans(lmm, "Group")))
# contrast           estimate        SE df  lower.CL  upper.CL
# Control - Patient 0.3692732 0.1048321 91 0.1610371 0.5775093
# 
#Results are given on the log odds ratio (not the response) scale.
#Confidence level used: 0.95

Обратите внимание, что результаты приведены в логит-шкале (а не вшкала ответов).Чтобы получить соотношение FD ответов для Group = Patient и Group = Control, вам необходимо вручную преобразовать эти оценки.

Объяснение: Здесь emmeans возвращает EMM для Group и pairs выполняет попарное сравнение различных уровней Group.Затем мы используем confint для возврата (по умолчанию 95%) доверительных интервалов.

Приятно то, что вам не придется ничего менять, если у вас> 2 уровня для Group;pairs будет выполнять попарные сравнения и автоматически исправлять p -значения для проверки множественных гипотез.

Для получения дополнительной информации взгляните на превосходную виньетку Сравнения и контрасты в emmeans.


Вы также можете получить расчетные предельные средние значения и доверительные интервалы на шкале коэффициентов (чтобы избежать необходимости вручную переходить от логит-шкалы к шкале коэффициентов)

confint(pairs(emmeans(lmm, "Group"), type = "response"))
# contrast          odds.ratio        SE df lower.CL upper.CL
# Control / Patient   1.446683 0.1516588 91 1.174729 1.781595

Confidence level used: 0.95
Intervals are back-transformed from the log odds ratio scale
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...