Skip to contents

Obtains the stratified restricted mean survival times and difference in restricted mean survival times at given calendar times.

Usage

rmstat(
  time = NA_real_,
  milestone = NA_real_,
  allocationRatioPlanned = 1,
  accrualTime = 0L,
  accrualIntensity = NA_real_,
  piecewiseSurvivalTime = 0L,
  stratumFraction = 1L,
  lambda1 = NA_real_,
  lambda2 = NA_real_,
  gamma1 = 0L,
  gamma2 = 0L,
  accrualDuration = NA_real_,
  followupTime = NA_real_,
  fixedFollowup = FALSE
)

Arguments

time

A vector of calendar times for data cut.

milestone

The milestone time at which to calculate the restricted mean survival time.

allocationRatioPlanned

Allocation ratio for the active treatment versus control. Defaults to 1 for equal randomization.

accrualTime

A vector that specifies the starting time of piecewise Poisson enrollment time intervals. Must start with 0, e.g., c(0, 3) breaks the time axis into 2 accrual intervals: \([0, 3)\) and \([3, \infty)\).

accrualIntensity

A vector of accrual intensities. One for each accrual time interval.

piecewiseSurvivalTime

A vector that specifies the starting time of piecewise exponential survival time intervals. Must start with 0, e.g., c(0, 6) breaks the time axis into 2 event intervals: \([0, 6)\) and \([6, \infty)\). Defaults to 0 for exponential distribution.

stratumFraction

A vector of stratum fractions that sum to 1. Defaults to 1 for no stratification.

lambda1

A vector of hazard rates for the event in each analysis time interval by stratum for the active treatment group.

lambda2

A vector of hazard rates for the event in each analysis time interval by stratum for the control group.

gamma1

The hazard rate for exponential dropout, a vector of hazard rates for piecewise exponential dropout applicable for all strata, or a vector of hazard rates for dropout in each analysis time interval by stratum for the active treatment group.

gamma2

The hazard rate for exponential dropout, a vector of hazard rates for piecewise exponential dropout applicable for all strata, or a vector of hazard rates for dropout in each analysis time interval by stratum for the control group.

accrualDuration

Duration of the enrollment period.

followupTime

Follow-up time for the last enrolled subject.

fixedFollowup

Whether a fixed follow-up design is used. Defaults to FALSE for variable follow-up.

Value

A data frame containing the following variables:

  • time: The calendar time since trial start.

  • subjects: The number of enrolled subjects.

  • nevents: The total number of events.

  • nevents1: The number of events in the active treatment group.

  • nevents2: The number of events in the control group.

  • ndropouts: The total number of dropouts.

  • ndropouts1: The number of dropouts in the active treatment group.

  • ndropouts2: The number of dropouts in the control group.

  • milestone: The milestone time relative to randomization.

  • nmilestone: The total number of subjects reaching milestone.

  • nmilestone1: The number of subjects reaching milestone in the active treatment group.

  • nmiletone2: The number of subjects reaching milestone in the control group.

  • rmst1: The restricted mean survival time for the treatment group.

  • rmst2: The restricted mean survival time for the control group.

  • rmstDiff: The difference in restricted mean survival times, i.e., rmst1 - rmst2.

  • vrmst1: The variance for rmst1.

  • vrmst2: The variance for rmst2.

  • vrmstDiff: The variance for rmstDiff.

  • information: The information for rmstDiff, equal to 1/vrmstDiff.

  • rmstDiffZ: The Z-statistic value, i.e., rmstDiff/sqrt(vrmstDiff).

Author

Kaifeng Lu, kaifenglu@gmail.com

Examples

# Piecewise accrual, piecewise exponential survivals, and 5% dropout by
# the end of 1 year.

rmstat(time = c(22, 40),
       milestone = 18,
       allocationRatioPlanned = 1,
       accrualTime = seq(0, 8),
       accrualIntensity = 26/9*seq(1, 9),
       piecewiseSurvivalTime = c(0, 6),
       stratumFraction = c(0.2, 0.8),
       lambda1 = c(0.0533, 0.0309, 1.5*0.0533, 1.5*0.0309),
       lambda2 = c(0.0533, 0.0533, 1.5*0.0533, 1.5*0.0533),
       gamma1 = -log(1-0.05)/12,
       gamma2 = -log(1-0.05)/12,
       accrualDuration = 22,
       followupTime = 18, fixedFollowup = FALSE)
#>   time subjects  nevents  nevents1 nevents2 ndropouts ndropouts1 ndropouts2
#> 1   22      468 195.2491  91.89764 103.3514  12.16925   6.202213   5.967036
#> 2   40      468 356.3965 164.83437 191.5622  24.15559  13.010003  11.145587
#>   milestone nmilestone nmilestone1 nmilestone2    rmst1    rmst2  rmstDiff
#> 1        18   8.700526    5.138325    3.562201 10.85387 9.948097 0.9057767
#> 2        18 140.948521   83.240865   57.707656 10.85387 9.948097 0.9057767
#>      vrmst1    vrmst2 vrmstDiff information rmstDiffZ
#> 1 0.2848075 0.2641123 0.5489198    1.821760  1.222550
#> 2 0.2029210 0.1785637 0.3814847    2.621337  1.466502