MedData Lab
Kanalga Telegram’da o‘tish
О работе с данными в медицинских и биомедицинских исследованиях. Анализ, интерпретация, ограничения, аналитические решения. R • Python • научная практика Автор канала @phlenyxa Курс по анализу данных в R ↓ meddatalab.ru
Ko'proq ko'rsatishMamlakat belgilanmaganToif belgilanmagan
383
Obunachilar
+224 soatlar
+177 kunlar
+6330 kunlar
Postlar soni
Ma'lumot yuklanmoqda...
Reaktsiyalar
Izohlar
Telegram Yulduzlari
Eng yaxshi postlar bo'yicha
Ma'lumot yuklanmoqda...
Nashrni tahlil qilish
Postlar | Ko'rish dinamikasi | |||||
31 августа начинаем третий поток курса по анализу данных в R
До старта осталось совсем немного.
На курсе мы последовательно проходим весь путь анализа данных:
исходная таблица → подготовка данных → описательная статистика → выбор метода → анализ → визуализация в ggplot2 → интерпретация результата.
Для меня важно не просто показать отдельные команды R, а научить самостоятельно разбирать свои данные и понимать, что именно происходит на каждом этапе анализа. R — рабочий инструмент, который делает этот процесс воспроизводимым и управляемым.
Начинаем с самых основ, поэтому опыт программирования не нужен.
До старта стоимость участия остаётся 23 000 ₽.
С 31 августа — 27 000 ₽.
Присоединиться к потоку можно до второго занятия — 3 сентября.
И, как и раньше, оплачивать сразу не нужно: сначала можно посмотреть первую лекцию, пройти практику и прочитать лонгрид, а уже потом решить, подходит ли вам формат.
Подробнее о программе и участие — http://meddatalab.ru/ | 64 | 0 | 2 | 8 | Loading... | |
+3 p = 0,01. Новый протокол работает? Часть 2 — разбираем данные в R
В первой части этого кейса Дамир Ильдарович Марапов у себя в канале разобрал методологическую сторону: что такое конфаундинг, почему в нерандомизированном исследовании простого сравнения групп может быть недостаточно и как подходить к выбору потенциальных конфаундеров.
А здесь разберём тот же пример уже практически — в R.
Напомню исходные данные:
120 пациентов после планового хирургического вмешательства,
по 60 человек в каждой группе.
Средняя длительность госпитализации:
новый протокол — 5,5 дня
стандартный — 6,8 дня
1. Исходное сравнение
Начнём с обычного сравнения двух независимых групп:
t.test(hospital_days ~ protocol, data = dat)
Получаем разницу около 1,3 дня, p = 0,008 — при округлении p ≈ 0,01.
То есть без учёта других факторов длительность госпитализации в группе нового протокола статистически значимо меньше.
Но исследование нерандомизированное, поэтому важно оценить, насколько сопоставимы сами группы.
2. Возраст пациентов
Средний возраст:
новый протокол — 52,9 года
стандартный — 62,4 года
Почти 10 лет разницы.
Посмотрим, как распределяется возраст внутри каждой группы.
Для визуализации используем ggplot2 — пакет R, который позволяет собирать графики из отдельных слоёв. Здесь совместим boxplot с отдельными наблюдениями: так видны и распределение, и данные каждого пациента.
ggplot(dat, aes(protocol, age_years)) +
geom_boxplot() +
geom_jitter(width = 0.1, alpha = 0.5)
Различие в возрасте между группами хорошо видно и на графике.
Теперь оценим, как связаны возраст и длительность госпитализации:
ggplot(dat, aes(age_years, hospital_days, colour = protocol)) +
geom_point(alpha = 0.6) +
geom_smooth(method = "lm")
Каждая точка — один пациент, линии показывают линейную тенденцию внутри групп. В обеих группах с увеличением возраста длительность госпитализации имеет тенденцию увеличиваться.
С учётом методологической логики, разобранной в первой части, возраст имеет смысл включить в анализ как потенциальный конфаундер.
3. Учитываем возраст
Для этого используем линейную регрессию. Она позволяет оценить связь протокола с длительностью госпитализации, одновременно учитывая возраст пациента.
В R линейная модель задаётся функцией lm(). Слева указываем исход — длительность госпитализации, справа — протокол и возраст:
model <- lm(
hospital_days ~ protocol + age_years,
data = dat
)
summary(model)
confint(model)
summary() показывает коэффициенты модели и p-value,
а confint() — 95% доверительные интервалы.
До учёта возраста различие между протоколами составляло около 1,3 дня.
После поправки на возраст оценка уменьшается до 0,82 дня. Для протокола p ≈ 0,14, а 95% доверительный интервал включает 0.
То есть после учёта возраста различие между группами становится менее выраженным и статистически менее определённым.
Это не означает, что мы доказали отсутствие эффекта. Но и сказать:
«новый протокол сокращает госпитализацию на 0,8 дня»
по этим данным нельзя.
Корректнее сказать так: после поправки на возраст оценка различий между протоколами уменьшилась примерно до 0,8 дня, а 95% доверительный интервал включает 0 — поэтому по этим данным нельзя исключить отсутствие различий между протоколами.
Именно для этого здесь и нужна модель: посмотреть, как меняется оценка после учёта важного исходного различия между группами.
При этом технически весь анализ в R занимает совсем немного кода: t-test, два графика и линейная модель.
Когда статистическая задача сформулирована, реализовать её в R часто можно всего несколькими строками.
Для практикума мы подготовили учебный датасет и полный R-скрипт с комментариями, чтобы весь анализ можно было скачать и повторить самостоятельно. | 499 | 3 | 0 | 11 | Loading... | |
Простой пример того, как конфаундеры мешают правильно оценить различия и как мы можем устранить эти помехи с помощью регрессии и R
Пост подготовлен совместно с медицинским кибернетиком Еленой Филипповой, автором канала MedData Lab.
В клинических исследованиях есть понятие конфаундеров - вмешивающихся, или спутывающих, факторов. Это признаки, которые связаны как с изучаемым исходом, так и с воздействием, не являясь при этом промежуточным звеном влияния воздействия на исход. Часто к ним относятся возраст, тяжесть заболевания, наличие сопутствующих заболеваний и т.д. Если в наблюдательном исследовании мы сравниваем группы основного лечения и контроля, и при этом они имеют различия по каким-либо вмешивающимся факторам, это может существенно изменить результаты сравнения.
В статистике есть разные способы устранять влияние конфаундеров, чтобы получить корректные результаты анализа. Один из них - рандомизация, то есть случайный отбор исследуемых в сравниваемые группы. Это позволяет снять проблему влияния как известных, так и неизвестных нам конфаундеров.
А если рандомизация не проводилась? Например, мы проводим когортное исследование по данным пациентов, наблюдающихся в больнице. То или иное лечение им назначается не случайно, а исходя из показаний. Легко представить, что группы пациентов с разным лечением будут заодно различаться и по другим важным признакам, таким как коморбидность или тяжесть заболевания. И, конечно, это будет влиять на результаты сравнения.
Для устранения или минимизации влияния конфаундеров в такой ситуации можно использовать:
🔹анализ подгрупп,
🔹многофакторную регрессию,
🔹псевдорандомизацию методом сопоставления оценок склонности (PSM).
Все эти методы с примерами в программе SPSS мы будем подробно изучать во второй теме Курса по сложным методам, который стартует 14 сентября.
А в этом посте вместе с медицинским кибернетиком Еленой Филипповой мы проведем статистический разбор подобной ситуации с применением языка R.
Итак. В клинике ретроспективно проанализировали результаты планового хирургического вмешательства: 60 пациентов в первой группе получали новый протокол ранней активизации, 60 пациентов во второй группе - стандартное послеоперационное ведение
При оценке длительности госпитализации пациентов:
средние значения составили, соответственно, 5,5 и 6,8. Разность средних составила -1,29 дня с 95% ДИ: -2,25 до -0,34, p = 0,008.
Другими словами, различия групп были статистически значимы.
Все бы хорошо, но наше исследование наблюдательное, то есть отбор в группы был неслучайным. Поэтому мы дополнительно провели сравнение групп по потенциальным конфаундерам. И получили, что возраст исследуемых имел заметные различия:
в первой группе он составил 52,9 года, а во второй был почти на 10 лет старше - 62,4 года.
Очевидно, что меньшие сроки госпитализации в первой группе могли быть обусловлены не только новым протоколом, но и более молодым возрастом пациентов. Поэтому для корректного вывода о связи проводимого лечения с длительностью госпитализации нам нужно устранить влияние конфаундера - возраста. И для этого мы можем воспользоваться методом регрессии.
Продолжение следует🔽 | 67 | 0 | 0 | 9 | Loading... |

