Мы хотим выяснить: различаются ли показатели кровотока (УЗДГ) у пациентов с разными классами ХСН?
Звучит просто, но есть ловушка: пациенты с ХСН 3 класса в среднем старше и иначе распределены по полу, чем пациенты с ХСН 2а. Если просто сравнить показатели между классами, мы рискуем принять эффект возраста или пола за эффект класса ХСН.
Представьте, что вы хотите узнать: правда ли, что менеджеры получают больше, чем рабочие?
Но менеджеры в среднем старше и имеют больший стаж. Если просто сравнить зарплаты — вы не поймёте, из-за чего разница: из-за должности или из-за стажа?
Правильный подход:
Мы делаем ровно то же самое с показателями УЗДГ.
| Подход | Что делает | Проблема |
|---|---|---|
| Обычный Краскел–Уоллис | Сравнивает группы напрямую | Не учитывает возраст и пол |
| Наш подход | Сначала убирает возраст/пол, потом сравнивает | ✅ Чистый эффект класса ХСН |
Потому что ANOVA требует нормального распределения данных. Показатели УЗДГ (скорости кровотока, индексы сопротивления) часто имеют скошенное распределение. Краскел–Уоллис работает с рангами данных и не требует нормальности.
| Критерий | Требует нормальности? | Работает с рангами? | Подходит при n < 30/группу? |
|---|---|---|---|
| ANOVA | ✅ Да | ❌ Нет | ⚠️ Осторожно |
| Краскел–Уоллис | ❌ Нет | ✅ Да | ✅ Да |
## Пациентов до фильтрации: 103
## Пациентов после фильтрации: 101
## Распределение по классам ХСН:
##
## 2а 2б 3 К
## 30 36 24 11
| card_id | sex | age | class_HSN | Vs | Vm | Vd | Qm | RI |
|---|---|---|---|---|---|---|---|---|
| 26 | ж | 61 | 2б | 0.937 | 0.328 | 0.000 | 0.258 | 1.000 |
| 27 | м | 84 | 3 | 2.044 | 0.834 | 0.178 | 0.655 | 0.913 |
| 28 | м | 58 | 2а | 5.381 | 2.554 | 1.144 | 2.006 | 0.787 |
| 29 | м | 80 | 3 | 0.394 | 0.117 | 0.000 | 0.092 | 1.000 |
| 30 | м | 80 | 3 | 0.937 | 0.419 | 0.000 | 0.329 | 1.000 |
| 31 | м | 79 | 3 | 1.003 | 0.608 | 0.000 | 0.477 | 1.000 |
| 32 | м | 72 | 3 | 1.012 | 0.458 | 0.000 | 0.360 | 1.000 |
| 20 | м | 53 | 2а | 3.872 | 2.217 | 0.994 | 1.742 | 0.743 |
| 33 | ж | 68 | 2б | 4.912 | 1.161 | 0.469 | 0.912 | 0.905 |
| 34 | ж | 68 | 2б | 3.591 | 0.941 | 0.647 | 0.739 | 0.820 |
Поскольку распределения большинства показателей УЗДГ асимметричны, используем медиану и межквартильный интервал Q1–Q3 вместо среднего ± SD.
| Класс ХСН | Показатель УЗДГ | n | Медиана (Q1–Q3) |
|---|---|---|---|
| 2а | K | 30 | 42.333 (36.524–48.287) |
| 2а | M | 30 | 99.446 (98.892–99.618) |
| 2а | PI | 30 | 1.869 (1.306–2.66) |
| 2а | Qas | 30 | 0.052 (0.023–0.068) |
| 2а | Qm | 30 | 1.326 (0.861–1.633) |
| 2а | Qs | 30 | 2.883 (1.882–4.022) |
| 2а | RI | 30 | 0.811 (0.744–0.915) |
| 2а | STI | 30 | 88.649 (87.791–89.132) |
| 2а | Vas | 30 | 0.066 (0.029–0.087) |
| 2а | Vd | 30 | 0.656 (0.083–0.918) |
| 2а | Vm | 30 | 1.689 (1.096–2.08) |
| 2а | Vs | 30 | 3.67 (2.395–5.121) |
| 2б | K | 36 | 47.677 (40.941–54.036) |
| 2б | M | 36 | 99.696 (99.373–99.9) |
| 2б | PI | 36 | 1.778 (1.152–2.505) |
| 2б | Qas | 36 | 0.048 (0.033–0.064) |
| 2б | Qm | 36 | 0.714 (0.558–0.857) |
| 2б | Qs | 36 | 1.314 (0.952–2.094) |
| 2б | RI | 36 | 0.857 (0.704–0.952) |
| 2б | STI | 36 | 87.365 (85.224–88.67) |
| 2б | Vas | 36 | 0.06 (0.041–0.078) |
| 2б | Vd | 35 | 0.281 (0.033–0.446) |
| 2б | Vm | 36 | 0.889 (0.691–1.067) |
| 2б | Vs | 36 | 1.674 (1.212–2.668) |
| 3 | K | 24 | 45.971 (42.432–53.405) |
| 3 | M | 24 | 99.808 (99.694–99.917) |
| 3 | PI | 24 | 2.168 (1.492–2.782) |
| 3 | Qas | 24 | 0.05 (0.02–0.064) |
| 3 | Qm | 24 | 0.548 (0.427–0.681) |
| 3 | Qs | 24 | 1.093 (0.718–1.61) |
| 3 | RI | 24 | 0.945 (0.846–1) |
| 3 | STI | 24 | 86.536 (85.052–88.499) |
| 3 | Vas | 24 | 0.062 (0.032–0.081) |
| 3 | Vd | 24 | 0.112 (0–0.307) |
| 3 | Vm | 24 | 0.638 (0.544–0.868) |
| 3 | Vs | 24 | 1.392 (0.914–2.051) |
| К | K | 11 | 47.043 (31.719–52.094) |
| К | M | 11 | 99.876 (99.276–99.942) |
| К | PI | 11 | 2.172 (1.165–2.645) |
| К | Qas | 11 | 0.048 (0.007–0.087) |
| К | Qm | 11 | 0.422 (0.289–1.428) |
| К | Qs | 11 | 0.714 (0.471–3.914) |
| К | RI | 11 | 0.884 (0.744–1) |
| К | STI | 11 | 89.197 (85.584–89.935) |
| К | Vas | 11 | 0.013 (0.002–0.108) |
| К | Vd | 11 | 0.206 (0–0.623) |
| К | Vm | 11 | 0.537 (0.368–1.819) |
| К | Vs | 11 | 0.909 (0.6–4.982) |
Для каждого показателя УЗДГ строим линейную модель:
\[Y_i = \beta_0 + \beta_1 \cdot \text{возраст}_i + \beta_2 \cdot \text{пол}_i + \varepsilon_i\]
Остатки \(\hat{\varepsilon}_i = Y_i - \hat{Y}_i\) — это значения показателя, очищенные от влияния возраста и пола. Именно их мы будем сравнивать между классами ХСН.
💡 Простыми словами: если пациент старше среднего и его Vm выше, чем «ожидалось» для его возраста и пола — остаток будет положительным. Мы сравниваем именно эти «неожиданные» отклонения между классами ХСН.
После получения остатков применяем критерий Краскела–Уоллиса — непараметрический аналог однофакторного дисперсионного анализа.
Нулевая гипотеза \(H_0\): медианы остатков одинаковы во всех группах ХСН (то есть класс ХСН не связан с показателем после учёта возраста и пола).
Чтобы снизить вероятность ложноположительных результатов при одновременном тестировании 12 показателей, применяем поправку Benjamini–Hochberg (FDR).
| Показатель | χ² | p-value | p (FDR) | Значимо? |
|---|---|---|---|---|
| K | 3.1995 | 0.36190 | 0.4825 | |
| M | 3.2255 | 0.35810 | 0.4825 | |
| PI | 1.6016 | 0.65900 | 0.7908 | |
| Qas | 0.0275 | 0.99880 | 0.9988 | |
| Qm | 9.9942 | 0.01862 | 0.1117 | |
| Qs | 5.6706 | 0.12880 | 0.2712 | |
| RI | 7.9748 | 0.04654 | 0.1396 | |
| STI | 3.9447 | 0.26750 | 0.4586 | |
| Vas | 0.6559 | 0.88350 | 0.9638 | |
| Vd | 8.6162 | 0.03485 | 0.1394 | |
| Vm | 10.1759 | 0.01713 | 0.1117 | |
| Vs | 5.5505 | 0.13560 | 0.2712 |
📌 Интерпретация: Чем выше столбец, тем убедительнее различие между классами ХСН по данному показателю. Столбцы правее пунктирной линии соответствуют статистически значимым результатам (p FDR < 0.05).
Краскел–Уоллис отвечает лишь на вопрос «есть ли хоть какие-то различия?». Чтобы узнать, между какими конкретными парами классов (2а vs 2б, 2а vs 3, 2б vs 3 и т.д.) они обнаруживаются, применяем тест Данна с поправкой BH.
💡 Это как услышать «в классе есть высокие ученики» (Краскел–Уоллис) — и потом найти, кто именно выше кого (тест Данна).
| Показатель | Сравнение | Z | p | p (BH) | Значимо? |
|---|---|---|---|---|---|
| Vs | 2а - 2б | 1.7350 | 0.082750 | 0.24820 | |
| Vs | 2а - 3 | 2.1061 | 0.035190 | 0.21120 | |
| Vs | 2б - 3 | 0.5612 | 0.574600 | 0.86200 | |
| Vs | 2а - К | 1.5454 | 0.122200 | 0.24450 | |
| Vs | 2б - К | 0.3362 | 0.736700 | 0.88400 | |
| Vs | 3 - К | -0.0881 | 0.929800 | 0.92980 | |
| Vm | 2а - 2б | 2.1024 | 0.035520 | 0.10660 | |
| Vm | 2а - 3 | 2.9691 | 0.002986 | 0.01792 | ✅ |
| Vm | 2б - 3 | 1.1134 | 0.265500 | 0.39830 | |
| Vm | 2а - К | 2.0249 | 0.042880 | 0.08577 | |
| Vm | 2б - К | 0.5631 | 0.573300 | 0.68800 | |
| Vm | 3 - К | -0.2730 | 0.784800 | 0.78480 | |
| Vas | 2а - 2б | -0.2765 | 0.782200 | 1.00000 | |
| Vas | 2а - 3 | -0.0722 | 0.942500 | 0.94250 | |
| Vas | 2б - 3 | 0.1844 | 0.853700 | 1.00000 | |
| Vas | 2а - К | 0.5940 | 0.552500 | 1.00000 | |
| Vas | 2б - К | 0.8062 | 0.420100 | 1.00000 | |
| Vas | 3 - К | 0.6293 | 0.529100 | 1.00000 | |
| Vd | 2а - 2б | 1.4741 | 0.140400 | 0.28090 | |
| Vd | 2а - 3 | 2.8933 | 0.003812 | 0.02287 | ✅ |
| Vd | 2б - 3 | 1.6059 | 0.108300 | 0.32490 | |
| Vd | 2а - К | 1.4599 | 0.144300 | 0.21650 | |
| Vd | 2б - К | 0.4276 | 0.668900 | 0.66890 | |
| Vd | 3 - К | -0.7629 | 0.445500 | 0.53460 | |
| Qs | 2а - 2б | 1.7925 | 0.073060 | 0.21920 | |
| Qs | 2а - 3 | 2.1269 | 0.033430 | 0.20060 | |
| Qs | 2б - 3 | 0.5288 | 0.596900 | 0.89540 | |
| Qs | 2а - К | 1.5263 | 0.126900 | 0.25390 | |
| Qs | 2б - К | 0.2754 | 0.783000 | 0.93960 | |
| Qs | 3 - К | -0.1221 | 0.902800 | 0.90280 | |
| Qm | 2а - 2б | 2.0280 | 0.042560 | 0.08513 | |
| Qm | 2а - 3 | 2.9453 | 0.003227 | 0.01936 | ✅ |
| Qm | 2б - 3 | 1.1584 | 0.246700 | 0.37000 | |
| Qm | 2а - К | 2.0287 | 0.042490 | 0.12750 | |
| Qm | 2б - К | 0.6204 | 0.535000 | 0.64200 | |
| Qm | 3 - К | -0.2514 | 0.801500 | 0.80150 | |
| Qas | 2а - 2б | -0.1480 | 0.882300 | 1.00000 | |
| Qas | 2а - 3 | -0.0203 | 0.983800 | 1.00000 | |
| Qas | 2б - 3 | 0.1178 | 0.906200 | 1.00000 | |
| Qas | 2а - К | -0.0852 | 0.932100 | 1.00000 | |
| Qas | 2б - К | 0.0190 | 0.984800 | 0.98480 | |
| Qas | 3 - К | -0.0673 | 0.946400 | 1.00000 | |
| PI | 2а - 2б | -0.1335 | 0.893800 | 1.00000 | |
| PI | 2а - 3 | -1.0967 | 0.272800 | 1.00000 | |
| PI | 2б - 3 | -1.0145 | 0.310300 | 0.93100 | |
| PI | 2а - К | 0.1206 | 0.904000 | 0.90400 | |
| PI | 2б - К | 0.2191 | 0.826500 | 1.00000 | |
| PI | 3 - К | 0.9416 | 0.346400 | 0.69280 | |
| RI | 2а - 2б | -1.1601 | 0.246000 | 0.36900 | |
| RI | 2а - 3 | -2.8118 | 0.004926 | 0.02956 | ✅ |
| RI | 2б - 3 | -1.8339 | 0.066670 | 0.20000 | |
| RI | 2а - К | -0.8685 | 0.385100 | 0.46210 | |
| RI | 2б - К | -0.0562 | 0.955200 | 0.95520 | |
| RI | 3 - К | 1.2741 | 0.202600 | 0.40520 | |
| STI | 2а - 2б | 1.5655 | 0.117500 | 0.35240 | |
| STI | 2а - 3 | 1.8320 | 0.066960 | 0.40170 | |
| STI | 2б - 3 | 0.4353 | 0.663300 | 0.79600 | |
| STI | 2а - К | 0.7397 | 0.459500 | 0.91900 | |
| STI | 2б - К | -0.3665 | 0.714000 | 0.71400 | |
| STI | 3 - К | -0.6618 | 0.508100 | 0.76210 | |
| K | 2а - 2б | -1.7181 | 0.085780 | 0.51470 | |
| K | 2а - 3 | -1.2774 | 0.201500 | 0.60440 | |
| K | 2б - 3 | 0.2842 | 0.776300 | 0.93150 | |
| K | 2а - К | -0.7071 | 0.479500 | 0.95900 | |
| K | 2б - К | 0.5093 | 0.610500 | 0.91580 | |
| K | 3 - К | 0.2762 | 0.782400 | 0.78240 | |
| M | 2а - 2б | -1.3576 | 0.174600 | 0.52380 | |
| M | 2а - 3 | -1.4851 | 0.137500 | 0.82510 | |
| M | 2б - 3 | -0.2698 | 0.787300 | 0.94480 | |
| M | 2а - К | -1.3306 | 0.183300 | 0.36660 | |
| M | 2б - К | -0.3873 | 0.698600 | 1.00000 | |
| M | 3 - К | -0.1711 | 0.864100 | 0.86410 |
## Файл сохранён: Анализ_данных_УЗДГ.xlsx
##
## ╔══════════════════════════════════════════════════════════════════╗
## ║ АЛГОРИТМ АНАЛИЗА — КРАТКОЕ РЕЗЮМЕ ║
## ╠══════════════════════════════════════════════════════════════════╣
## ║ ║
## ║ ШАГ 1. Линейная регрессия: УЗДГ ~ возраст + пол ║
## ║ → убираем влияние демографических ковариат ║
## ║ ║
## ║ ШАГ 2. Остатки регрессии ║
## ║ → «очищенные» значения УЗДГ ║
## ║ ║
## ║ ШАГ 3. Краскел–Уоллис: остатки ~ класс ХСН ║
## ║ → есть ли различия между группами? ║
## ║ → поправка FDR (Benjamini–Hochberg) на 12 тестов ║
## ║ ║
## ║ ШАГ 4. Тест Данна: парные сравнения классов ║
## ║ → 2а–2б, 2а–3, 2б–3, 2а–К, 2б–К, 3–К ║
## ║ → поправка BH внутри каждого показателя ║
## ║ ║
## ╚══════════════════════════════════════════════════════════════════╝
| Ситуация | Рекомендация |
|---|---|
| Несколько групп, нет нормальности | ✅ Краскел–Уоллис |
| Есть ковариаты (возраст, пол) | ✅ Остаточный подход через lm() |
| Нужны парные сравнения | ✅ Тест Данна с поправкой BH |
| Много тестов одновременно | ✅ Поправка FDR (BH) |
| Нормальность подтверждена | ➡️ ANOVA + Tukey HSD |
Дата создания отчёта: 2026-03-11
Программное обеспечение: R 4.5.1, пакеты:
readxl, dplyr, tidyr,
FSA, ggplot2, broom,
writexl, gridExtra, ggsci