Skip to content

simBinomialSeasonalExact() updates #264

@keaven

Description

@keaven

The following items should be addressed in simBinomialSeasonalExact()

  1. Trial continuation after bound crossing.
    The simulation should stop a trial once an efficacy or futility bound is
    crossed at any analysis. Currently, mean looks used can exceed k,
    suggesting some simulated trials continue past a crossing. For k = 2,
    mean looks should be ≤ 2. This affects the reported mean looks and mean
    total events/enrolled. Note that Type I error (efficacy crossing
    probability) is reported under the non-binding futility convention:
    futility crossings do not prevent later efficacy crossings from being
    counted, but the stopping time should still reflect stopping at either
    bound.

  2. Bounds adaptation to observed events.
    Total events at each seasonal analysis are random because all enrolled
    patients complete their season's follow-up (event counts are binomial
    given enrollment). The simulation should call toBinomialExact() within
    each simulated trial to update bounds based on the actual observed total
    events, rather than using fixed planned event counts. This also affects
    reported enrollment totals, which currently can be much larger than the
    design's planned enrollment for the fixed design. For the fixed design,
    per-season enrollment should match the design's planned enrollment.

  3. toInteger() failure with ratio = 1 and rare events.
    toInteger() calls gsnSurv() with minfup = NULL, which can fail
    when the event rate is very low and equal allocation is used because
    the rounded-up integer event count is not achievable under the
    maximum-follow-up enrollment model. The proposed fix: toInteger()
    should manage to an integer sample size (rounding enrollment to achieve
    the desired randomization ratio) but round down for event counts.
    When the spending fraction at a look exceeds 1 because the integer
    event count is below the continuous design target, the spending
    function evaluates to the full cumulative alpha, which is the correct
    behavior. A warning should be issued when events are not achievable
    with the given enrollment model so the user is aware. As a current
    workaround, use ratio = 3 (or another unequal ratio) to avoid the
    error.

Notes and extensions

  • The adaptive pathway shown here is blinded because it uses total event counts
    only; treatment-group differences are not used to update enrollment.
  • Spending fractions are kept fixed at 1/k, 2/k, ..., 1.
  • For modified intention-to-treat analyses, additional exclusion/dropout
    mechanisms can be layered into the simulation by reducing at-risk counts
    before each seasonal event/dropout draw.
  • Simple superiority and non-inferiority variants can be studied by changing
    hr0/hr1 and rebuilding the same workflow.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions