Иерархия типов
Sampleable
Корнем этой иерархии типов является Sampleable. Абстрактный тип Sampleable охватывает все типы объектов, из которых можно получать выборки, в частности сэмплеры и распределения. Формально тип Sampleable определен следующим образом.
abstract type Sampleable{F<:VariateForm,S<:ValueSupport} end
У него есть два параметра типа, которые определяют то, какие выборки можно делать из объекта.
Distributions.Sampleable
Base.rand(::Distributions.Sampleable)
VariateForm
Distributions.VariateForm
К подтипам VariateForm, определенным в Distributions.jl, относятся следующие типы.
| Тип | Одна выборка | Несколько выборок |
|---|---|---|
|
скалярное число |
Числовой массив произвольной формы, каждый элемент которого является выборкой |
|
числовой вектор |
Матрица, каждый столбец которой является выборкой |
|
числовая матрица |
Массив матриц, каждый элемент которого является матрицей выборок |
ValueSupport
#
Distributions.ValueSupport — Type
ValueSupport
Абстрактный тип, определяющий поддерживаемые элементы выборки.
Может быть либо Discrete, либо Continuous.
К подтипам ValueSupport, определенным в Distributions.jl, относятся следующие типы.
#
Distributions.Discrete — Type
Discrete <: ValueSupport
Этот тип представляет поддержку дискретной случайной величины.
Она является исчислимой. Например, это может быть конечное или исчислимое бесконечное множество, такое как множество натуральных чисел.
См. также: Continuous, ValueSupport
#
Distributions.Continuous — Type
Continuous <: ValueSupport
Этот тип представляет поддержку непрерывной случайной величины.
Она является неисчислимо бесконечной. Например, это может быть интервал на вещественной прямой.
См. также: Discrete, ValueSupport
| Тип | Тип элементов по умолчанию | Описание | Примеры |
|---|---|---|---|
|
|
Выборки принимают исчислимое количество значений |
, |
|
|
Выборки принимают неисчислимое количество значений |
], |
Множество выборок часто организуются в массив в зависимости от размерности.
Базовые возможности, предоставляемые поддерживающим выборку объектом, — получение информации о генерируемых выборках и получение выборок. В частности, для поддерживающих выборку объектов доступны следующие функции:
#
Base.length — Method
length(s::Sampleable)
Длина каждой выборки. Всегда возвращает 1, если s является одномерным объектом.
#
Base.size — Method
size(s::Sampleable)
Размер (т. е. форма) каждой выборки. Всегда возвращает (), если s является одномерным объектом, и (length(s),), если s является многомерным объектом.
#
Distributions.nsamples — Method
nsamples(s::Sampleable)
Количество значений, содержащихся в одной выборке из s. Множество выборок часто организуется в массив в зависимости от размерности.
#
Base.eltype — Method
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!.
#
Base.rand — Method
rand(::AbstractRNG, ::Sampleable)
Производит выборку из сэмплера и возвращает результат.
#
Random.rand! — Method
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 для распределений разной размерности различаются (подробные сведения см. в разделах об одномерных, многомерных и матричных распределениях).