Hi all,

As part of the Turing ecosystem, we recently created a collection of slice-sampling MCMC algorithms:

Why slice sampling algorithms are great:

- Don’t need gradients!
- For low dimensional problems, they perform very well with minimal tuning
- Even if the tuning is off, they automatically adjust the amount of computation and result in adequate samples.
- They handle complex posterior geometry, such as multi modality, very well. This is because they don’t rely on gradient information.

We provide the following algorithms:

- The classic univariate slice sampling algorithms
^{[1]} - Latent slice sampling
^{[2]} - Gibbsian polar slice sampling
^{[3]}

The package supports Turing and can be used as follows:

```
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; initial_params=[exp(1.0), 0.0])
```

There are also plans to make it officially part of Turing so that it can be used in combination with `Turing.Gibbs`

, so stay tuned!

Neal, R. M. (2003). Slice sampling. The annals of statistics, 31(3), 705-767. ↩︎

Li, Y., & Walker, S. G. (2023). A latent slice sampling algorithm. Computational Statistics & Data Analysis, 179, 107652. ↩︎

Schär, P., Habeck, M., & Rudolf, D. (2023, July). Gibbsian polar slice sampling. In International Conference on Machine Learning. ↩︎