ROC и multiROC анализ: как рассчитать оптимальную точку среза?


14

Я пытаюсь понять, как вычислить оптимальную точку отсечения для кривой ROC (значение, при котором чувствительность и специфичность максимальны). Я использую набор данных aSAHиз пакета pROC.

outcomeПеременная может быть объяснено двумя независимыми переменными: s100bи ndka. Используя синтаксис Epiпакета, я создал две модели:

library(pROC)
library(Epi)
ROC(form=outcome~s100b, data=aSAH)
ROC(form=outcome~ndka, data=aSAH)

Вывод иллюстрируется на следующих двух графиках:

введите описание изображения здесь введите описание изображения здесь

На первом графике ( s100b) функция говорит, что оптимальная точка отсечения локализована на значении, соответствующем lr.eta=0.304. Во втором графике ( ndka) оптимальная точка отсечения локализована при соответствующем значении lr.eta=0.335(в чем смысл lr.eta). Мой первый вопрос:

  • что соответствует s100bи ndkaзначения для указанных lr.etaзначений (какова оптимальная точка отсечения с точки зрения s100bи ndka)?

ВТОРОЙ ВОПРОС:

Теперь предположим, что я создаю модель с учетом обеих переменных:

ROC(form=outcome~ndka+s100b, data=aSAH)

Полученный график:

введите описание изображения здесь

Я хочу знать, каковы значения ndkaAND, s100bпри которых чувствительность и специфичность максимизируются функцией. Другими словами: каковы значения ndkaи s100bпри которых мы имеем Se = 68,3% и Sp = 76,4% (значения, полученные из графика)?

Я предполагаю, что этот второй вопрос связан с анализом multiROC, но документация Epiпакета не объясняет, как рассчитать оптимальную точку отсечения для обеих переменных, используемых в модели.

Мой вопрос очень похож на этот вопрос от reasearchGate , который говорит вкратце:

Определение порогового значения, которое представляет лучший компромисс между чувствительностью и специфичностью меры, является простым. Однако, для анализа многомерной кривой ROC, я отметил, что большинство исследователей сосредоточилось на алгоритмах для определения общей точности линейной комбинации нескольких показателей (переменных) в терминах AUC. [...]

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

Возможное решение - это то, что предложил Шульц в своей статье , но из этой статьи я не могу понять, как вычислить оптимальную точку среза для многомерной кривой ROC.

Возможно, решение из Epiпакета не является идеальным, поэтому любые другие полезные ссылки будут оценены.

Ответы:


9

Чтобы уточнить ответ Фрэнка Харрелла, Epiпакет должен был соответствовать логистической регрессии и создать кривую ROC с прогнозом результатов в следующей форме:

outcome=11+e(β0+β1s100b+β2ndka)

В вашем случае подходящими значениями являются (перехват) = -2,379, (s100b) = 5,334 и (ndka) = 0,031. Поскольку вы хотите, чтобы ваш прогнозируемый результат составлял 0,312 («оптимальное» ограничение), вы можете заменить это следующим образом (надеюсь, я не внес ошибок здесь):β0β1β2

0.312=11+e(2.379+5.334s100b+0.031ndka)
1.588214=5.334s100b+0.031ndka
или:
s100b=1.5882140.031ndka5.334

Любая пара значений (s100b, ndka), которые удовлетворяют этому равенству, является «оптимальной». Не повезло вам, таких пар бесконечно много. Например, (0.29, 1), (0, 51.2) и т. Д. Еще хуже, большинство из них не имеют никакого смысла. Что означает пара (-580, 10000)? Ничего!

Другими словами, вы не можете устанавливать срезы на входах - вы должны делать это на выходах, и в этом весь смысл модели.


8

Нецелесообразно искать отсечки для входных переменных, а вместо этого только для выходных данных (например, прогнозируемый риск из модели с несколькими переменными). Это потому, что отсечение для x1 будет зависеть от непрерывного значения x2. И поиск точки отсечения для для получения оптимальных решений требует функции полезности / потерь / затрат, и это не имеет ничего общего с кривыми ROC.Y^


