-
Notifications
You must be signed in to change notification settings - Fork 0
02. Parameter Preparation
This guide describes how to prepare disease-specific parameters and demographic input files for use with the MIGHTI simulation framework. These inputs are required to simulate population health dynamics, disease interactions, and intervention outcomes.
- Estimating
p_death: annual conditional probability of death - Calculating
dur_condition: average disease duration in years - Defining required parameter fields for each disease
- Preparing demographic files used in the simulation
Definition: Annual probability that a person with the condition will die from that condition under the baseline (“no-intervention”) context.
Some modeled conditions are treated as non-fatal states in MIGHTI (they do not directly cause deaths in the simulation; mortality effects are handled via other conditions or background mortality). For these conditions, we explicitly set:
p_death = 0
Current list:
AnxietyDisorderBipolarDisorderChronicPainHyperlipidemiaHypertensionObesityTobaccoUse
Important: leaving p_death blank/NA is not equivalent to zero in the current implementation; missing values fall back to a nonzero default during parameter loading.
When both deaths and prevalence are available as rates per 100,000 (GBD “Rate” metric), convert population rates to a conditional probability using:
p_death ≈ deaths_per_100k / prevalence_per_100k
This is equivalent to (p_\text{death} = \frac{\text{deaths}}{\text{cases}}) because the population term cancels.
Example (rate/rate):
- Death rate: 1.1049 per 100,000
- Prevalence rate: 1468.8847 per 100,000
- ➜
p_death ≈ 1.1049 / 1468.8847 = 0.000752
For acute or event-like conditions where point prevalence can be small/unstable relative to annual flows, MIGHTI uses a case-fatality–style proxy:
p_death ≈ deaths_per_100k / incidence_per_100k
Definition: Average number of years an individual lives with the disease.
Formula:
dur_condition = prevalence_per_100k / incidence_per_100k
Example:
- Prevalence rate: 200.6682 per 100,000
- Incidence rate: 35.5733 per 100,000
- ➜
dur_condition ≈ 200.6682 / 35.5733 = 5.64 years
These must be included in the disease parameter CSV (e.g., eswatini_parameters.csv):
| Field | Description |
|---|---|
p_death |
Conditional probability of death without intervention |
dur_condition |
Mean duration of condition in years |
rel_sus |
Relative susceptibility when co-occurring with HIV |
remission_rate |
Annual remission probability |
max_disease_duration |
Upper limit on disease duration (for remitting diseases) |
affected_sex |
"male", "female", or "both"
|
disease_type |
Used to determine whether p_death uses death/prevalence (default) or CFR (death/incidence) |
- MIGHTI initializes prevalence using age-sex-dependent functions.
- Do not include
init_previn the parameter CSV. - If no such function is available, hard-code a fixed value in the disease module using
ss.bernoulli()or other Starsim distributions.
Three core demographic files are required for each region in data/processed/.
Used by the Pregnancy module: {region}_asfr.csv.
Columns:
| Column | Description |
|---|---|
Time |
Calendar year |
AgeGrp |
Age in years (15–49) |
ASFR |
Age-specific fertility rate (per 1000) |
Example:
Time,AgeGrp,ASFR
1990,15,59.629
1990,16,103.224
...Used to create life tables and simulate background mortality: {region}_mortality_rates.csv.
Columns:
| Column | Description |
|---|---|
AgeGrpStart |
Lower bound of age group |
Sex |
"Male" or "Female" |
Time |
Calendar year |
mx |
Annual mortality rate for that group |
Example:
AgeGrpStart,Sex,Time,mx
0,Female,2007,0.0571
0,Male,2007,0.0697
1,Female,2007,0.0095
...Used to initialize population structure in the start year {region}_age_distribution_{year}.csv
Columns:
| Column | Description |
|---|---|
age |
Exact age in years (e.g., 0–100) |
value |
Proportion of the total population at that age |
Example:
age,value
0,0.0329
1,0.0312
2,0.0303
...Note: Values should sum to 1. The filename must include the starting year.
- MIGHTI does not require an
incidencecolumn. - Instead, the acquisition probability (
p_acquire) is inferred by calibrating the model to match observed prevalence data. - Use a calibration script (e.g.,
calibration_diseases.py) to estimatep_acquire.
Then, update the disease module:
self.pars.p_acquire = 0.018 # Example best-fit value