diff --git a/R/expected_event.R b/R/expected_event.R index 223be66d..36b959f9 100644 --- a/R/expected_event.R +++ b/R/expected_event.R @@ -107,6 +107,22 @@ #' fail_rate = define_fail_rate(duration = 100, fail_rate = log(2) / 6, dropout_rate = .01), #' total_duration = 22, simple = FALSE #' ) +#' +#' # Single time period example, multiple strata +#' enroll_rate <- define_enroll_rate(stratum = rep(c("Biomarker-positive", "Biomarker-negative"), each = 4), +#' duration = c(2, 2, 2, 6, 2, 2, 2, 6), +#' rate = c(1:4, 1:4)) +#' failure_rate <- define_fail_rate(stratum = rep(c("Biomarker-positive", "Biomarker-negative"), each = 2), +#' duration = c(3, 100, 3, 100), +#' fail_rate = log(2) / c(8, 12, 8, 10), +#' dropout_rate = 0.001) +#' # Number of expected events by stratum +#' sapply(c("Biomarker-positive", "Biomarker-negative"), +#' function(ss){ +#' expected_event(enroll_rate = enroll_rate[enroll_rate$stratum == ss, ], +#' fail_rate = failure_rate[failure_rate$stratum == ss, ], +#' total_duration = 36, +#' simple = TRUE)}) expected_event <- function( enroll_rate = define_enroll_rate( duration = c(2, 2, 10), @@ -120,6 +136,9 @@ expected_event <- function( total_duration = 25, simple = TRUE) { + # Report error where there is >=2 strata + if(length(unique(fail_rate$stratum)) >= 2 || length(unique(enroll_rate$stratum)) >= 2) {stop("Please calculate the expected event by stratum, see examples. ")} + # Divide the time line into sub-intervals ---- ## by piecewise enrollment rates diff --git a/man/expected_event.Rd b/man/expected_event.Rd index 5e6eaef3..a729d69a 100644 --- a/man/expected_event.Rd +++ b/man/expected_event.Rd @@ -112,4 +112,20 @@ expected_event( fail_rate = define_fail_rate(duration = 100, fail_rate = log(2) / 6, dropout_rate = .01), total_duration = 22, simple = FALSE ) + +# Single time period example, multiple strata +enroll_rate <- define_enroll_rate(stratum = rep(c("Biomarker-positive", "Biomarker-negative"), each = 4), + duration = c(2, 2, 2, 6, 2, 2, 2, 6), + rate = c(1:4, 1:4)) +failure_rate <- define_fail_rate(stratum = rep(c("Biomarker-positive", "Biomarker-negative"), each = 2), + duration = c(3, 100, 3, 100), + fail_rate = log(2) / c(8, 12, 8, 10), + dropout_rate = 0.001) +# Number of expected events by stratum +sapply(c("Biomarker-positive", "Biomarker-negative"), + function(ss){ + expected_event(enroll_rate = enroll_rate[enroll_rate$stratum == ss, ], + fail_rate = failure_rate[failure_rate$stratum == ss, ], + total_duration = 36, + simple = TRUE)}) }