Some diseases may exhibit multiple epidemic waves within a season rather than a single peak. This method extends the seasonal onset and burden level framework to identify multiple waves.
Burden levels are used to determine when a wave has ended: after a wave onset, activity must decrease below a chosen burden breakpoint for a specified number of consecutive time steps. Once a wave has ended, a new wave may start if the seasonal onset criteria are met again.
The combined_seasonal_output() function implements this
functionality via:
"very low", "low", "medium", or
"high".burden_level_decrease
required to declare a wave end and start searching for the next wave
onset.As an example we first generate cases in a tsd object,
with the generate_seasonal_data() function. Then we rescale
time from monthly to weekly observations to get multiple waves.
set.seed(222)
tsd_data_monthly <- generate_seasonal_data(
years = 14,
phase = 3,
start_date = as.Date("2020-05-18"),
noise_overdispersion = 5,
time_interval = "months"
)
tsd_data <- to_time_series(
cases = tsd_data_monthly$cases,
time = seq.Date(
from = as.Date("2020-05-18"),
by = "week",
length.out = length(tsd_data_monthly$cases)
)
) |>
dplyr::filter(time < as.Date("2023-05-22"))
plot(tsd_data)Then we estimate the disease-specific threshold.
Multiple waves are estimated such that after a wave onset,
observations have to decrease below the low intensity level
for two time steps to end the wave. A new wave can then start if
observations fulfill the seasonal onset criteria.
From the plot we can observe that season 2023/2024 has five starting
waves and four ending waves.