Байес versus вирус

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Задача

No one wants to have covid-19,
but everyone wants to have had it.

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

1. Предположим, что у тестов на некий вирус «К» специфичность 98%. Вася решил сделать себе этот тест и получил положительный результат. Поскольку сейчас он чувствует себя отлично, Вася решил, что результаты теста означают, что он уже переболел вирусом «К» и риска заразиться заново нет. Чему равна вероятность того, что Вася на самом деле не болел, если известно, что в его городе переболело 2% населения?

2. Чтобы подстраховаться Вася прошел это тестирование еще один раз и снова получил положительный результат (исходы тестов мы считаем независимыми). Как изменится вероятность того, что Вася не болел вирусом «К»?

3. У Оли болит горло — это симптом многих респираторных вирусных инфекций. Известно, что горло болит у 10% заболевших вирусом «К». Попробуйте прикинуть, с какой вероятностью у обычного человека (не болеющего вирусом «К») может заболеть горло. Как, исходя из этой оценки, посчитать вероятность того, что у Оли именно вирус «К»?


Подсказка 1

Специфичность теста — это отношение числа здоровых людей, у которых тест дал отрицательный результат, к общему числу здоровых людей среди протестированных. Физический смысл этой величины такой: если тест обладает идеальной специфичностью (100%), то все здоровые люди получат отрицательный результат теста и не будет ложноположительных результатов. Если же специфичность ниже 100%, то это означает, что часть здоровых людей получит положительный результат. Специфичность того или иного теста определяется в контролируемых исследованиях, в которых достоверно известно, кто из тестируемых болен, а кто здоров.

Противоположная характеристика — чувствительность — более интуитивно понятна. Это отношение числа больных с положительным результатом теста к общему числу протестированных больных, которое показывает, какую долю больных «поймает» тест. Можно заметить, что определение специфичности в некотором смысле обратно чувствительности: оно получается заменой больных на здоровых, а положительного результата на отрицательный. То есть если представить, что тест выявляет не больных среди здоровых, а здоровых среди больных, то чувствительность и специфичность поменяются местами.


Подсказка 2

Как можно догадаться из названия, решить задачу можно с помощью теоремы Байеса. Но можно и «на пальцах» посчитать частоты вариантов, о которых идет речь в задаче: присутствие/отсутствие антител в сочетании с положительным/отрицательным результатом теста.


Подсказка 3

Вопрос про Олю можно свести к вопросу про Васю, если представить, что наличие боли в горле — это результат теста.


Решение

Для начала приведем решение первого пункта «на пальцах» — просто аккуратно подсчитаем указанные во второй подсказке величины.

Предположим, что было протестировано 10 000 человек. Из них, поскольку по условию в городе переболевших 2%, а мы считаем, что отбор людей для тестирования проведен совершенно случайно, 200 в действительности переболели вирусом «К» (стоит отметить, что не все из них получат положительный результат теста, так как чувствительность теста, как и специфичность, не идеальная). Из оставшихся 9800 здоровых людей 9604 (ведь специфичность теста 98%) правильно получат отрицательный результат. Но вот оставшиеся 196 человек получат ложноположительный результат. На самом деле рядом с каждым из этих чисел нужно писать «примерно», но 10 000 — довольно большая выборка, так что отличия очень слабо влияют на дальнейшие подсчеты.

Получивший положительный результат Вася относится к одной из двух групп: получивших истинно положительный результат переболевших или получивших ложноположительный результат здоровых. Получаем, что вероятность того, что Вася переболел, равна (frac{200}{200 + 196} approx 50{,}5\%). Если учесть неидеальную чувствительность теста, то вероятность будет еще меньше (ниже мы выведем формулу, в которой будет учтена и зависимость от чувствительности). Выходит, Васе рано делать вывод о том, что он переболел и имеет иммунитет к вирусу «К»: ведь вероятность, что он болел, всего лишь около половины. Стоит, однако, заметить, что если бы Вася не делал тест, то оценить вероятность того, что он болен, можно было бы лишь в 2% (именно столько процентов населения переболело по статистике), так что положительный тест, как и следовало, увеличил уверенность в том, что Вася переболел и имеет иммунитет.

Запишем теперь те же рассуждения более формально с использованием языка теории вероятностей и теоремы Байеса. Рассмотрим два случайных события: событие A состоит в том, что Вася получил положительный тест на антитела к вирусу, а событие B состоит в том, что Вася действительно имеет иммунитет к вирусу.

