pypfilt.sampler#
The pypfilt.sampler
module provides a Latin hypercube sampler.
This sampler ensures that the samples provide a good representation of the real variability, and supports dependent parameters whose distributions depend on other parameters.
- class pypfilt.sampler.LatinHypercube#
Draw parameter samples using Latin hypercube sampling.
- draw_samples(settings, prng, particles, prior, sampled)#
Return samples from the model prior distribution.
- Parameters:
settings – A dictionary of sampler-specific settings.
prng – The source of randomness for the sampler.
particles – The number of particles.
prior – The prior distribution table.
sampled – Sampled values for specific parameters.
To use this sampler, add the following to your scenario files:
[components]
sampler = "pypfilt.sampler.LatinHypercube"
[sampler]
dependent_distributions_function = "beta_distribution"
[prior]
# Sample alpha uniformly over the interval [5, 10].
alpha = { name = "uniform", args.loc = 5, args.scale = 5}
# Identify beta as a dependent parameter.
beta = { dependent = true }
You then need to define a function that constructs the sampling distribution for each dependent parameter:
def beta_distribution(indep_values, dep_params):
"""Define beta ~ N(alpha + 1, 1)."""
return {
'beta': {
'name': 'norm',
'args': {'loc': indep_values['alpha'] + 1, 'scale': 1},
},
}
Note
See the lhs documentation for examples of how to define distributions for independent and dependent parameters.
Defining a custom sampler#
A custom sampler should derive the following base class:
- class pypfilt.sampler.Base#
The base class for parameter samplers.
- abstract draw_samples(settings, prng, particles, prior, sampled)#
Return samples from the model prior distribution.
- Parameters:
settings – A dictionary of sampler-specific settings.
prng – The source of randomness for the sampler.
particles – The number of particles.
prior – The prior distribution table.
sampled – Sampled values for specific parameters.