# Population strategy¶

Strategies to choose the population size.

The population size can be constant or can change over the course of the generations.

class pyabc.populationstrategy.PopulationStrategy(nr_particles: int, *, nr_samples_per_parameter: int = 1)

Strategy to select the sizes of the populations.

This is a non-functional abstract base implementation. Do not use this class directly. Subclasses must override the adapt_population_size method.

Parameters: nr_particles (int) – Number of particles per populations nr_samples_per_parameter (int, optional) – Number of samples to draw for a proposed parameter. Default is 1.
adapt_population_size(transitions: List[pyabc.transition.base.Transition], model_weights: numpy.ndarray)

Select the population size for the next population.

Parameters: transitions (List of Transitions) – model_weights (array of model weights) – n – The new population size int
get_config()

Get the configuration of this object.

Returns: Configuration of the class as dictionary dict
to_json()

Return the configuration as json string. Per default, this converts the dictionary returned by get_config to json.

Returns: Configuration of the class as json string. str
class pyabc.populationstrategy.ConstantPopulationSize(nr_particles: int, *, nr_samples_per_parameter: int = 1)

Constant size of the different populations

Parameters: nr_particles (int) – Number of particles per populations nr_samples_per_parameter (int) – Number of samples to draw for a proposed parameter
adapt_population_size(transitions, model_weights)

Select the population size for the next population.

Parameters: transitions (List of Transitions) – model_weights (array of model weights) – n – The new population size int
class pyabc.populationstrategy.AdaptivePopulationSize(start_nr_particles, mean_cv=0.05, *, max_population_size=inf, min_population_size=10, nr_samples_per_parameter=1, n_bootstrap=10)

Adapt the population size according to the mean coefficient of variation error criterion, as detailed in [1]. This strategy tries to respond to the shape of the current posterior approximation by selecting the population size such that the variation of the density estimates matches the target variation given via the mean_cv argument.

Parameters: start_nr_particles (int) – Number of particles in the first populations mean_cv (float, optional) – The error criterion. Defaults to 0.05. A smaller value leads generally to larger populations. The error criterion is the mean coefficient of variation of the estimated KDE. max_population_size (int, optional) – Max nr of allowed particles in a population. Defaults to infinity. min_population_size (int, optional) – Min number of particles allowed in a population. Defaults to 10 nr_samples_per_parameter (int, optional) – Defaults to 1. n_bootstrap (int, optional) – Number of bootstrapped populations to use to estimate the CV. Defaults to 10.
 [1] Klinger, Emmanuel, and Jan Hasenauer. “A Scheme for Adaptive Selection of Population Sizes in Approximate Bayesian Computation - Sequential Monte Carlo.” Computational Methods in Systems Biology, 128–44. Lecture Notes in Computer Science. Springer, Cham, 2017. https://doi.org/10.1007/978-3-319-67471-1_8.
adapt_population_size(transitions: List[pyabc.transition.base.Transition], model_weights: numpy.ndarray)

Select the population size for the next population.

Parameters: transitions (List of Transitions) – model_weights (array of model weights) – n – The new population size int
get_config()

Get the configuration of this object.

Returns: Configuration of the class as dictionary dict