This package implements a set of functions for transforming constrained random variables (e.g. simplexes, intervals) to Euclidean space. The 3 main functions implemented in this package are the link
, invlink
and logpdf_with_trans
for a number of distributions. The distributions supported are:
RealDistribution
:Union{Cauchy, Gumbel, Laplace, Logistic, NoncentralT, Normal, NormalCanon, TDist}
,PositiveDistribution
:Union{BetaPrime, Chi, Chisq, Erlang, Exponential, FDist, Frechet, Gamma, InverseGamma, InverseGaussian, Kolmogorov, LogNormal, NoncentralChisq, NoncentralF, Rayleigh, Weibull}
,UnitDistribution
:Union{Beta, KSOneSided, NoncentralBeta}
,SimplexDistribution
:Union{Dirichlet}
,PDMatDistribution
:Union{InverseWishart, Wishart}
, andTransformDistribution
:Union{T, Truncated{T}} where T<:ContinuousUnivariateDistribution
.
All exported names from the Distributions.jl package are reexported from Bijectors
.
link
: maps a sample of a random distributiondist
from its support to a value in R^n. Example:
julia> using Bijectors
julia> dist = Beta(2, 2)
Beta{Float64}(α=2.0, β=2.0)
julia> x = rand(dist)
0.7472542331020509
julia> y = link(dist, x)
1.084021356473311
invlink
: the inverse of thelink
function. Example:
julia> z = invlink(dist, y)
0.6543406780096065
julia> x == z
true
logpdf_with_trans
: findslog
of the (transformed) probability density function of a distributiondist
at a samplex
. Example:
julia> using Bijectors
julia> dist = Dirichlet(2, 3)
Dirichlet{Float64}(alpha=[3.0, 3.0])
julia> x = rand(dist)
2-element Array{Float64,1}:
0.46094823621110165
0.5390517637888984
julia> logpdf_with_trans(dist, x, false) # ignoring the transformation
0.6163709733893024
julia> logpdf_with_trans(dist, x, true) # considering the transformation
-0.7760422307471244