Sequential bootstrap

q.label.sequential_bootstrap draws events in proportion to the marginal uniqueness they would contribute if selected next. Probabilities are recomputed after every draw.

Like an ordinary bootstrap, events may repeat. Pass random_state for reproducible bags.

import pandas as pd

import qrt as q

observations = pd.date_range("2026-01-01", periods=10, name="datetime")
end_times = pd.Series(
    observations[[5, 6, 7, 9]],
    index=observations[[0, 1, 4, 8]].rename("event_time"),
)
sample = q.label.sequential_bootstrap(
    observations,
    end_times,
    size=12,
    random_state=42,
)
pd.Series(sample, name="sampled_event").to_frame()
sampled_event
0 2026-01-09
1 2026-01-02
2 2026-01-09
3 2026-01-05
4 2026-01-01
5 2026-01-09
6 2026-01-05
7 2026-01-09
8 2026-01-01
9 2026-01-02
10 2026-01-02
11 2026-01-09
pd.Series(sample).value_counts().rename("draws").sort_index().to_frame()
draws
event_time
2026-01-01 2
2026-01-02 3
2026-01-05 2
2026-01-09 5
Back to top