Model

Model setup

This page fits a logistic regression for the symptom-free outcome after combining the daily survey and vaccination tables at the participant level.

  • The daily survey rows are collapsed to one row per participant using VSAFE_SYSTEM_ID.
  • symptom_free is created from the daily survey history and equals 1 only when the participant has no yes symptom responses in the available daily rows.
  • The participant-level daily table is joined to the vaccination table on VSAFE_SYSTEM_ID.
  • Rows with invalid age values or missing key fields are removed.
  • Fourth and Fifth dose records are excluded from the modeling sample because they are extremely sparse.

Reference categories in the model:

  • Age band: 0.5-04
  • Dose number: First
  • Current health state: Excellent

Equation

The fitted model uses the form

\[ \log\left(\frac{P(\mathrm{symptom\_free}=1)}{1 - P(\mathrm{symptom\_free}=1)}\right) = \beta_0 + \beta_{\mathrm{age}} + \beta_{\mathrm{dose}} + \beta_{\mathrm{health}}. \]

This means the model estimates how the log-odds of being symptom-free change with age band, dose number, and current health state.

Model performance

The model is only modestly better than a simple majority-class baseline (about 56.2% test accuracy vs 51.8% baseline), so it should be treated as a descriptive model rather than a strong predictor.

Table 1: Held-out test performance
metric value
0 Test accuracy 0.562
1 Baseline accuracy 0.518
2 Majority-class baseline Not symptom-free
3 Test-set symptom-free rate 0.482
4 Train-set symptom-free rate 0.482
5 Test sample size 9309
Table 2: Confusion matrix on the test set
Predicted symptom-free Predicted not symptom-free
Actual symptom-free 3408 1411
Actual not symptom-free 2669 1821

Age effects

The table below reports adjusted odds ratios for age bands from the full cleaned analysis set. The reference categories are age band 0.5-04, dose First, and current health state Excellent.

The age pattern is uneven rather than monotonic. Confidence intervals overlap for many bands, so the safest conclusion is that the data do not show strong evidence that one age band is clearly best.

Table 3: Adjusted age-band effects from the full model
age_band odds_ratio ci_low ci_high p.value predicted_symptom_free_pct
0 0.5-04 1.000 1.000 1.000 reference 52.5
1 05-11 0.677 0.404 1.134 0.1380 42.8
2 12-19 0.859 0.509 1.449 0.5695 48.7
3 20-29 0.574 0.389 0.845 0.0050 38.8
4 30-39 0.789 0.547 1.138 0.2043 46.6
5 40-49 0.914 0.636 1.313 0.6268 50.2
6 50-59 1.142 0.797 1.637 0.4693 55.8
7 60-69 1.227 0.858 1.754 0.2622 57.5
8 70-79 1.406 0.984 2.010 0.0616 60.8
9 80+ 1.858 1.283 2.691 0.0010 67.2

Interpretation

  • Odds ratios above 1 mean higher odds of being symptom-free than the 0.5-04 reference age band, after adjusting for dose number and current health state.
  • The predicted percentages are adjusted predictions at the reference dose and reference current health state.
  • The model is better than a majority-class baseline, but only by a small margin.
  • Because the age effects are mixed and not consistently significant, this project should not claim that one exact age is best.