Sampling¶
Example:
import probpy as pp
import numpy as np
# gaussian mixture pdf
pdf = lambda x: pp.normal.p(x, 0, 1) + pp.normal.p(x, 6, 3) + pp.normal.p(x, -6, 0.5)
samples = pp.metropolis_hastings(size=50000,
pdf=pdf,
proposal=pp.normal.med(sigma=1.0),
initial=-5)
# 100x faster but does not take custom proposal
samples = pp.fast_metropolis_hastings(size=50000,
pdf=pdf,
initial=np.random.rand(100),
energy=1.0)
-
probpy.sampling.mcmc.fast_metropolis_hastings(size: int, pdf: typing.Callable[numpy.ndarray, numpy.ndarray], initial: numpy.ndarray, energy: float = 1.0)[source]¶ Parameters: - size – number of samples
- pdf – pdf to sample from
- initial – initial points
- energy – variance of jumps
Returns: array of samples
-
probpy.sampling.mcmc.fast_metropolis_hastings_log_space(size: int, log_pdf: typing.Callable[numpy.ndarray, numpy.ndarray], initial: numpy.ndarray, energy: float = 1.0)[source]¶ Parameters: - size – number of samples
- log_pdf – log pdf
- initial – initial points
- energy – energy of estimate
Returns: samples
-
probpy.sampling.mcmc.metropolis(size: int, pdf: typing.Callable[numpy.ndarray, numpy.ndarray], proposal: probpy.core.RandomVariable, M: float) → numpy.ndarray[source]¶ Parameters: - size – number of samples
- pdf – pdf to sample from
- proposal – proposal distribution
- M – normalization constant
Returns: array of samples
-
probpy.sampling.mcmc.metropolis_hastings(size: int, pdf: typing.Callable[numpy.ndarray, numpy.ndarray], proposal: probpy.core.RandomVariable, initial: numpy.ndarray = None) → typing.List[numpy.ndarray][source]¶ Parameters: - size – number of samples
- pdf – pdf to sample from
- proposal – proposal distribution
- initial – starting point
Returns: array of samples