No-U-Turn Sampler (NUTS)¶
- 
class 
sampyl.NUTS(logp, start, step_size=0.25, adapt_steps=100, Emax=1000.0, target_accept=0.65, gamma=0.05, k=0.75, t0=10.0, **kwargs)¶ No-U-Turn sampler (Hoffman & Gelman, 2014) for sampling from a probability distribution defined by a log P(theta) function.
For technical details, see the paper: http://www.stat.columbia.edu/~gelman/research/published/nuts.pdf
Parameters: - logp – log P(X) function for sampling distribution
 - start – Dictionary of starting state for the sampler. Should have one element for each argument of logp.
 - grad_logp – 
(optional) Function or list of functions that calculate grad log P(theta). Pass functions here if you don’t want to use autograd for the gradients. If logp has multiple parameters, grad_logp must be a list of gradient functions w.r.t. each parameter in logp.
If you wish to use a logp function that returns both the logp value and the gradient, set grad_logp = True.
 - scale – (optional) Dictionary with same format as start. Scaling for initial momentum in Hamiltonian step.
 - step_size – (optional) float. Initial step size for the deterministic proposals.
 - adapt_steps – (optional) int. Integer number of steps used for adapting the step size to achieve a target acceptance rate.
 - Emax – (optional) float. Maximum energy.
 - target_accept – (optional) float. Target acceptance rate.
 - gamma – (optional) float.
 - k – (optional) float. Scales the speed of step size adaptation.
 - t0 – (optional) float. Slows initial step size adaptation.
 
Example
def logp(x, y): ... start = {'x': x_start, 'y': y_start} nuts = sampyl.NUTS(logp, start) chain = nuts.sample(1000)
- 
sample(num, burn=0, thin=1, n_chains=1, progress_bar=True)¶ Sample from \(P(X)\)
Parameters: - num – int. Number of samples to draw from \(P(X)\).
 - burn – (optional) int. Number of samples to discard from the beginning of the chain.
 - thin – (optional) float. Thin the samples by this factor.
 - n_chains – (optional) int. Number of chains to return. Each chain is given its own process and the OS decides how to distribute the processes.
 - progress_bar – (optional) boolean. Show the progress bar, default = True.
 
Returns: Record array with fields taken from arguments of logp function.
- 
step()¶ Perform one NUTS step.