Asthma Control Model¶
Data¶
Economic Burden of Asthma (EBA) Study¶
EBA was a prospective observational study of 618 participants (aged 1–85; 74% adults)
with self-reported, physician-diagnosed asthma from BC, with measurements taken every 3 months
for a year. Only 6% of the 613 patients were lost to follow-up, and asthma control level
changed during follow-up for 79% of patients.
We followed the 2020 GINA guidelines to define asthma control level by using the sum of the four indicator variables (0 if no and 1 if yes) in the last 4 weeks before each measurement:
daytime symptoms: Daytime symptoms more than twice per week?
nocturnal symptoms: Any night waking due to asthma symptoms?
inhaler use: Reliever medication needed more than twice per week?
limited activities: Any activity limitation due to asthma?
Responses of do not know were treated as no. Five patients were excluded due to missing or implausible asthma diagnosis dates (two with diagnosis dates predating birth, three with no diagnosis date), for a final count of 613 patients.
| Column | Type | Description |
|---|---|---|
studyId |
int
|
8-digit patient ID |
visit |
int
|
The visit number. Visits were scheduled every 3 months for a year. A value in
[1, 5].
|
daytimeSymptoms |
int
|
1 = yes, 2 = no, 3 = unknown |
nocturnalSymptoms |
int
|
1 = yes, 2 = no, 3 = unknown |
inhalerUse |
int
|
1 = yes, 2 = no, 3 = unknown |
limitedActivities |
int
|
1 = yes, 2 = no, 3 = unknown |
exacerbations |
int
|
Has there been an asthma exacerbation in the last 3 months? 1 = yes, 2 = no, 3 = unknown |
sex |
int
|
0 = female, 1 = male |
age |
float
|
Age in years |
ageAtAsthmaDx |
float
|
Age at asthma diagnosis |
time_since_Dx |
float
|
Time since asthma diagnosis in years |
time_since_Dx_cat |
int
|
1 = 0 - 4.93 years 2 = 5.00 - 19.95 years 3 = 20.06 - 74.20 years |
Processed Data¶
Columns were converted to snake case and studyId was renamed to patient_id. The four
GINA indicator variables were binarized (1 = True, 0 = False).
We also needed to compute the asthma control level from the four indicator variables. We first
computed the control_score, defined as:
which has a minimum value of 0 (maximum control) and a maximum value of 4 (minimum control).
Then we defined the asthma control level as follows:
| Column | Type | Description |
|---|---|---|
patient_id |
int
|
8-digit patient ID |
visit |
int
|
The visit number. Visits were scheduled every 3 months for a year. A value in
[1, 5].
|
daytime_symptoms |
int
|
1 = True,
0 = False
|
nocturnal_symptoms |
int
|
1 = True,
0 = False
|
inhaler_use |
int
|
1 = True,
0 = False
|
limited_activities |
int
|
1 = True,
0 = False
|
exacerbations |
int
|
1 = True,
0 = False
|
sex |
int
|
0 = female, 1 = male |
age |
float
|
Age in years |
age_at_asthma_dx |
float
|
Age at asthma diagnosis |
time_since_dx |
float
|
Time since asthma diagnosis in years |
time_since_dx_cat |
int
|
1 = 0 - 4.93 years 2 = 5.00 - 19.95 years 3 = 20.06 - 74.20 years |
control_score |
int
|
0 = maximum control, 4 = minimum control |
control_level |
int
|
Asthma control level:
|
Model: Ordinal Regression with Random Effects¶
We use an ordinal regression model with a patient-specific random effect to predict
asthma control level from age and sex. See Example 4: Ordinal Regression with Logit Link for background
on ordinal regression and random effects.
The model is:
where:
Coefficient |
Indices |
Term |
Description |
|---|---|---|---|
\(\theta_k\) |
\(k \in \{1, 2\}\) |
level-specific threshold (2 thresholds for 3 control levels) |
|
\(\beta_{\text{age}}\) |
\(a^{(i)}\) |
age main effect |
|
\(\beta_{\text{sex}}\) |
\(s^{(i)}\) |
sex main effect |
|
\(\beta_{\text{age}^2}\) |
\({a^{(i)}}^2\) |
age quadratic term |
|
\(\beta_{\text{age,sex}}\) |
\(a^{(i)} \cdot s^{(i)}\) |
\(\text{age} \times \text{sex}\) interaction |
|
\(\beta_{\text{age}^2\text{,sex}}\) |
\({a^{(i)}}^2 \cdot s^{(i)}\) |
\(\text{age}^2 \times \text{sex}\) interaction |
|
\(\beta_0^{(i)}\) |
patient-specific random effect; \(\beta_0^{(i)} \sim \mathcal{N}(0, \sigma^2)\) |
and \(y^{(i)}\) is the observed control level, \(k \in \{1, 2, 3\}\) is the control level index, \(a^{(i)}\) is the age, and \(s^{(i)}\) is the sex of patient \(i\).
The probability of being in a specific control level is:
Fitting the Model with EBA Data¶
The model was fit on 3-month measurement intervals. We make the following assumptions to apply its predictions to the simulation:
The probability of being in a control level is equivalent to the proportion of time spent in that control level.
Predictions generalise from the 3-month EBA measurement period to the simulation’s time interval (1 month or 1 year).
Control level probabilities do not vary with calendar year.
Control level probabilities do not depend on past control history.
Control level probabilities do not depend on past exacerbation history.
For each agent with asthma, an individual-specific intercept is sampled from the estimated random-effects distribution and held fixed for their simulated lifetime. At each time interval, this intercept is used with the fitted model to generate the proportion of time spent in each control level.
Predictions¶
Once the ordinal regression model has been fit on the EBA dataset, the coefficients are
saved to the leap/processed_data/config.json file. During the simulation, these coefficients
are used to determine the probability of being in each of the control levels for each agent
labelled as having asthma.