Подбор распределения
Данный пакет предоставляет методы для подбора распределения по множеству выборок. В общем случае можно записать такое выражение:
d = fit(D, x)
Этот оператор подбирает распределение типа D
к заданному набору данных x
, где x
должно быть массивом, содержащим все выборки. Функция подбора выбирает подходящий способ подбора распределения, которым в большинстве случаев будет оценка по максимуму правдоподобия.
В качестве первого аргумента можно использовать просто имя распределения, например |
julia> fit(Cauchy{Float32}, collect(-4:4))
Cauchy{Float64}(μ=0.0, σ=2.0)
Оценка по максимуму правдоподобия
Функция fit_mle
предназначена для оценки по максимуму правдоподобия.
Краткий обзор
#
Distributions.fit_mle
— Method
fit_mle(D, x)
Подбирает распределение типа D
к заданному набору данных x
.
-
Для одномерного распределения x может быть массивом произвольного размера.
-
Для многомерного распределения x должно быть матрицей, каждый столбец которой представляет собой выборку.
#
Distributions.fit_mle
— Method
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
специализируется.