When integerizing a survival group sequential design, toInteger can increase enrollment much more than expected for a very small final-event rounding change.
Observed in one run:
Final expected events: 123.83728 to 124.
Total enrollment: 39000 to 41160.
Expected behavior:
Keep the calendar design fixed (enrollment windows, follow-up structure, timing vector).
Inflate enrollment rate minimally to reach the integer final event target.
For this example (ratio = 1), a near-proportional total is about 39052:
ceiling(39000 * 124 / 123.83728 / (ratio + 1)) * (ratio + 1)
Proposed algorithm:
Set final integer event target to ceiling(final expected events).
Scale enrollment rate (gamma) to hit that target while preserving calendar design.
Compute interim integer events from timing and final target, then enforce monotone increasing counts.
Recompute bounds and power from those integer event counts.
Only if infeasible, fall back to a secondary strategy with a clear warning.
When integerizing a survival group sequential design, toInteger can increase enrollment much more than expected for a very small final-event rounding change.
Observed in one run:
Final expected events: 123.83728 to 124.
Total enrollment: 39000 to 41160.
Expected behavior:
Keep the calendar design fixed (enrollment windows, follow-up structure, timing vector).
Inflate enrollment rate minimally to reach the integer final event target.
For this example (ratio = 1), a near-proportional total is about 39052:
ceiling(39000 * 124 / 123.83728 / (ratio + 1)) * (ratio + 1)
Proposed algorithm:
Set final integer event target to ceiling(final expected events).
Scale enrollment rate (gamma) to hit that target while preserving calendar design.
Compute interim integer events from timing and final target, then enforce monotone increasing counts.
Recompute bounds and power from those integer event counts.
Only if infeasible, fall back to a secondary strategy with a clear warning.