Skip to content

02. Parameter Preparation

Nao Yamamoto edited this page Mar 4, 2026 · 3 revisions

Purpose

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.

This guide covers:

  • 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

1. Estimating p_death

Definition: Annual probability that a person with the condition will die from that condition under the baseline (“no-intervention”) context.

1.0 Conditions modeled with no direct mortality

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:

  • AnxietyDisorder
  • BipolarDisorder
  • ChronicPain
  • Hyperlipidemia
  • Hypertension
  • Obesity
  • TobaccoUse

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.

1.1 Chronic/default conditions (death / prevalence)

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

1.2 Acute / event-like conditions (CFR proxy: death / incidence)

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

2. Estimating dur_condition

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

3. Required Parameter Fields

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)

4. Initial Prevalence

  • MIGHTI initializes prevalence using age-sex-dependent functions.
  • Do not include init_prev in 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.

5. Demographic Input Files

Three core demographic files are required for each region in data/processed/.

5.1 Fertility Rates

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
...

5.2 Mortality Rates

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
...

5.3 Age Distribution

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.


6. Estimating Incidence via Calibration

  • MIGHTI does not require an incidence column.
  • 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 estimate p_acquire.

Then, update the disease module:

self.pars.p_acquire = 0.018  # Example best-fit value

Clone this wiki locally