Иерархия типов
Sampleable
Корнем этой иерархии типов является Sampleable
. Абстрактный тип Sampleable
охватывает все типы объектов, из которых можно получать выборки, в частности сэмплеры и распределения. Формально тип Sampleable
определен следующим образом.
abstract type Sampleable{F<:VariateForm,S<:ValueSupport} end
julia
У него есть два параметра типа, которые определяют то, какие выборки можно делать из объекта.
Distributions.Sampleable Base.rand(::Distributions.Sampleable)
julia
VariateForm
Distributions.VariateForm
julia
К подтипам VariateForm
, определенным в Distributions.jl
, относятся следующие типы.
Тип | Одна выборка | Несколько выборок |
---|---|---|
|
скалярное число |
Числовой массив произвольной формы, каждый элемент которого является выборкой |
|
числовой вектор |
Матрица, каждый столбец которой является выборкой |
|
числовая матрица |
Массив матриц, каждый элемент которого является матрицей выборок |
Распределения
Тип Distribution
, являющийся подтипом Sampleable
и имеющий приведенное ниже определение, служит для хранения вероятностных распределений. Помимо поддержки выборки, распределение обычно обладает возможностью явного объединения области, функцией плотности вероятности и множеством других количественных параметров.
abstract type Distribution{F<:VariateForm,S<:ValueSupport} <: Sampleable{F,S} end
julia
Distributions.Distribution
julia
Для упрощения использования на практике введен ряд псевдонимов типов:
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}
julia
Все методы, применимые к Sampleable
, также применимы к Distribution
. API для распределений разной размерности различаются (подробные сведения см. в разделах об одномерных, многомерных и матричных распределениях).