Тема 51 из 91· Рамочные подходы HTA и экономика профилактики

Когортное моделирование Маркова (Markov Cohort Simulation)

Когортная модель Маркова — стандартная техника моделирования в HTA для вмешательств, эффекты которых разворачиваются в течение нескольких периодов (циклов), а не наступают разом. Гипотетическая когорта целиком стартует в одном состоянии здоровья, и в каждом цикле фиксированный набор вероятностей перехода перемещает доли когорты между состояниями; затраты и QALY накапливаются в каждом цикле пропорционально доле когорты, занимающей каждое состояние, а затем дисконтируются к текущей стоимости. Любой программный инженер, моделирующий многолетний бизнес-кейс цифрового здравоохранения, где пользователи или пациенты со временем переходят между состояниями вроде «вовлечён», «отвалился» или «отменил», строит ровно такую же структуру.

Почему это важно

Большинство реальных решений о медицинских технологиях — не сравнение затрат и исходов за один период. Хроническое состояние прогрессирует, рецидивирует, отвечает на лечение или убивает в течение многих лет, а однопериодный анализ «затраты-эффективность» этого представить не может. Заявки в NICE, ICER и CADTH по вмешательствам при хронических заболеваниях, оцениваемым через оценку медицинских технологий, почти всегда строятся как когортные модели Маркова с пожизненным временным горизонтом, потому что альтернатива — моделировать каждую возможную индивидуальную траекторию пациента — не решается в большом масштабе. Марковская модель на уровне когорты меняет часть индивидуального реализма (ей трудно представить память о прошлых состояниях — отсюда «Маркова»: будущее зависит лишь от текущего состояния) на прозрачную, аудируемую и достаточно быструю модель, чтобы запускать её тысячи раз в вероятностном анализе чувствительности.

Математика

Обновление когорты за один цикл (вектор-строка × матрица переходов):
  новое_состояние[j] = сумма_i состояние[i] * матрица_переходов[i][j]

Затраты одного цикла:
  затраты_цикла = сумма_s состояние[s] * затраты_за_цикл[s]

QALY одного цикла:
  qaly_цикла = сумма_s состояние[s] * полезность[s] * длительность_цикла_лет

Полное моделирование за `циклы` циклов с дисконтированием по `ставка_дисконтирования`:
  дисконтированные_затраты_всего = сумма_{t=0}^{циклы-1} затраты_цикла(состояние_t) / (1 + ставка_дисконтирования)^t
  дисконтированные_qaly_всего    = сумма_{t=0}^{циклы-1} qaly_цикла(состояние_t) / (1 + ставка_дисконтирования)^t
  где состояние_0 = начальное распределение, состояние_{t+1} = продвинуть_когорту(состояние_t, матрица_переходов)

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

Практический пример

Клинический: модель с 2 состояниями — Здоров и Умер — где в каждом цикле умирает 10 % когорты, а Умер — поглощающее состояние (вероятность остаться в нём 1,0; без этой петли масса когорты исчезла бы после одного цикла в Умер). Когорта целиком стартует Здоров, стоит £1 000 за цикл, пока Здоров (£0 при Умер), и приносит 0,8 QALY в год, пока Здоров. Моделируются 3 годовых цикла при ставке дисконтирования NICE 3,5 %:

Цикл 0: состояние = [1.00, 0.00] (100 % здоровы)
  затраты = £1,000.00, qaly = 0.800, коэффициент дисконтирования = 1.000000
  дисконтировано: затраты = £1,000.00, qaly = 0.8000

Цикл 1: состояние = [0.90, 0.10] (90 % здоровы, 10 % умерли)
  затраты = £900.00, qaly = 0.720, коэффициент дисконтирования = 0.966184
  дисконтировано: затраты = £869.57, qaly = 0.6957

Цикл 2: состояние = [0.81, 0.19] (81 % здоровы, 19 % умерли)
  затраты = £810.00, qaly = 0.648, коэффициент дисконтирования = 0.933511
  дисконтировано: затраты = £756.14, qaly = 0.6049

Дисконтированные затраты всего ≈ £2,625.71
Дисконтированные QALY всего ≈ 2.1006

Состояние каждого цикла — это состояние предыдущего цикла, пропущенное через матрицу переходов: 90 % из 90 %, остающихся Здоров в цикле 1, остаются Здоров в цикле 2 (0,9 × 0,9 = 0,81), тогда как остальные 19 % уже умерли (0,9 × 0,1 + 0,1 × 1,0 = 0,19). Заметьте, что когорта никогда не опустошает состояние Здоров полностью: при постоянной смертности 10 % за цикл и без возврата доля Здоров убывает геометрически и не достигает нуля ни за какое конечное число циклов.

Связь с разработкой программного обеспечения

О том, как многоцикловая модель HTA используется в реальной оценке, см. Оценку медицинских технологий — базовый случай, задающий ставку дисконтирования, источник полезностей и временной горизонт, которые должна использовать представляемая марковская модель.

Когортная модель Маркова структурно — конечный автомат с вероятностными переходами, запускаемый фиксированное число тактов с дисконтированием ценности на каждом такте. Та же форма моделирует удержание когорты пользователей и их переходы между состояниями во времени; о версии для надёжности см. Метрики DORA: «какая доля системы находится в деградированном состоянии за этот период и во что это обходится». В частности:

  • Моделирование удержания/оттока — когортная модель Маркова с состояниями вроде «активен», «в зоне риска», «ушёл»: фиксированная ежемесячная матрица переходов, запущенная на 12 или 24 месячных цикла, даёт ожидаемое число активных пользователей (и выручку) в любом будущем месяце, подобно тому как Здоров/Умер даёт ожидаемое число выживших.
  • Надёжность и экономика инцидентов: состояния системы (здорова, деградирована, не работает) можно моделировать так же, с «затратами за цикл» на ущерб от простоя, накапливающийся, пока система находится в состояниях деградации/простоя, — превращая аргумент о частоте инцидентов в аргумент о дисконтированных затратах, сопоставимый со стоимостью работ по надёжности, которые изменили бы вероятности переходов.
  • Поглощающие состояния как конечные: Умер в клинической модели — это в точности «отменённая подписка» или «окончательно офлайн» в программной модели; обоим нужна явная вероятность остаться в себе, равная 1,0, иначе моделирование молча теряет массу.

Подводные камни

  • Вероятности переходов, не дающие в сумме 1 по строке. Строка с суммой больше или меньше 1 заставляет массу когорты молча «утекать» или «прибывать» в каждом цикле; всегда проверяйте суммы по строкам, прежде чем доверять выходу модели, потому что сама структура модели об этой ошибке не сигнализирует.
  • Слишком грубая длительность цикла для реальной динамики болезни. Годовой цикл для состояния, меняющегося за недели, занижает переходы внутри цикла; выбирайте длительность цикла короткой относительно того, как быстро на самом деле движется моделируемый процесс.
  • Забытая петля поглощающего состояния. Поглощающему состоянию (смерть, окончательная отмена) нужна вероятность остаться в себе ровно 1,0. Если её опустить, масса когорты испаряется из этого состояния после одного цикла, и накопленные затраты или потери QALY занижаются.
  • Признание модели проверенной лишь потому, что она запускается. Когортная модель Маркова с правдоподобными вероятностями переходов всё же может быть структурно неверной (пропущенные состояния, неправильное поглощающее поведение); проверяйте её по известным эпидемиологическим ориентирам (например, совпадает ли смоделированная 5-летняя выживаемость с опубликованными кривыми выживаемости), прежде чем доверять выходу.

Источники