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

Начало работы

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

Мы начнем с выборки 100 наблюдений случайной величины со стандартным нормальным распределением.

Первый шаг — настройка среды:

julia> using Random, Distributions

julia> Random.seed!(123) # Задаем начальное значение

Затем мы создаем стандартное нормальное распределение d и получаем выборки с помощью rand:

julia> d = Normal()
Normal(μ=0.0, σ=1.0)

Объект d, представляющий вероятностное распределение, в нашем случае является стандартным нормальным распределением. Можно запросить его свойства, например среднее значение:

julia> mean(d)
0.0

Можно также получить выборки из d с помощью rand.

julia> x = rand(d, 100)
100-element Array{Float64,1}:
  0.376264
 -0.405272
 ...

Для распределения можно легко получить pdf, cdf, quantile и многие другие функции. Например, медиана (50-й перцентиль) и 95-й перцентиль для стандартного нормального распределения определяются так:

julia> quantile.(Normal(), [0.5, 0.95])
2-element Array{Float64,1}:
 0.0
 1.64485

Нормальное распределение параметризуется по среднему значению и среднеквадратичному отклонению. Для получения случайных выборок из нормального распределения со средним значением 1 и среднеквадратичным отклонением 2 служит такой код:

julia> rand(Normal(1, 2), 100)

Использование других распределений

В пакет входит множество других распределений трех основных типов:

  • Univariate == ArrayLikeVariate{0}

  • Multivariate == ArrayLikeVariate{1}

  • Matrixvariate == ArrayLikeVariate{2}

Каждый тип делится далее на Discrete и Continuous.

Например, помимо прочего, можно определить следующие распределения:

julia> Binomial(n, p) # Дискретное одномерное
julia> Cauchy(u, b)  # Непрерывное одномерное
julia> Multinomial(n, p) # Дискретное многомерное
julia> Wishart(nu, S) # Непрерывное матричной размерности

Помимо этого, на основе одномерных распределений можно создавать усеченные распределения:

julia> truncated(Normal(mu, sigma), l, u)

Чтобы узнать, какие параметры подходят для данного распределения D, можно использовать функцию fieldnames(D):

julia> fieldnames(Cauchy)
2-element Array{Symbol,1}:
 :μ
 :β

Здесь сообщается, что распределение Коши инициализируется с параметрами местоположения μ и масштаба β.

Оценка параметров

Часто бывает полезно аппроксимировать эмпирическое распределение к теоретическому. Например, для созданного выше массива x можно узнать, какому нормальному распределению он лучше всего соответствует:

julia> fit(Normal, x)
Normal(μ=0.036692077201688635, σ=1.1228280164716382)

Так как x — это случайная выборка из Normal, легко проверить, имеют ли смысл подобранные значения. И действительно, оценочные значения [0,04, 1,12] близки к истинным [0,0, 1,0], которые использовались для создания x.