TuringLang / SliceSampling.jl

Slice sampling algorithms in Julia
https://turinglang.org/SliceSampling.jl/
MIT License
6 stars 2 forks source link

Slice Sampling Algorithms in Julia

Stable Dev Build Status Coverage

This package implements slice sampling algorithms accessible through the AbstractMCMC interface. For general usage, please refer to here.

Implemented Algorithms

Univariate Slice Sampling Algorithms

Meta Multivariate Samplers for Augmenting Univariate Samplers

Multivariate Slice Sampling Algorithms

Example with Turing Models

This package supports the Turing probabilistic programming framework:

using Distributions
using Turing
using SliceSampling

@model function demo()
    s ~ InverseGamma(3, 3)
    m ~ Normal(0, sqrt(s))
end

sampler   = RandPermGibbs(SliceSteppingOut(2.))
n_samples = 10000
model     = demo()
sample(model, externalsampler(sampler), n_samples)

The following slice samplers can also be used as a conditional sampler in Turing.Experimental.Gibbs sampler:

See the following example:

using Distributions
using Turing
using SliceSampling

@model function simple_choice(xs)
    p ~ Beta(2, 2)
    z ~ Bernoulli(p)
    for i in 1:length(xs)
        if z == 1
            xs[i] ~ Normal(0, 1)
        else
            xs[i] ~ Normal(2, 1)
        end
    end
end

sampler = Turing.Experimental.Gibbs(
    (
        p = externalsampler(SliceSteppingOut(2.0)),
        z = PG(20, :z)
    )
)

n_samples = 1000
model     = simple_choice([1.5, 2.0, 0.3])
sample(model, sampler, n_samples)

[^N2003]: Neal, R. M. (2003). Slice sampling. The annals of statistics, 31(3), 705-767. [^LW2023]: Li, Y., & Walker, S. G. (2023). A latent slice sampling algorithm. Computational Statistics & Data Analysis, 179, 107652. [^SHR2023]: Schär, P., Habeck, M., & Rudolf, D. (2023, July). Gibbsian polar slice sampling. In International Conference on Machine Learning. [^GG1984]: Geman, S., & Geman, D. (1984). Stochastic relaxation, Gibbs distributions, and the Bayesian restoration of images. IEEE Transactions on Pattern Analysis and Machine Intelligence, (6). [^BRS1993]: Bélisle, C. J., Romeijn, H. E., & Smith, R. L. (1993). Hit-and-run algorithms for generating multivariate distributions. Mathematics of Operations Research, 18(2), 255-266.