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:

  1. daytime symptoms: Daytime symptoms more than twice per week?

  2. nocturnal symptoms: Any night waking due to asthma symptoms?

  3. inhaler use: Reliever medication needed more than twice per week?

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

\[\text{control_score} = \text{daytime_symptoms} + \text{nocturnal_symptoms} + \text{inhaler_use} + \text{limited_activities}\]

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:

\[\begin{split}\text{control_level} = \begin{cases} 1 & \quad \text{control_score} = 0 \\ 2 & \quad 0 ~ < \text{control_score} < 3 \\ 3 & \quad \text{control_score} \geq 3 \end{cases}\end{split}\]
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:
  • 1 = fully-controlled
  • 2 = partially-controlled
  • 3 = uncontrolled

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:

\[\small \text{logit}(P(y^{(i)} \leq k)) = \theta_k + \beta_{\text{age}} \cdot a^{(i)} + \beta_{\text{sex}} \cdot s^{(i)} + \beta_{\text{age}^2} \cdot {a^{(i)}}^2 + \beta_{\text{age,sex}} \cdot a^{(i)} \cdot s^{(i)} + \beta_{\text{age}^2\text{,sex}} \cdot {a^{(i)}}^2 \cdot s^{(i)} + \beta_0^{(i)}\]

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:

\[P(y^{(i)} = k) = P(y^{(i)} \leq k) - P(y^{(i)} \leq k-1)\]

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:

  1. The probability of being in a control level is equivalent to the proportion of time spent in that control level.

  2. Predictions generalise from the 3-month EBA measurement period to the simulation’s time interval (1 month or 1 year).

  3. Control level probabilities do not vary with calendar year.

  4. Control level probabilities do not depend on past control history.

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