Документация Engee

Вероятностное программирование за тридцать секунд

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

Этот пример можно запустить на любом компьютере, где установлена среда Julia (см. Начало работы), но вам нужно будет установить пакеты Turing и StatsPlots, если это еще не сделано.

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

# Импортируем библиотеки.
using Turing, StatsPlots, Random

# Задаем истинную вероятность появления стороны с изображением головы на монете.
p_true = 0.5

# Выполняем итерацию от 0 наблюдений до 100 наблюдений.
Ns = 0:100

# Берем данные из распределения Бернулли, т. е. берем орел или решку.
Random.seed!(12)
data = rand(Bernoulli(p_true), last(Ns))

# Объявляем модель Turing.
@model function coinflip(y)
    # Наше предположение о вероятности появления стороны с изображением головы на монете.
    p ~ Beta(1, 1)

    # Количество наблюдений.
    N = length(y)
    for n in 1:N
        # Орел или решка взяты из распределения Бернулли.
        y[n] ~ Bernoulli(p)
    end
end

# Параметры сэмплера гамильтониана Монте-Карло (HMC).
iterations = 1000
ϵ = 0.05
τ = 10

# Запускаем выборку.
chain = sample(coinflip(data), HMC(ϵ, τ), iterations)

# Строим график сводки по процессу выборки для параметра p, т. е. вероятность появления стороны с изображением головы на монете.
histogram(chain[:p])