1. Байесовский вывод

1.1 Нотация

В байесовском подоходе статистический вывод описывается формулой Байеса

\[P(θ|Data) = \frac{P(Data|θ)\times P(θ)}{P(Data)}\]

  • \(P(θ|Data)\) — апостериорная вероятность (posterior)
  • \(P(Data|θ)\) — функция правдоподобия (likelihood)
  • \(P(θ)\) — априорная вероятность (prior)
  • \(P(Data)\) — нормализующий делитель

В литературе можно еще встретить такую запись:

\[P(θ|Data) \propto P(Data|θ)\times P(θ)\]

2. Вероятность vs. функция правдободобия

Предположим что распределение количества согласных в языках мира можно описать нормальным распределением со средним 22 и стандартным отклонением 6:

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

\[P\left(X \in (23,\, 32) | X \sim \mathcal{N}(\mu = 22,\, \sigma^{2}=6)\right) = ...\]

[1] 0.3860258

Когда мы говорим про функцию правдоподобия, мы нашли еще один язык в котором оказалось 33 согласных, и нас интересует, насколько правдоподобна функция нормального распределения со средним 22 и стандартным отклонением 6 при значении переменной 33. Это значение равно функции плотности:

\[L\left(X \sim \mathcal{N}(\mu = 22,\, \sigma^{2}=6)|x = 33\right) = ...\]

[1] 0.01238519

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

А что если у нас не одно наблюдение, а несколько? Например, мы наблюдаем языки с 33 и 26 согласными? События независимы друг от друга, значит, мы можем перемножить получаемые вероятности.

Самое важное:

  • вероятность — P(data|distribution)
  • правдоподобие — L(distribution|data)

Интеграл распределения вероятностей равен 1. Интеграл правдоподобия может быть не равен 1.

3. Категориальные данные

В датасете c грибами (взят c kaggle) представлено следующее распределение по месту обитания:

Мы нашли некоторый новый вид грибов на лужайке (grasses). Какой это может быть гриб: съедобный или ядовитый? У нас нет никаких идей, почему бы нам отдать предпочтения той или иной гипотезе, так что будем использовать неинформативное априорное распределение:

Вот мы и сделали байесовский апдейт. Теперь апостериорное распределение, которые мы получили на предыдущем шаге, мы можем использовать в новом апдейте. Допустим, мы опять нашли этот же вид гриба, но в этот раз в лесу (woods).

4. Биномиальные данные

Биномиальные данные возникают, когда нас интересует доля успехов в какой-то серии эксперементов Бернулли.

4.1 Биномиальное распределение

Биномиальное распределение — распределение количества успехов эксперементов Бернулли из n попыток с вероятностью успеха p.

\[P(k | n, p) = \frac{n!}{k!(n-k)!} \times p^k \times (1-p)^{n-k} = {n \choose k} \times p^k \times (1-p)^{n-k}\] \[ 0 \leq p \leq 1; n, k > 0\]

3.2 Бета распределение

\[P(x; α, β) = \frac{x^{α-1}\times (1-x)^{β-1}}{B(α, β)}; 0 \leq x \leq 1; α, β > 0\]

Бета функция:

\[Β(α, β) = \frac{Γ(α)\times Γ(β)}{Γ(α+β)} = \frac{(α-1)!(β-1)!}{(α+β-1)!} \]

Можно поиграть с разными параметрами:

\[\mu = \frac{\alpha}{\alpha+\beta}\]

\[\sigma^2 = \frac{\alpha\times\beta}{(\alpha+\beta)^2\times(\alpha+\beta+1)}\]

4.3 Байесовский апдейт биномиальных данных

\[Beta_{post}(\alpha_{post}, \beta_{post}) = Beta(\alpha_{prior}+\alpha_{data}, \beta_{prior}+\beta_{data}),\] где \(Beta\) — это бета распределение

4. Нормальное распределение

Встроенный датасет ChickWeight содержит вес цыплят (weight) в зависимости от типа диеты (Diet). Мы будем анализировать 20-дневных птенцов.

Начнем с апостериорных параметров для наблюдений \(x_1, ... x_n\) со средним \(\mu_{data}\) известной дисперсией \(\sigma_{known}^2\)

4.1 Байесовский апдейт нормального распределения: дискретный вариант

Мы можем рассматривать эту задачу как выбор между несколькими моделями с разными средними:

Дальше мы можем точно так же апдейтить, как мы делали раньше:

4.2 Байесовский апдейт нормального распределения: непрерывный вариант

Во первых, нам понадобиться некоторая мера, которая называется точность (precision):

\[\tau = \frac{1}{\sigma^2}\]

\[\tau_{post} = \tau_{prior} + \tau_{data} \Rightarrow \sigma^2_{post} = \frac{1}{\tau_{post}}\]

\[\mu_{post} = \frac{\mu_{prior} \times \tau_{prior} + \mu_{data} \times \tau_{data}}{\tau_{post}}\]

Так что если нашим априорным распределением мы назовем нормальное распределение со средним около 180 и стандартным отклонением 90, то процесс байсовского апдейта будет выглядеть вот так:

Домашнее задание (до 22.01.2019)

Домашнее задание (до 29.01.2019)

Домашнее задание нужно выполнять в отдельном rmarkdown файле. Получившийся файл следует помещать в соответствующую папку в своем репозитории на гитхабе. Более подробные инструкции см. на этой странице.

3.1

Выведите в консоль значение правдоподобия для нормального распределения \(\mathcal{N}(\mu = 22,\, \sigma^{2}=6)\) при значениях, записанных в датасете про количество согласных.

3.2

В датасет записаны частотности встречаемости букв разных языков. Проведите байесовский апдейт, используя в качестве данных слово “most” и считая, что все языки равновероятны. Выведите в консоль наибольшее апостериорную вероятность.

3.3

Проведите байесовский апдейт бета распредления, приведенного в датасете, при помощи априорного распредления Beta(33, 77) и приведите получившуюся долю успехов апостериорного распределения.




© Г. Мороз 2018 с помощью RMarkdown. Исходный код на GitHub