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

Подбор распределения

Данный пакет предоставляет методы для подбора распределения по множеству выборок. В общем случае можно записать такое выражение:

d = fit(D, x)

Этот оператор подбирает распределение типа D к заданному набору данных x, где x должно быть массивом, содержащим все выборки. Функция подбора выбирает подходящий способ подбора распределения, которым в большинстве случаев будет оценка по максимуму правдоподобия.

В качестве первого аргумента можно использовать просто имя распределения, например Binomial, или конкретное распределение с параметром типа, например Normal{Float64} или Exponential{Float32}. Однако в последнем случае параметр типа распределения игнорируется:

julia> fit(Cauchy{Float32}, collect(-4:4))
Cauchy{Float64}(μ=0.0, σ=2.0)

Оценка по максимуму правдоподобия

Функция fit_mle предназначена для оценки по максимуму правдоподобия.

Краткий обзор

fit_mle(D, x)

Подбирает распределение типа D к заданному набору данных x.

  • Для одномерного распределения x может быть массивом произвольного размера.

  • Для многомерного распределения x должно быть матрицей, каждый столбец которой представляет собой выборку.

fit_mle(D, x, w)

Подбирает распределение типа D к взвешенному набору данных x, веса которого заданы в w.

В данном случае w должно быть массивом длиной n, где n — количество выборок в x.

Применимые распределения

Метод fit_mle реализован для следующих распределений.

Одномерные:

Многомерные:

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

fit_mle(Binomial, n, x)        # n — это количество испытаний в каждом эксперименте
fit_mle(Binomial, n, x, w)

fit_mle(Categorical, k, x)     # k — это размер пространства (то есть количество отдельных значений)
fit_mle(Categorical, k, x, w)

fit_mle(Categorical, x)        # эквивалентно fit_mle(Categorical, max(x), x)
fit_mle(Categorical, x, w)

Достаточная статистика

Для многих распределений оценка может основываться на достаточной статистике (или ее сумме), вычисленной на основе набора данных. Чтобы упростить реализацию для таких распределений, вместо метода fit_mle напрямую реализуется метод suffstats:

ss = suffstats(D, x)        # в ss сохраняется достаточная статистика для x
ss = suffstats(D, x, w)     # в ss сохраняется достаточная статистика для взвешенного набора данных

d = fit_mle(D, ss)          # оценка по максимуму правдоподобия на основе достаточной статистики

При вызове fit_mle для D резервный метод fit_mle сначала вызывает suffstats для вычисления достаточной статистики, а затем метод fit_mle применительно к этой достаточной статистике для получения результата. Для некоторых распределений это не самый эффективный способ, поэтому для реализации более эффективных алгоритмов оценки метод fit_mle специализируется.

Оценка по апостериорному максимуму

Данный пакет также поддерживает оценку по апостериорному максимуму (MAP), которая реализована в рамках фреймворка сопряженного экспоненциального семейства распределений (см. раздел :ref:Conjugate Prior and Posterior <ref-conj>).