Bases: BaseDistribution
This class represents a bimodal distribution, a type of statistical distribution with two different modes (peaks).
A bimodal distribution is defined by two parameters: the proportion of the second bin, user defined bin, and the
constant value of the second bin. The 1-proportion will be the first bin and constant value in the first bin is 1.
This distribution is not supported in EMOD interventions.
Parameters:
| Name |
Type |
Description |
Default |
proportion
|
float
|
- The proportion of the second bin.
- This value should be between 0 and 1.
|
required
|
constant
|
float
|
- The constant value of the second bin.
- The value should not be negative.
|
required
|
Examples:
| >>> # Create a BimodalDistribution object.
>>> # In the follow example, there will be 20% of the second bin(5) and 80% of the first bin(1).
>>> bd = BimodalDistribution(0.2, 5)
>>> # The proportion and constant attributes can be accessed and updated.
>>> bd.proportion
0.2
>>> bd.constant
5
>>> bd.proportion = 0.6
>>> bd.proportion
0.6
|
Source code in emod_api/utils/distributions/bimodal_distribution.py
| class BimodalDistribution(BaseDistribution):
"""
This class represents a bimodal distribution, a type of statistical distribution with two different modes (peaks).
A bimodal distribution is defined by two parameters: the proportion of the second bin, user defined bin, and the
constant value of the second bin. The 1-proportion will be the first bin and constant value in the first bin is 1.
This distribution is not supported in EMOD interventions.
Args:
proportion (float):
- The proportion of the second bin.
- This value should be between 0 and 1.
constant (float):
- The constant value of the second bin.
- The value should not be negative.
Examples:
>>> # Create a BimodalDistribution object.
>>> # In the follow example, there will be 20% of the second bin(5) and 80% of the first bin(1).
>>> bd = BimodalDistribution(0.2, 5)
>>> # The proportion and constant attributes can be accessed and updated.
>>> bd.proportion
0.2
>>> bd.constant
5
>>> bd.proportion = 0.6
>>> bd.proportion
0.6
"""
DEMOGRAPHIC_DISTRIBUTION_FLAG = DemographicDistributionFlag.BIMODAL.value
def __init__(self, proportion: float, constant: float):
super().__init__()
if proportion < 0 or proportion > 1:
raise ValueError("The 'proportion' argument should be between 0 and 1.")
if constant < 0:
raise ValueError("The 'constant' argument should not be negative.")
self.proportion = proportion
self.constant = constant
def set_intervention_distribution(self, intervention_object: s2c.ReadOnlyDict, prefix: str):
"""
This function is not supported in the intervention object. Raise NotImplementedError if called.
"""
raise NotImplementedError("BimodalDistribution does not support intervention distribution. Please use "
"other distributions.")
def get_demographic_distribution_parameters(self) -> dict:
"""
Yield the flag and relevant values necessary for setting a demographics bimodal distribution
Returns:
a dict of the form: {'flag': X, 'value1': Y, 'value2': Z}
"""
return {"flag": self.DEMOGRAPHIC_DISTRIBUTION_FLAG,
"value1": self.proportion,
"value2": self.constant}
|
get_demographic_distribution_parameters()
Yield the flag and relevant values necessary for setting a demographics bimodal distribution
Returns:
| Type |
Description |
dict
|
a dict of the form: {'flag': X, 'value1': Y, 'value2': Z}
|
Source code in emod_api/utils/distributions/bimodal_distribution.py
| def get_demographic_distribution_parameters(self) -> dict:
"""
Yield the flag and relevant values necessary for setting a demographics bimodal distribution
Returns:
a dict of the form: {'flag': X, 'value1': Y, 'value2': Z}
"""
return {"flag": self.DEMOGRAPHIC_DISTRIBUTION_FLAG,
"value1": self.proportion,
"value2": self.constant}
|
set_intervention_distribution(intervention_object, prefix)
This function is not supported in the intervention object. Raise NotImplementedError if called.
Source code in emod_api/utils/distributions/bimodal_distribution.py
| def set_intervention_distribution(self, intervention_object: s2c.ReadOnlyDict, prefix: str):
"""
This function is not supported in the intervention object. Raise NotImplementedError if called.
"""
raise NotImplementedError("BimodalDistribution does not support intervention distribution. Please use "
"other distributions.")
|