No one wants to have covid-19,
but everyone wants to have had it.
Как известно, вирусные заболевания иногда могут протекать бессимптомно. Один из способов выяснить, переболел ли человек, — пройти тест на антитела. Если в ходе теста окажется, что в крови (как правило, для тестирования нужно небольшое количество крови из пальца) есть антитела к вирусным белкам, то это будет означать, что иммунная система уже познакомилась с вирусом и опознала его (и либо еще борется с ним, либо уже победила). К сожалению, тесты не идеальны и могут давать ложные результаты.
1. Предположим, что у тестов на некий вирус «К» специфичность 98%. Вася решил сделать себе этот тест и получил положительный результат. Поскольку сейчас он чувствует себя отлично, Вася решил, что результаты теста означают, что он уже переболел вирусом «К» и риска заразиться заново нет. Чему равна вероятность того, что Вася на самом деле не болел, если известно, что в его городе переболело 2% населения?
2. Чтобы подстраховаться Вася прошел это тестирование еще один раз и снова получил положительный результат (исходы тестов мы считаем независимыми). Как изменится вероятность того, что Вася не болел вирусом «К»?
3. У Оли болит горло — это симптом многих респираторных вирусных инфекций. Известно, что горло болит у 10% заболевших вирусом «К». Попробуйте прикинуть, с какой вероятностью у обычного человека (не болеющего вирусом «К») может заболеть горло. Как, исходя из этой оценки, посчитать вероятность того, что у Оли именно вирус «К»?
Специфичность теста — это отношение числа здоровых людей, у которых тест дал отрицательный результат, к общему числу здоровых людей среди протестированных. Физический смысл этой величины такой: если тест обладает идеальной специфичностью (100%), то все здоровые люди получат отрицательный результат теста и не будет ложноположительных результатов. Если же специфичность ниже 100%, то это означает, что часть здоровых людей получит положительный результат. Специфичность того или иного теста определяется в контролируемых исследованиях, в которых достоверно известно, кто из тестируемых болен, а кто здоров.
Противоположная характеристика — чувствительность — более интуитивно понятна. Это отношение числа больных с положительным результатом теста к общему числу протестированных больных, которое показывает, какую долю больных «поймает» тест. Можно заметить, что определение специфичности в некотором смысле обратно чувствительности: оно получается заменой больных на здоровых, а положительного результата на отрицательный. То есть если представить, что тест выявляет не больных среди здоровых, а здоровых среди больных, то чувствительность и специфичность поменяются местами.
Как можно догадаться из названия, решить задачу можно с помощью теоремы Байеса. Но можно и «на пальцах» посчитать частоты вариантов, о которых идет речь в задаче: присутствие/отсутствие антител в сочетании с положительным/отрицательным результатом теста.
Вопрос про Олю можно свести к вопросу про Васю, если представить, что наличие боли в горле — это результат теста.
Для начала приведем решение первого пункта «на пальцах» — просто аккуратно подсчитаем указанные во второй подсказке величины.
Предположим, что было протестировано 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}} (A\overline{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}} (A\overline{B}) = \mathrm{\mathbf{P}} (AB)\frac{\mathrm{\mathbf{P}} (B)}{ \mathrm{\mathbf{P}} (B)} + \mathrm{\mathbf{P}} (A\overline{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.