![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]()
Сообщение
#1
|
|
![]() Группа: Пользователи Сообщений: 20 Регистрация: 29.10.2008 Из: Челябинск Пользователь №: 5459 ![]() |
Здравствуйте уважаемые участники форума!
В одной статье мне встретилось следующее: имеем две группы пациентов, каждая из которых обследована на 3 визитах. Пациенты на визитах строго одни и те же, то есть по логике самым простым должно быть сравнение групп между собой на 1, 2 и 3 визитах с помощью критерия Манна-Уитни, и сравнение динамики внутри групп 1 визит---2 визит --- 3 визит с помощью критерия Фридмана с дальнейшим попарным сравнением с поправкой на множественные сравнения. Если есть желание избежать ошибки множественных сравнений на визитах, то проводится одномерный анализ повторных измерений с установлением влияния временного фактора, фактора группы и наличие их взаимодействия (непараметрического аналога данного анализа я не знаю, если подскажете. буду благодарна) В статье было указано, что анализ проведен с помощью критерия Краскела Уоллиса с поправкой на множественность сравнений с помощью программы Prism. И далее на графиках имели место звездочки для сравнения двух групп на каком-либо визите, либо для сравнения динамики между визитами внутри какой-либо из групп. Это правильная процедура для анализа? У меня было предположение, что это попытка избежать ошибки множественных сравнений путем того, что мы все 6 точек считаем отдельными выборками, но там же как связанные, так и не связанные данные. Я не вижу нигде в доступных мне источниках упоминание о каком-то варианте критерия Краскела-Уоллиса, который использовался бы как аналог одномерного анализа повторных измерений. Заранее спасибо за ответ. Прогуглила форум и в одном из тредов нашла мнение 100$ по похожему случаю (критерий Крускела применять некорректно) http://forum.disser.ru/index.php?showtopic=1246&st=30 Это интерлейкины, их очень сложно привести в нормальное распределение, кроме того три точки нелинейны, это уровень ИЛ до воздействия, на фоне воздействия, после окончания. Соответственно связь с лечением будет только в одной точке - втором визите, как бы не получилось, что эти различия будут проигнорированы при анализе повторных измерений Сообщение отредактировал Varta - 29.06.2023 - 20:58 |
|
![]() |
![]() |
![]() |
![]()
Сообщение
#2
|
|
Группа: Пользователи Сообщений: 27 Регистрация: 7.12.2012 Пользователь №: 24440 ![]() |
но не по остаткам модели. Что значат эти "остатки модели"? Далёк всё же от статистики) Через месяц - это абсолютный показатель времени Разницу вычислять - не очень, т.к. разный размер выборок (у части животных симптоматика прогрессировала быстрее и они погибли раньше повторного анализа). как в этом случае произвести вычитание? Вообще, с приведенными данными модно проделать очень много всякого, хорошие такие данные. вкусные ![]() Я просто не знаю, что из этого реализовано в Statistica 12, за неимением оной. А еще не совсем ясно, проверка каких конкретно гипотез интересует. Возможно, мне надо осваивать другие программы)) Гипотеза. что лечение повлияло на развитие симптоматики и этот эффект был стойким во времени. Само заболеваний вылечить нельзя, т.к. оно генетически-обусловлено, но у "лечённой" группы показатели были лучше, как можно видеть из данных. |
|
![]() |
![]() |
![]()
Сообщение
#3
|
|
Группа: Пользователи Сообщений: 107 Регистрация: 27.12.2015 Пользователь №: 27815 ![]() |
Что значат эти "остатки модели"? Посмотрите учебные материалы по ссылке. Разницу вычислять - не очень, т.к. разный размер выборок (у части животных симптоматика прогрессировала быстрее и они погибли раньше повторного анализа). как в этом случае произвести вычитание? Тут возможны варианты: исключать из анализа (умер/не умер - другой вопрос), проставить умершим нули (время 0 у живого быть не может), оставить для использования (реально только через смешанные модели). В коде ниже указана попытка сделать анализ повторных измерений при допущении различных трансформаций. Лучшей оказалась модель с предварительным логарифмированием зависимой переменной. На графике видно, что группы изначально различались, к концу исследования эти различия усилились. На мой взгляд, если различия объясняются эффектом лечения, то результат (сила эффекта) достаточно скромный. Чтобы в этом убедиться, нужно или усилить эффект от лечения или увеличить количество наблюдений. CODE library(mgcv) txt <- "id value group time 1 31 control first 2 40 control first 3 19 control first 4 55 control first 5 27 control first 6 3 control first 7 40 control first 8 29 control first 9 17 control first 10 46 control first 11 55 treatment first 12 55 treatment first 13 38 treatment first 14 55 treatment first 15 55 treatment first 16 55 treatment first 17 27 treatment first 18 40 treatment first 1 0,7 control second 2 1,4 control second 3 0,5 control second 4 3 control second 5 0,5 control second 6 1,5 control second 7 1,6 control second 11 3 treatment second 12 6,6 treatment second 13 2,4 treatment second 14 2,1 treatment second 15 3 treatment second 16 1,4 treatment second 17 4 treatment second 18 9,7 treatment second" df <- read.table(text = txt, header = TRUE, dec = ',') #df <- df[-which(df$id %in% c(8, 9, 10)),] df$group <- factor(df$group, levels = c('control', 'treatment')) df$time <- factor(df$time, levels = c('first', 'second')) df$val1 <- log(df$value) df$val2 <- df$value/60 fitA <- gam(value~time*group + s(id, bs = 're'), family = gaussian(link = 'identity'), data = df) fitB <- gam(value~time*group + s(id, bs = 're'), family = gaussian(link = 'log'), data = df) fitC <- gam(value~time*group + s(id, bs = 're'), family = gaussian(link = 'inverse'), data = df) fit1 <- gam(val1~time*group + s(id, bs = 're'), family = gaussian(link = 'identity'), data = df) fit2 <- gam(val2~time*group + s(id, bs = 're'), family = betar(link = 'logit'), data = df) mods <- ls(pattern = 'fit') modSum <- do.call(cbind, lapply(seq_along(mods), function(i) { mod <- summary(get(mods[i])) result <- rbind(mod$dev.expl, mod$r.sq) row.names(result) <- c('DevExpl', 'RsqAdj') colnames(result) <- mods[i] return(result) } ) ) pred <- predict(fit1, newdata = expand.grid(group = levels(df$group), time = levels(df$time)), newdata.guaranteed = TRUE, type = 'response', exclude = 's(id)', se.fit = TRUE) pred$cil <- pred$fit - pred$se.fit*qnorm(0.975) pred$ciu <- pred$fit + pred$se.fit*qnorm(0.975) pred$mu <- exp(pred$fit) pred$lwr <- exp(pred$cil) pred$upr <- exp(pred$ciu) pred <- data.frame(pred) pred <- cbind(pred, expand.grid(group = levels(df$group), time = levels(df$time)) ) pl <- ggplot(pred, aes(x = time, y = mu, ymax = upr, ymin = lwr, shape = group)) + geom_pointrange(position = position_dodge(0.1)) + theme_bw() + theme(strip.text = element_blank()) + scale_y_log10() Единственный недостаток - тормоза, но сомневаюсь, что Ваши выборки столь велики, чтобы Вы из заметили. Это не баг, это - фича (с).
Прикрепленные файлы
|
|
![]() |
![]() |
![]() ![]() |