This package defines the necessary functions to enable automatic differentiation (AD) of the logpdf
function from Distributions.jl using the packages Tracker.jl, Zygote.jl, ForwardDiff.jl and ReverseDiff.jl. The goal of this package is to make the output of logpdf
differentiable wrt all continuous parameters of a distribution as well as the random variable in the case of continuous distributions.
AD of logpdf
is fully supported and tested for the following distributions wrt all combinations of continuous variables (distribution parameters and/or the random variable) and using all defined distribution constructors:
- Univariate discrete
Bernoulli
BetaBinomial
Binomial
Categorical
Geometric
NegativeBinomial
Poisson
PoissonBinomial
Skellam
- Univariate continuous
Arcsine
Beta
BetaPrime
Biweight
Cauchy
Chi
Chisq
Cosine
Epanechnikov
Erlang
Exponential
FDist
Frechet
Gamma
GeneralizedExtremeValue
GeneralizedPareto
Gumbel
InverseGamma
InverseGaussian
Kolmogorov
Laplace
Levy
LocationScale
Logistic
LogitNormal
LogNormal
Normal
NormalCanon
NormalInverseGaussian
Pareto
PGeneralizedGaussian
Rayleigh
Semicircle
SymTriangularDist
TDist
TriangularDist
Triweight
Uniform
Weibull
- Multivariate continuous
MvLogNormal
MvNormal
- Matrix-variate continuous
MatrixBeta
Wishart
InverseWishart
A number of distributions are still either broken or not fully supported for various reasons. See this issue. If you can fix any of the broken ones, a PR is welcome!