Начало работы
Нормальное распределение
Мы начнем с выборки 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
.