Я понимаю проблему, которую вы объяснили. Кстати, мне интересно, существует ли метод для вычисления точек отсечения для двух (или более) тестов параллельно, чтобы повысить чувствительность и спецификацию для определения конкретного статуса (болезнь / исход / и т. Д.). ). Заранее спасибо.
Томмазо

1
Поскольку «оптимальная» точка отсечения для x1 будет зависеть от непрерывного значения x2, а «оптимальная» точка отсечения для x2 будет зависеть от непрерывного значения x1, нет способа сделать это и сохранить достаточно информации, чтобы сделать ее не стихийное бедствие.
Фрэнк Харрелл

Таким образом, нет способа найти точки отсечения для двух или более тестов, чтобы максимизировать чувствительность и специфичность? Конечно, метод, который не является анализом multiROC. Еще раз спасибо.
Томмазо

2
Просто нецелесообразно искать ограничения на входах. Оптимальные решения принимаются без каких-либо ограничений, или, если необходимо, до времени принятия решения, путем сокращения прогнозируемых вероятностей. Коммунальные услуги (убыток / стоимость) необходимы для оптимального сокращения прогнозируемого риска.
Фрэнк Харрелл,

1
Кривые ROC не имеют ничего общего с достижением этой цели. Чтобы сделать это, вам нужно связать SCr с результатом или просто вычислить вероятность получения более экстремального SCr, чем в нормальной популяции.
Фрэнк Харрелл

3

Я предполагаю, lr.etaчто это линейный предиктор - логит - из подобранной модели, так как - это часто используемый символ для нее; или, если нет, вероятность из подобранной модели. (Оказывается, это последнее: см. Https://stackoverflow.com/a/38532555/1864816 .) Вы можете проверить код в . В любом случае вы сможете рассчитать его из коэффициентов модели для любого количества предикторов. (Обратите внимание, что это будет не отсечение для каждого предиктора отдельно, а функция всех предикторов.)ηROC

В вашем первом предложении должно быть сказано (как видно из графиков), что вы ищете, где сумма чувствительности и специфичности максимальна. Но почему это «оптимально»? Имеет ли ложноположительный результат такое же значение, как ложноотрицательный результат? Смотрите здесь .


Это было правильно, я могу рассчитать точку отсечения из подобранной модели (для одной независимой переменной) или, альтернативно, используя coordsфункцию из pROCпакета, как я обнаружил позже. Оптимальная точка отсечения была, в моем случае, лучшей комбинацией Sens и Spec; Я прочитал связанный ответ, но мне все равно (по крайней мере, на данный момент) о ложноположительных и ложноотрицательных результатах, потому что (если я правильно понял) я анализирую группу собранных данных для исследования.
Томмазо

Что же вы заботитесь о потом? Что вы делаете с отключением, которое не требует рассмотрения последствий? А то , что это «оптимальное» или «лучше» для ?
Scortchi - Восстановить Монику

Томмазо определил «оптимальный» как «значение, при котором чувствительность и специфичность максимизируются» (цитируя первое предложение вопроса), что косвенно означает «максимум» (чувствительность + специфичность). Имеет ли это смысл или нет (и когда я читаю, ему все равно, я склонен думать, что это не так), это другой вопрос.
Calimo

1
Такой подход расходится с принятием решений.
Фрэнк Харрелл

1
Я думаю, что если я правильно читаю ваш пост, lr.etaэто как раз второй вариант, который вы упоминаете: вероятность из подобранной модели: . Проверьте это, если у вас есть минутка. E[Yi|Xi]=11+e(β0+β1×s100b)
Антони Пареллада

0

Вы можете найти порог, при котором истинная положительная скорость (tpr) пересекается с истинной отрицательной скоростью (tnr), это будет точка, при которой сумма ложных положительных и ложных отрицательных значений является минимальной.


Ответ, состоящий из одного предложения, обычно считается коротким для нашего формата. Можете ли вы расширить свой ответ, чтобы включить краткое объяснение того, откуда вы знаете, что именно там должен быть минимум?
Glen_b

1
Такая стратегия противоречит оптимальному принятию решений.
Фрэнк Харрелл
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.