В теории вероятностей вводится понятие условной вероятности события A при условии события B, P(A|B): это вероятность события A в предположении, что событие B произошло. В нашем примере P(A|B) — это вероятность того, что Вася получит положительный результат теста, если достоверно известно, что он имеет антитела к вирусу.

Посчитать такую вероятность можно следующим образом: оставим только тех людей, которые переболели и имеют иммунитет к вирусу (остальные нас не интересуют), и посчитаем среди них долю тех, кто получил положительный результат теста — это и будет искомая условная вероятность. На языке теории вероятностей эта идея выражается так: (mathrm{mathbf{P}}(A | B) = frac{mathrm{mathbf{P}} (AB)}{ mathrm{mathbf{P}} (B)}), где P(B) — вероятность того, что у человека есть иммунитет (доля тех, кого мы оставили в выборке), а P(AB) — вероятность события AB, состоящего в том, что произошли одновременно события A и B, то есть вероятность того, что у человека есть иммунитет и тест дал положительный результат (доля тех, кого мы оставили выборке, и при этом имеющих положительный результат теста). Можно заметить, что P(A|B) — это просто чувствительность теста.

Сформулируем теперь теорему Байеса. Она утверждает, что для произвольных случайных событий A и B верно следующее равенство:

[mathrm{mathbf{P}} (A|B) = frac{mathrm{mathbf{P}} (B|A) mathrm{mathbf{P}} (A)}{ mathrm{mathbf{P}} (B)}.]

Оказывается, если воспользоваться определением условной вероятности, данным выше, то доказать ее очень просто:

[mathrm{mathbf{P}} (A | B) = frac{mathrm{mathbf{P}} (AB)}{ mathrm{mathbf{P}} (B)} = frac{mathrm{mathbf{P}} (AB)frac{mathrm{mathbf{P}} (A)}{ mathrm{mathbf{P}} (A)}}{ mathrm{mathbf{P}} (B)} = frac{frac{mathrm{mathbf{P}} (AB)}{ mathrm{mathbf{P}} (A)} mathrm{mathbf{P}} (A)}{ mathrm{mathbf{P}} (B)} = frac{mathrm{mathbf{P}} (B|A) mathrm{mathbf{P}} (A)}{ mathrm{mathbf{P}} (B)}.]

Сходу может быть непонятно, в чем суть этой теоремы, поэтому попробуем сначала применить ее к нашей задаче. По условию мы достоверно знаем, что Вася получил положительный результат теста, но не знаем, имеет ли он иммунитет к вирусу. Это значит, что нас интересует условная вероятность P(B|A). Чтобы получить ее с помощью теоремы Байеса, нужны три вероятности: P(A), P(B), P(A|B). Вероятность P(B) — это вероятность того, что случайно взятый человек имеет иммунитет к вирусу. По условию она равна 2%. Вероятность P(A|B) — это вероятность того, что человек получит положительный тест, при условии, что у него есть антитела к вирусу. Как уже было отмечено выше, это чувствительность теста (которая в условии не дана, но ее можно оценить сверху единицей).

Сложнее всего посчитать P(A) — вероятность того, что человек получит положительный результат теста. Как мы уже поняли в элементарном решении выше, она складывается из вероятности того, что человек больной и получил истинно положительный результат, и вероятности того, что человек здоровый и получил ложноположительный результат. Формально это записывает так: (mathrm{mathbf{P}} (A) = mathrm{mathbf{P}} (AB) + mathrm{mathbf{P}} (Aoverline{B})), где (overline{B}) обозначает отрицание B, то есть событие, состоящее в том, что событие B не наступило. Очевидно, что (mathrm{mathbf{P}} (overline{B}) = 1- mathrm{mathbf{P}} (B)). Подставив определение условной вероятности, можно получить так называемую формулу полной вероятности:

[mathrm{mathbf{P}} (A) = mathrm{mathbf{P}} (AB) + mathrm{mathbf{P}} (Aoverline{B}) = mathrm{mathbf{P}} (AB)frac{mathrm{mathbf{P}} (B)}{ mathrm{mathbf{P}} (B)} + mathrm{mathbf{P}} (Aoverline{B})frac{mathrm{mathbf{P}} (overline{B})}{mathrm{mathbf{P}} (overline{B})} == mathrm{mathbf{P}} (A|B) mathrm{mathbf{P}} (B) + mathrm{mathbf{P}} (A|overline{B})mathrm{mathbf{P}} (overline{B}).]

