До сих пор мы использовали апостериорные шансы для сравнения только двух гипотез, что подходит для простых задач; даже если у нас есть три или четыре гипотезы, их можно проанализировать, проведя несколько проверок гипотез. Но иногда нужно найти действительно большое пространство возможных гипотез, чтобы объяснить данные. Например, вы можете угадать количество драже в банке, высоту какого-либо здания или точное количество минут, которое потребуется для прибытия рейса. Во всех этих случаях существует множество всевозможных гипотез, и их слишком много, чтобы привести все.
К счастью, есть способ для обработки этого сценария. В главе 15 мы узнали, как превратить задачу оценки параметров в проверку гипотез. В этой главе мы собираемся сделать обратное: рассматривая практически непрерывный диапазон возможных гипотез, мы можем использовать коэффициент Байеса и апостериорные шансы (проверка гипотезы) в качестве формы оценки параметров! Этот подход позволяет оценивать более двух гипотез и предоставляет простую структуру для оценки любого параметра.
Предположим, вы находитесь на праздничной ярмарке. Прогуливаясь, вы замечаете, что кто-то спорит с работником ярмарки возле бассейна с маленькими резиновыми уточками. Любопытствуя, вы подходите ближе и слышите, как человек кричит: «Вы жулики! Вы сказали, что шанс получить приз 1 к 2. Я выловил 20 уток и получил только один приз! Получается, что шанс на приз всего лишь 1 к 20!»
Теперь, когда вы хорошо понимаете вероятности, то разрешаете этот спор самостоятельно. Вы объясняете присутствующему и сердитому клиенту, что если сегодня увидите еще несколько игр, то сможете использовать коэффициент Байеса, чтобы определить, кто прав. Вы создаете две гипотезы. H1 — утверждение работника, что вероятность выигрыша равна 1/2, и H2 — утверждение сердитого клиента, что вероятность выигрыша составляет всего 1/20:
;
.
Работник утверждает, что поскольку он не смотрел, как клиент вылавливал уточек, то не считает, что следует использовать его сообщенные данные, так как никто не может их проверить. Звучит справедливо. Вы решаете посмотреть следующие 100 игр и использовать их в качестве данных. После того как клиент подобрал 100 уток, вы заметили, что 24 из них получили призы.
Теперь о коэффициенте Байеса. Поскольку у нас нет четкого мнения ни о претензии клиента, ни о заявлениях работника, мы не будем беспокоиться об априорных шансах или вычислении полных апостериорных шансов. Чтобы получить коэффициент Байеса, нужно вычислить P (D | H) для каждой гипотезы:
P (D | H1) = (0,5)24× (1 – 0,5)76;
P (D | H2) = (0,05)24× (1 – 0,05)76.
По отдельности обе эти вероятности довольно малы, но все, что нас интересует, — их соотношение. Мы рассмотрим соотношение с точки зрения H2/H1, чтобы результат сообщал нам, во сколько раз гипотеза клиента лучше объясняет данные, чем гипотеза работника:
.
Коэффициент Байеса указывает, что H1, гипотеза работника, объясняет данные в 653 раза лучше, чем H2; это означает, что гипотеза работника (вероятность получить приз при вылавливании уточки составляет 0,5) является более вероятной.
Это сразу должно насторожить. Очевидно, что вероятность получить только 24 приза, когда было выловлено 100 уточек, кажется маловероятной, если истинная вероятность выигрыша равна 0,5. Мы можем использовать функцию pbinom() в R (см. главу 13) для вычисления биномиального распределения, которое сообщит вероятность получить 24 или меньше призов, предполагая, что вероятность получения приза действительно равна 0,5:
> pbinom(24,100,0.5)
9.050013e-08
Как видите, вероятность получения 24 или менее призов при истинной вероятности выигрыша 0,5 чрезвычайно мала; расширив ее до полного десятичного значения, мы получим вероятность 0,00000009050013! Что-то определенно не так с H1. Хотя мы не верим гипотезе работника, она все же объясняет данные гораздо лучше, чем данные клиента.
Чего же не хватает? Мы уже сталкивались с тем, что априорная вероятность обычно имеет большое значение, когда только один коэффициент Байеса не дает осмысленного ответа. Но в главе 18 мы видели, что бывают случаи, когда априорная вероятность не является основной причиной. В этом случае использование следующего уравнения кажется разумным, поскольку в любом случае единого мнения нет:
.
Возможно, проблема здесь в том, что у вас уже есть недоверие к ярмарочным играм. Поскольку результат коэффициента Байеса так сильно поддерживает гипотезу работника, априорные шансы должны быть не менее 653, чтобы поддержать гипотезу клиента:
.
Сильное недоверие к честности игры! Здесь должно быть еще что-то, кроме априорных вероятностей.
Очевидная проблема заключается в том, что хотя интуитивно и понятно, что работник ошибается в своей гипотезе, альтернативная гипотеза клиента слишком экстремальна, чтобы быть верной, поэтому в наличии две неверные гипотезы. Что, если клиент подумал, что вероятность выигрыша равна 0,2, а не 0,05? Мы назовем эту гипотезу H3. Проверка H3 против гипотезы работника радикально меняет результаты нашего отношения правдоподобия:
.
H3 объясняет данные значительно лучше, чем H1. С коэффициентом Байеса 917 399 мы можем быть уверены, что H1 — далеко не лучшая гипотеза для объяснения наблюдаемых данных, потому что H3 разбивает ее в пух и прах. Проблема, с которой мы столкнулись при первой проверке гипотезы, заключалась в том, что убеждения клиента были гораздо худшим описанием события, чем убеждения работника. Но как мы видим, это не значит, что работник был прав. Когда мы выдвинули альтернативную гипотезу, то увидели, что она было гораздо лучшей, чем догадка работника или клиента. Но задачу мы не решили. Что, если есть еще лучшая гипотеза?
Нам нужно более общее решение, которое ищет все возможные гипотезы и выбирает лучшую. Для этого можно использовать функцию seq() в R, чтобы создать последовательность гипотез, которые нужно сравнить с H1.
Рассмотрим каждый шаг в 0,01 между 0 и 1 как возможную гипотезу — то есть 0,01, 0,02, 0,03 и т.д. Величину 0,01, на которую мы увеличиваем каждую гипотезу, мы назовем dx (принятое обозначение из высшей математики, представляющее «наименьшее изменение») и используем ее для определения переменной hypotheses, которая представляет все возможные гипотезы, которые нужно рассмотреть. Применим функцию seq() в R для генерации диапазона значений для каждой гипотезы от 0 до 1, увеличивая значения на dx:
dx <- 0.01
hypotheses <- seq(0,1,by=dx)
Потребуется функция, которая может вычислить отношение правдоподобия для любых двух гипотез. Функция bayes.factor() будет принимать два аргумента: h_top, который обозначает вероятность получения выигрыша за гипотезу клиенты (числитель), и h_bottom, который обозначает гипотезу работника. Выглядеть это будет так:
bayes.factor <- function(h_top,h_bottom){
((h_top)^24*(1-h_top)^76)/((h_bottom)^24*(1-h_bottom)^76)
}
Наконец, вычисляем отношение правдоподобия для всех этих возможных гипотез:
bfs <- bayes.factor(hypotheses,0.5)
Используем базовый функционал построения графиков в R, чтобы увидеть, как выглядят эти отношения правдоподобия:
plot(hypotheses,bfs, type='l')
На рис. 19.1 показан результирующий график.
Рис. 19.1. Построение графика коэффициента Байеса для каждой из гипотез
Видно четкое распределение различных объяснений для наблюдаемых данных. Используя R, мы можем рассмотреть широкий диапазон возможных гипотез, где каждая точка на линии представляет коэффициент Байеса для соответствующей гипотезы на оси Х.
Мы также можем увидеть, насколько велик самый большой коэффициент Байеса, используя функцию max() с нашим вектором bfs:
> max(bfs)
1.47877610^{6}
Можно проверить, какая гипотеза соответствует наибольшему отношению правдоподобия, говоря нам, в какие гипотезы стоит верить больше всего. Для этого введите:
> hypotheses[which.max(bfs)]
0.24
Теперь мы знаем, что вероятность 0,24 является лучшим предположением, так как эта гипотеза дает самое высокое отношение правдоподобия по сравнению с гипотезой работника. Из главы 10 вы узнали, что использование среднего или ожидаемого значения данных часто является хорошим способом оценки параметров. Здесь мы просто выбрали гипотезу, которая объясняет данные наилучшим образом, потому что сейчас нет способа взвесить оценки по вероятности их появления.
Вы показываете результаты клиенту и работнику. Оба согласны с тем, что ваши выводы довольно убедительны, но тут подходит другой человек и говорит вам: «Раньше я создавал такие игры и могу сказать вам, что по какой-то причине люди, которые разрабатывают игры с уточками, никогда не устанавливают призовую ставку от 0,2 до 0,3. Держу пари, что шансы 1000 к 1 и что реальный выигрыш не находится в этом диапазоне. Ничего, кроме этого, сказать не могу».
Теперь у нас есть некоторые априорные шансы, которые нужно использовать. Поскольку бывший создатель игр дал нам серьезные шансы относительно своих априорных убеждений в вероятности получения приза, можно попытаться умножить это значение на наш текущий список коэффициентов Байеса и вычислить апостериорные шансы. Для этого создадим список коэффициентов априорных шансов для каждой имеющейся гипотезы. Как сказал бывший создатель игр, отношение шансов для всех вероятностей от 0,2 до 0,3 должно составлять 1/1000. Поскольку он не знает ничего о других гипотезах, отношение шансов для них будет равно 1. Используем простой оператор ifelsestate и вектор hypotheses для создания вектора коэффициентов шансов:
priors <- ifelse(hypotheses >= 0.2 & hypotheses <= 0.3, 1/1000,1)
Затем еще раз применим plot(), чтобы отобразить это распределение априорных вероятностей:
plot(hypotheses,priors,type='l')
На рис. 19.2 показано наше распределение априорных шансов.
Рис. 19.2. Визуализация коэффициентов априорных шансов
Поскольку R является векторным языком (подробнее об этом см. в приложении A), можно просто умножить priors на bfs и получить новый вектор исходных данных, представляющих коэффициенты Байеса:
posteriors <- priors*bfs
Наконец, можно построить график вероятности повторения каждой из наших многочисленных гипотез:
plot(hypotheses,posteriors,type='l')
График показан на рис. 19.3.
Рис. 19.3. Построение графика распределения коэффициентов Байеса
В итоге получается очень странное распределение возможных убеждений. У нас есть достаточная уверенность в значениях от 0,15 до 0,2 и от 0,3 до 0,35, но мы находим диапазон между 0,2 и 0,3 крайне маловероятным. Но это распределение является честным представлением о силе веры в каждую гипотезу, учитывая то, что мы узнали о процессе производства игр с уточками. Хотя эта визуализация полезна, мы действительно хотим иметь возможность обрабатывать эти данные как истинное распределение вероятностей. Таким образом, можно задавать вопросы о том, насколько мы верим в диапазоны возможных гипотез, и рассчитывать ожидания распределения, чтобы получить единственную оценку гипотезы.
Истинное распределение вероятностей — это такое распределение, где сумма всех возможных убеждений равна 1. Наличие распределения вероятностей позволило бы нам рассчитать ожидание (или среднее значение) данных, чтобы сделать более точную оценку истинной вероятности получения приза. Это также позволило бы легко суммировать диапазоны значений, чтобы получить доверительные интервалы и другие подобные оценки.
Но если сложить все апостериорные шансы для гипотез, они не будут равны 1, как показано в этом расчете:
> sum(posteriors)
3.140687510^{6}
Значит, нужно нормализовать апостериорные шансы так, чтобы они давали в сумме 1. Для этого разделим каждое значение в векторе апостериорных вероятностей на сумму всех значений:
p.posteriors <- posteriors/sum(posteriors)
Теперь значения p.posteriors складываются, давая в итоге 1:
> sum(p.posteriors)
1
Наконец, построим новый p.posteriors:
plot(hypotheses,p.posteriors,type='l')
График показан на рис. 19.4.
Рис. 19.4. Нормализованные апостериорные шансы (обратите внимание на шкалу оси Y)
Можно использовать p.posteriors, чтобы ответить на некоторые общие вопросы о наших данных. Теперь можно рассчитать вероятность того, что истинный показатель получения приза будет меньше, чем утверждают участники. Сложим все вероятности для значений меньше 0,5:
sum(p.posteriors[which(hypotheses < 0.5)])
> 0.9999995
Как мы видим, вероятность того, что призовая ставка ниже, чем утверждает работник, составляет почти 1. Почти наверняка работник завышает истинную призовую ставку.
Рассчитаем ожидание распределения и используем этот результат в качестве оценки истинной вероятности. Напомню, что ожидание — это сумма оценок, взвешенных по их значению:
> sum(p.posteriors*hypotheses)
0.2402704
Полученное распределение несколько нетипично, с большим разрывом в середине, поэтому можно выбрать наиболее вероятную оценку следующим образом:
> hypotheses[which.max(p.posteriors)]
0.19
Теперь мы использовали коэффициент Байеса, чтобы получить диапазон вероятностных оценок для истинно возможного показателя выигрыша приза в игре с уточками. Это означает, что мы использовали коэффициент Байеса как форму оценки параметров!
Давайте еще раз взглянем на коэффициенты вероятности. Если мы не использовали априорную вероятность для какой-либо из гипотез, вы, скорее всего, понимали, что это был хороший подход к решению задачи без учета коэффициента Байеса. Мы наблюдали 24 вытащенные уточки с призами и 76 вытащенных уточек без призов. Разве нельзя использовать старое доброе бета-распределение? Как мы уже много раз обсуждали, начиная с главы 5, если нужно оценить частоту какого-либо события, мы всегда можем использовать бета-распределение. На рис. 19.5 показан график бета-распределения, где альфа 24 и бета 76.
За исключением масштаба оси Y, график выглядит практически идентично исходному графику наших коэффициентов правдоподобности. Но если мы проделаем несколько простых трюков, то сможем добиться идеального совпадения этих двух графиков. Если масштабировать бета-распределение по размеру dx и нормализовать bfs, то мы увидим, что эти два распределения достаточно близки (рис. 19.6).
Рис. 19.5. Бета-распределение с альфа 24 и бета 76
Рис. 19.6. Первоначальное распределение коэффициентов правдоподобия довольно близко соответствует Beta(24,76)
Кажется, сейчас есть только небольшая разница. Это можно исправить, используя самую слабую априорную вероятность, которая указывает на то, что получение приза и неполучение приза одинаково вероятны, то есть путем добавления 1 к параметрам альфа и бета (рис. 19.7).
Рис. 19.7. Наши отношения правдоподобия идеально соответствуют распределению Beta(24 + 1,76 + 1)
Теперь эти два распределения идеально выровнены. В главе 5 упоминалось, что бета-распределение было трудно вывести из наших основных правил вероятности. Но с коэффициентом Байеса мы смогли эмпирически воссоздать его модифицированную версию, которая предполагает априорное распределение Beta(1,1). И сделали мы это без всякой заумной математики! Нужно было всего лишь:
1) определить вероятность доказательства, выдвинутого гипотезой;
2) рассмотреть все возможные гипотезы;
3) нормализовать эти значения, чтобы создать распределение вероятностей.
Каждый раз, когда в книге использовалось бета-распределение, это было бета-распределение априорной вероятности. Оно облегчило вычисления, поскольку прийти к апостериорной вероятности можно, комбинируя альфа- и бета-параметры из правдоподобности и априорных бета-распределений. Другими словами:
Beta(αапостериорное, βапостериорное) =
= Beta(αаприорное + αправдоподобия, βаприорное + βправдоподобия).
Но построив распределение на основе коэффициента Байеса, можно легко использовать уникальное априорное распределение. Коэффициент Байеса не только является отличным инструментом для настройки проверок гипотез. С его помощью также создается любое распределение вероятностей, которое можно использовать для решения проблемы, будь то проверка гипотез или оценка параметров. Достаточно уметь определить базовое сравнение между двумя гипотезами, и мы уже на месте.
При создании A/B-теста в главе 15 мы выяснили, как свести многие проверки гипотез к проблеме оценки параметров. Теперь вы увидели, как наиболее распространенная форма проверки гипотез также может использоваться для оценки параметров. Учитывая эти две взаимосвязанные идеи, мы не имеем ограничений на тип вероятностных проблем, которые можно решить, используя только самые основные правила вероятности.
Мы закончили путешествие по байесовской статистике, и теперь вы можете оценить истинную красоту того, что изучили. Из основных правил вероятности мы можем вывести теорему Байеса, которая позволяет преобразовывать доказательства в утверждение, выражающее силу наших убеждений. Из теоремы Байеса можно вывести коэффициент Байеса — инструмент для сравнения того, насколько хорошо две гипотезы объясняют наблюдаемые данные. Итерируя возможные гипотезы и нормализуя результаты, можно использовать коэффициент Байеса, чтобы создать оценку параметров для неизвестного значения. Это, в свою очередь, позволяет выполнять бесчисленные другие проверки гипотез, сравнивая оценки. И все, что нужно сделать, чтобы выпустить всю эту мощь, — использовать основные правила вероятности, чтобы определить правдоподобность, P (D | H)!
Чтобы убедиться, что вы понимаете использование коэффициента Байеса и априорных шансов для оценки параметров, попробуйте ответить на эти вопросы.
1. Коэффициент Байеса предполагал, что мы рассматриваем H1: P (приз) = 0,5. Это позволило нам получить версию бета-распределения со значением альфа 1 и бета 1. Будет ли иметь значение выбор другой вероятности для H1? Предположим, что H1: P (приз) = 0,24, а затем посмотрим, отличается ли результирующее распределение, однажды нормализованное до суммы 1, от исходной гипотезы.
2. Напишите априорную вероятность для распределения, в котором каждая гипотеза в 1,05 раза более вероятна, чем предыдущая (предположим, что dx остается неизменным).
3. Предположим, вы наблюдали еще одну игру с уточками, где было 34 уточки с призами и 66 уточек без призов. Какую проверку вы бы сделали, чтобы ответить на вопрос: какова вероятность того, что шансов выиграть приз в этой игре больше, чем в той игре, которая приводилась в нашем примере? Реализация этой проверки намного сложнее, чем то, что было показано в этой книге, но наверняка вы сможете изучить все самостоятельно и отправиться в собственное приключение по миру более продвинутой байесовской статистики!