What makes a shipboard norovirus outbreak large? Beta-binomial models of 63 outbreaks reported to the CDC Vessel Sanitation Program, 2014–2019, fit in base R.
Each row is a norovirus outbreak reported to the CDC Vessel Sanitation Program (VSP) from 2014 to 2019: the people who fell ill, everyone on board, the itinerary and the dates. What predicts how large an outbreak gets, measured as the share of passengers and crew who fell ill (the attack rate)?
No voyage characteristic in these data reliably predicts outbreak size. Ship size, the obvious candidate, shows no association: each doubling of people on board multiplies the odds of illness by 1.03 (95% CI 0.89–1.19). The full model (size, duration, season and region) has the lowest AIC, but it predicts left-out voyages worse than the intercept-only model (leave-one-out log score -348.3 vs -342.3). Its apparent effects lean heavily on two extreme outbreaks. Season matters for how often outbreaks happen (December–April), not for how large they get.
Every voyage in these data had a reported outbreak, because VSP only lists voyages where at least 3% of passengers or crew reported illness. The models describe outbreak size, given that an outbreak was reported. They can’t estimate the probability that a voyage has an outbreak.
The data join six yearly VSP outbreak tables to a hand-built table of departure ports. Before modelling:
A binomial model treats each person on board as an independent coin flip. Its Pearson dispersion here is 30, meaning voyages vary about 30 times more than independence allows: people on one ship share food, water, cabins and crew. A beta-binomial model adds one parameter, ρ, the correlation in illness between two people on the same voyage. That corrects the standard errors, which a binomial fit understates by a factor of about √30.
| Model | Parameters | AIC | ΔAIC | LOOCV RMSE (pp) | LOOCV MAE (pp) | LOOCV log score | rho |
|---|---|---|---|---|---|---|---|
| Intercept only | 2 | 674 | 6.58 | 2.88 | 1.62 | -342 | 0.0105 |
| Size | 3 | 676 | 8.41 | 2.92 | 1.65 | -344 | 0.0105 |
| Size + duration | 4 | 672 | 5.03 | 2.95 | 1.71 | -345 | 0.00958 |
| Size + season | 6 | 678 | 11.0 | 2.91 | 1.71 | -344 | 0.00990 |
| Size + region | 8 | 678 | 10.8 | 2.96 | 1.77 | -347 | 0.00921 |
| Size + duration + season + region | 12 | 667 | 0 | 2.79 | 1.77 | -348 | 0.00663 |
AIC prefers the full model (ΔAIC 6.6 over intercept-only). But AIC measures in-sample fit with a fixed penalty per parameter; leave-one-out cross-validation scores each voyage with a model that never saw it. By that test the full model is the worst predictor by log score (-348.3), and intercept-only is the best (-342.3). Its slightly lower RMSE (2.79 vs 2.88 pp) comes from partly anticipating the two extreme outbreaks, while its MAE is worse. With 63 outbreaks and 12 parameters, the full model is fitting individual voyages.
| Term | Odds ratio | 95% CI low | 95% CI high | z | p value |
|---|---|---|---|---|---|
| (Intercept) | 0.0151 | 0.00257 | 0.0887 | -4.64 | 0.00000343 |
| Size (per doubling) | 1.07 | 0.922 | 1.24 | 0.887 | 0.375 |
| Duration (per week) | 1.21 | 1.05 | 1.39 | 2.65 | 0.00814 |
| Season: Spring | 0.989 | 0.774 | 1.26 | -0.0865 | 0.931 |
| Season: Summer | 0.596 | 0.299 | 1.19 | -1.46 | 0.143 |
| Season: Fall | 0.548 | 0.392 | 0.764 | -3.54 | 0.000402 |
| Region: US Northeast, Canada & Great Lakes | 1.37 | 1.00 | 1.88 | 1.97 | 0.0492 |
| Region: US West Coast | 1.15 | 0.860 | 1.54 | 0.938 | 0.348 |
| Region: Alaska & Pacific Northwest | 1.60 | 0.766 | 3.33 | 1.25 | 0.211 |
| Region: South & Central America | 0.925 | 0.642 | 1.33 | -0.415 | 0.678 |
| Region: Europe & Asia | 2.34 | 1.52 | 3.60 | 3.86 | 0.000114 |
| Term | All 63 voyages | Without 2 flagged itineraries | Without 2 largest outbreaks |
|---|---|---|---|
| Size (per doubling) | 1.07 (0.92–1.24) | 1.04 (0.89–1.22) | 1.04 (0.92–1.17) |
| Duration (per week) | 1.21 (1.05–1.39) | 1.21 (1.05–1.40) | 1.04 (0.91–1.19) |
| Season: Spring | 0.99 (0.77–1.26) | 1.00 (0.78–1.29) | 1.05 (0.86–1.28) |
| Season: Summer | 0.60 (0.30–1.19) | 0.64 (0.32–1.27) | 0.99 (0.54–1.83) |
| Season: Fall | 0.55 (0.39–0.76) | 0.58 (0.41–0.82) | 0.78 (0.59–1.02) |
| Region: US Northeast, Canada & Great Lakes | 1.37 (1.00–1.88) | 1.37 (1.00–1.89) | 1.06 (0.81–1.38) |
| Region: US West Coast | 1.15 (0.86–1.54) | 1.09 (0.80–1.47) | 1.17 (0.93–1.47) |
| Region: Alaska & Pacific Northwest | 1.60 (0.77–3.33) | 1.49 (0.72–3.07) | 0.91 (0.47–1.75) |
| Region: South & Central America | 0.93 (0.64–1.33) | 0.94 (0.64–1.38) | 0.97 (0.72–1.29) |
| Region: Europe & Asia | 2.34 (1.52–3.60) | 2.23 (1.45–3.44) | 1.47 (0.97–2.24) |
The Europe & Asia and voyage-length effects shrink sharply without the two largest outbreaks; Balmoral alone is the only Southampton departure and the longest voyage. Effects that depend on one or two voyages are not a basis for policy. The defensible conclusion is that attack rates cluster tightly around 4% regardless of ship size, region or season, with occasional extreme outbreaks that these variables do not anticipate.