Для этой формулы все данные у нас уже имеются. Часть вероятностей мы уже посчитали. Новых величин две: (mathrm{mathbf{P}}(overline{B})) — вероятность того, что случайно взятый человек здоров, и (mathrm{mathbf{P}} (A|overline{B})) — вероятность того, что здоровый человек получит положительный тест (можно заметить, что в сумме со специфичностью теста она дает 1).

Подставляя все числа в теорему Байеса, получаем:

[mathrm{mathbf{P}} (B|A) = frac{mathrm{mathbf{P}} (A|B) mathrm{mathbf{P}} (B)}{ mathrm{mathbf{P}} (A)} = frac{mathrm{mathbf{P}} (A|B) mathrm{mathbf{P}} (B)}{ mathrm{mathbf{P}} (A|B) mathrm{mathbf{P}} (B) + mathrm{mathbf{P}} (A|overline{B})mathrm{mathbf{P}} (overline{B})} == frac{1 cdot 0{,}02}{1 cdot 0{,}02 + (1- 0{,}98) cdot (1- 0{,}02)} approx 50{,}5\%.]

Внимательный читатель заметит, что в результате мы проделали в точности те же вычисления, что и в элементарном решении, и лишь облекли их в более «серьезную» форму.

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

Перейдем теперь к решению пункта про Олю. Если считать, что наличие или отсутствие боли в горле — это результат «теста», то 10% из условия — это чувствительность этого «теста». Доля людей с больным горлом среди тех, кто не заразился новым вирусом, это (1 ? специфичность) нашего «теста», то есть условная вероятность того, что человек без заболевания получил положительный результат «теста». Осталось оценить долю людей, которые в «мирное» время страдают от боли в горле. Прикинуть ее можно, приблизительно подсчитав, сколько в среднем дней вы и ваши знакомые всех возрастов жалуетесь на боль в горле в течение года (здесь мы не учитываем «жизненные» факторы вроде того, что зимой горло болит чаще, чем летом, — ведь в условии ничего не сказано про то, в какое время года заболела Оля). Разумной выглядит оценка в одну–две недели в год, что дает вероятность около 2%. Подставим эти значения в теорему Байеса:

[mathrm{mathbf{P}} (B|A) = frac{mathrm{mathbf{P}} (A|B) mathrm{mathbf{P}} (B)}{ mathrm{mathbf{P}} (A)} = frac{mathrm{mathbf{P}} (A|B) mathrm{mathbf{P}} (B)}{ mathrm{mathbf{P}} (A|B) mathrm{mathbf{P}} (B) + mathrm{mathbf{P}} (A|overline{B})mathrm{mathbf{P}} (overline{B})} == frac{0{,}1 cdot 0{,}02}{0{,}1 cdot 0{,}02 + 0{,}02 cdot (1- 0{,}02)} approx 9{,}3\%.]

Выходит, вероятность того, что Оля заразилась вирусом «К», достаточно мала.


Послесловие

Итак, в этой задаче мы, воспользовавшись теоремой Байеса (названной в честь Томаса Байеса — английского математика и священника, жившего в XVIII веке), обнаружили, что даже тест с высокими показателями чувствительности и специфичности дает неожиданно много ошибок. Это важный практический результат. Но изначально мы получили его без всякой теоремы Байеса, да и сама она выводится в одну строчку. Чем же объясняется ее важность в теории вероятностей?

Чтобы ответить на этот вопрос, нужно разобраться, что же мы подразумеваем под вероятностью. Исторически, при становлении формализма теории вероятности в XX веке, под вероятностью понимали вероятность статистическую. Если подбросить честную монетку 100 раз, то она упадет вверх решкой примерно 50 раз. Если подбросить монетку N раз, то она упадет вверх решкой (K approx N cdot 0{,}5) раз, и чем больше число испытаний N, тем ближе (frac{K}{N}) к истинной вероятности (в случае монетки это 1/2) — математически это выражается в законе больших чисел. В этом смысле обычно вводят вероятность в школе или университете. Однако такой взгляд на вероятность не единственный возможный.

Вернемся к нашей задаче. Когда речь идет о большом количестве протестированных людей, то статистический подход оправдан. Но в условии спрашивалось про одного лишь Васю: переболел он или нет? На самом деле он либо имеет антитела, либо нет (как и всё на свете на макроскопическом уровне, а вот в микромире правит квантовая механика, где вероятности имеют физический смысл, но это выходит за рамки нашей задачи). Однако мы не знаем точно, болен он или здоров, а лишь оцениваем вероятность этих исходов на основе доступной информации. При таком подходе вероятность описывает не реальную невозможность предсказать исход события, а описывает нашу неуверенность, незнание того, что произошло или произойдет. Получение новой информации может изменить наше представление о вероятности того или иного события. Такой подход был впервые предложен Байесом и называется в его честь.

