Иерархия типов
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 для распределений разной размерности различаются (подробные сведения см. в разделах об одномерных, многомерных и матричных распределениях).