Create a class of milestone. An milestone means the time point to take an action, e.g., carry out (futility, interim, final) analysis for add/remove arms, or stop a trial early. It can also be any more general time point where trial data is used in decision making or adaptation. For example, one can define a milestone for changing randomization scheme, sample size re-assessment, trial duration extension etc.
Methods
Method new()
initialize milestone
Usage
Milestones$new(name, type = name, trigger_condition, action = doNothing, ...)
Arguments
name
character. Name of milestone.
type
character vector. Milestone type(s) (futility, interim, final), a milestone can be of multiple types. This is for information purpose so can be any string.
trigger_condition
function to check if this milestone should trigger. See vignette
Condition System for Triggering Milestones in a Trial
.action
function to execute when the milestone triggers.
...
arguments for
trigger_condition
.
Method set_dry_run()
set if dry run should be carried out for the milestone. For more details,
refer to Controller::run
.
Method reset()
reset an milestone so that it can be triggered again. Usually, this is called before the controller of a trial can run additional replicates of simulation.
Method trigger_milestone()
trigger an milestone (always TRUE) and execute action accordingly. It calls Trial$get_data_lock_time() to lock data based on conditions implemented in Milestones$trigger_condition. If time that meets the condition cannot be found, Trial$get_data_lock_time() will throw an error and stop the program. This means that user needs to adjust their trigger_condition (e.g., target number of events (target_n_events) is impossible to reach).