Еще один пример: предположим, вы играете в игру «Кто хочет стать миллионером?» и не знаете ответ на вопрос. Тогда, выбирая наугад первый вариант ответа, вы оцениваете свои шансы на победу в 25%, хотя на самом деле исход предопределен — ответ будет либо правильным, либо неправильным. Предположим теперь, что вы взяли подсказку «50/50» и остались только два варианта ответа. Если ваш выбор не поменялся, то и исход тоже не поменяется. Но теперь вы оцениваете вероятность на успех выше, так как получили новую информацию, и теперь более уверены в том, что угадаете.

Как же связана теорема Байеса с байесовским подходом? Разберемся, опять же, на примере нашей задачи. Изначально, перед тем, как Вася сдал тест, оценить вероятность того, что он переболел, можно лишь долей заболевших. В обозначениях из решения это P(B). В байесовском подходе это априорная вероятность события — оценка вероятности до получения новой информации. После того, как мы получили информацию о том, что тест дал положительный результат (событие A), можно посчитать новую оценку вероятности (апостериорную вероятность) с учетом этих данных. Это условная вероятность P(B|A), которая вычисляется по теореме Байеса. Таким образом, эта теорема как раз и дает правило пересчета оценки вероятности события при поступлении новых данных.

Теперь можно вернуться к вопросу о том, как же оценить вероятность того, что у Васи есть антитела к вирусу, если повторный тест также дал положительный результат. Однократное применение теоремы Байеса позволило нам уточнить оценку вероятности: перейти от априорной к апостериорной вероятности. Для дальнейшего можно взять эту новую вероятность, как априорное значение P(B) и повторно применить теорему Байеса, чтобы учесть информацию о еще одном результате теста. Тогда новая апостериорная вероятность будет равна:

[mathrm{mathbf{P}}(B|A) = frac{mathrm{mathbf{P}} (A|B) mathrm{mathbf{P}} (B)}{ mathrm{mathbf{P}} (A)} = frac{mathrm{mathbf{P}} (A|B) mathrm{mathbf{P}} (B)}{ mathrm{mathbf{P}} (A|B) mathrm{mathbf{P}} (B) + mathrm{mathbf{P}} (A|overline{B})mathrm{mathbf{P}} (overline{B})} == frac{1 cdot 0{,}505}{1 cdot 0{,}505 + (1- 0{,}98) cdot (1- 0{,}505)} approx 98\%.]

Здесь проявилось одно из преимуществ байесовского подхода — возможность многократно обновлять предсказания с приходом новых данных.

На практике основное препятствие, с которым сталкиваются при необходимости применить теорему Байеса, — это сложность оценивания вероятности в знаменателе. В решении это проявилось в полной мере: эта вероятность была неизвестна и пришлось разложить ее по формуле полной вероятности. На практике, когда имеют дело не с дискретными случайными величинами (принимающими конечный набор значений, как, например, в нашей задаче, где Вася мог быть либо болен, либо не болен), а с непрерывно распределенными на всех действительных числах, задача точного подсчета знаменателя обычно становится невыполнимой, так что приходится довольствоваться различными методами приблизительной оценки вероятности.

В заключение обсудим вопрос определения характеристик теста: чувствительности и специфичности. Оказывается, это далеко не единственный способ задать точность теста. Например, в машинном обучении широко используется другая пара характеристик: точность (precision) и покрытие (recall). Можно задаться вопросом: откуда вообще в машинном обучении тесты? Речь идет о моделях классификации. Примером может служить модель, которая по изображению определяет, есть на нем котик или нет. Вывод модели — это результат теста, и он подвержен тем же самым проблемам, что и медицинский тест: модель может не заметить котика на картинке или сказать, что котик есть, хотя на картинке его нет. Стандартные метрики определяются следующим образом: точность — это доля картинок, на которых реально есть котики, среди тех, которые модель-классификатор разметила как содержащие котиков, а покрытие — это доля примеров, на которых она распознала котика среди всех картинок с котиками. Хорошее упражнение: посчитать эти величины по данным из условия задачи и сравнить с чувствительностью и специфичностью. Об аналогичных метриках можно прочитать в статье Confusion matrix.


Источник: elementy.ru

Комментарии: