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

Иерархия типов

Все сэмплеры и распределения, входящие в этот пакет, организованы в иерархию типов, которая описывается ниже.

Sampleable

Корнем этой иерархии типов является Sampleable. Абстрактный тип Sampleable охватывает все типы объектов, из которых можно получать выборки, в частности сэмплеры и распределения. Формально тип Sampleable определен следующим образом.

abstract type Sampleable{F<:VariateForm,S<:ValueSupport} end

У него есть два параметра типа, которые определяют то, какие выборки можно делать из объекта.

Distributions.Sampleable
Base.rand(::Distributions.Sampleable)

VariateForm

Distributions.VariateForm

К подтипам VariateForm, определенным в Distributions.jl, относятся следующие типы.

Тип Одна выборка Несколько выборок

Univariate == ArrayLikeVariate{0}

скалярное число

Числовой массив произвольной формы, каждый элемент которого является выборкой

Multivariate == ArrayLikeVariate{1}

числовой вектор

Матрица, каждый столбец которой является выборкой

Matrixvariate == ArrayLikeVariate{2}

числовая матрица

Массив матриц, каждый элемент которого является матрицей выборок

ValueSupport

ValueSupport

Абстрактный тип, определяющий поддерживаемые элементы выборки.

Может быть либо Discrete, либо Continuous.

К подтипам ValueSupport, определенным в Distributions.jl, относятся следующие типы.

Discrete <: ValueSupport

Этот тип представляет поддержку дискретной случайной величины.

Она является исчислимой. Например, это может быть конечное или исчислимое бесконечное множество, такое как множество натуральных чисел.

См. также: Continuous, ValueSupport

Continuous <: ValueSupport

Этот тип представляет поддержку непрерывной случайной величины.

Она является неисчислимо бесконечной. Например, это может быть интервал на вещественной прямой.

См. также: Discrete, ValueSupport

Тип Тип элементов по умолчанию Описание Примеры

Discrete

Int

Выборки принимают исчислимое количество значений

,

Continuous

Float64

Выборки принимают неисчислимое количество значений

],

Множество выборок часто организуются в массив в зависимости от размерности.

Базовые возможности, предоставляемые поддерживающим выборку объектом, — получение информации о генерируемых выборках и получение выборок. В частности, для поддерживающих выборку объектов доступны следующие функции:

length(s::Sampleable)

Длина каждой выборки. Всегда возвращает 1, если s является одномерным объектом.

size(s::Sampleable)

Размер (т. е. форма) каждой выборки. Всегда возвращает (), если s является одномерным объектом, и (length(s),), если s является многомерным объектом.

nsamples(s::Sampleable)

Количество значений, содержащихся в одной выборке из s. Множество выборок часто организуется в массив в зависимости от размерности.

eltype(::Type{Sampleable})

The default element type of a sample. This is the type of elements of the samples generated by the rand method. However, one can provide an array of different element types to store the samples using rand!.

rand(::AbstractRNG, ::Sampleable)

Производит выборку из сэмплера и возвращает результат.

rand!(::AbstractRNG, ::Sampleable, ::AbstractArray)

Выполняет выборку на месте из сэмплера и сохраняет результат в указанном массиве.

Распределения

Тип Distribution, являющийся подтипом Sampleable и имеющий приведенное ниже определение, служит для хранения вероятностных распределений. Помимо поддержки выборки, распределение обычно обладает возможностью явного объединения области, функцией плотности вероятности и множеством других количественных параметров.

abstract type Distribution{F<:VariateForm,S<:ValueSupport} <: Sampleable{F,S} end
Distributions.Distribution

Для упрощения использования на практике введен ряд псевдонимов типов:

const UnivariateDistribution{S<:ValueSupport}   = Distribution{Univariate,S}
const MultivariateDistribution{S<:ValueSupport} = Distribution{Multivariate,S}
const MatrixDistribution{S<:ValueSupport}       = Distribution{Matrixvariate,S}
const NonMatrixDistribution = Union{UnivariateDistribution, MultivariateDistribution}

const DiscreteDistribution{F<:VariateForm}   = Distribution{F,Discrete}
const ContinuousDistribution{F<:VariateForm} = Distribution{F,Continuous}

const DiscreteUnivariateDistribution     = Distribution{Univariate,    Discrete}
const ContinuousUnivariateDistribution   = Distribution{Univariate,    Continuous}
const DiscreteMultivariateDistribution   = Distribution{Multivariate,  Discrete}
const ContinuousMultivariateDistribution = Distribution{Multivariate,  Continuous}
const DiscreteMatrixDistribution         = Distribution{Matrixvariate, Discrete}
const ContinuousMatrixDistribution       = Distribution{Matrixvariate, Continuous}

Все методы, применимые к Sampleable, также применимы к Distribution. API для распределений разной размерности различаются (подробные сведения см. в разделах об одномерных, многомерных и матричных распределениях).