IterableProfileNoisyDiscreteGrid
- class poisson_approval.IterableProfileNoisyDiscreteGrid(denominator, types, d_type_fixed_share=None, standardized=False, test=None, **kwargs)[source]
Iterate over noisy discrete profiles (
ProfileNoisyDiscrete) defined on a grid.- Parameters
denominator (int or iterable) – The grain(s) of the grid.
types (iterable) – These types will have a variable share. They can be noisy discrete types, e.g.
('abc', 0.9, 0.01), or discrete types, e.g.('abc', 0.9)(in which case the argument noise must be given in the additional parameters), or weak orders, e.g.'a~b>c'.d_type_fixed_share (dict, optional) – A dictionary. For each entry
type: fixed_share, this type will have at least this fixed share. The total must be lower or equal to 1.standardized (bool, optional) – If True, then only standardized profiles are given. Cf.
Profile.is_standardized(). You should probably use this option if the arguments types, d_type_fixed_share and test treat the candidates symmetrically.test (callable, optional) – A function
ProfileNoisyDiscrete -> bool. Only profiles meeting this test are given.kwargs – Additional parameters are passed to
ProfileNoisyDiscretewhen creating the profile.
Examples
Basic usage:
>>> for profile in IterableProfileNoisyDiscreteGrid(denominator=3, types=[('abc', 0.9, 0.01), 'a~b>c']): ... print(profile) <abc 0.9 ± 0.01: 1> (Condorcet winner: a) <abc 0.9 ± 0.01: 2/3, a~b>c: 1/3> (Condorcet winner: a) <abc 0.9 ± 0.01: 1/3, a~b>c: 2/3> (Condorcet winner: a) <a~b>c: 1> (Condorcet winner: a, b)
Or, equivalently:
>>> for profile in IterableProfileNoisyDiscreteGrid(denominator=3, types=[('abc', 0.9), 'a~b>c'], noise=0.01): ... print(profile) <abc 0.9 ± 0.01: 1> (Condorcet winner: a) <abc 0.9 ± 0.01: 2/3, a~b>c: 1/3> (Condorcet winner: a) <abc 0.9 ± 0.01: 1/3, a~b>c: 2/3> (Condorcet winner: a) <a~b>c: 1> (Condorcet winner: a, b)
For more examples, cf.
IterableSimplexGrid.