Nothing
####################################################################################
###
### Author: Myeongjong Kang (myeongjong.kang@merck.com)
###
### Overview: Testing gsSurvCalendar function
###
### Contents: Testing functions and unit testings
###
####################################################################################
#-----------------------------------------------------------------------------------
### Testing functions
#-----------------------------------------------------------------------------------
#' @title Comparing names of outputs of \code{gsSurv()} and \code{gsSurvCalendar()}
#'
#' @param dsgn1 Output of \code{gsSurv()}
#' @param dsgn2 Output of \code{gsSurvCalendar()}
comparison_names <- function(dsgn1, dsgn2)
{
# Motivation: The list of gsSurvCalendar()'s outputs is supposed to include every element of the list of the gsSurv()'s outputs.
testthat::expect_contains(names(dsgn2), names(dsgn1))
}
#' @title Comparing inputs of \code{gsSurv()} and \code{gsSurvCalendar()}
#'
#' @param dsgn1 Output of \code{gsSurv()}
#' @param dsgn2 Output of \code{gsSurvCalendar()}
#' @param tolerance A numerical tolerance used when comparing numerical values at \code{1e-6} by default
comparison_inputs <- function(dsgn1, dsgn2, tolerance = 1e-6)
{
# Motivation: For fair comparison, inputs of gsSurvCalendar() are assumed to be equivalent to corresponding inputs of gsSurv().
testthat::expect_identical(dsgn1$k, dsgn2$k)
# Motivation: The following comparisons can be useful for future unit testing development,
# since default values of the inputs are different for gsSurv() and gsSurvCalendar().
testthat::expect_equal(dsgn1$minfup, dsgn2$minfup, tolerance = tolerance)
testthat::expect_equal(dsgn1$tol, dsgn2$tol, tolerance = tolerance)
}
#' @title Comparing names of outputs of \code{gsSurv()} and \code{gsSurvCalendar()}
#'
#' @param dsgn1 Output of \code{gsSurv()}
#' @param dsgn2 Output of \code{gsSurvCalendar()}
#' @param tolerance A numerical tolerance used when comparing numerical values at \code{1e-6} by default
comparison_outputs <- function(dsgn1, dsgn2, tolerance = 1e-6)
{
# Motivation: For direct comparison, outputs of gsSurvCalendar() are compared to corresponding outputs of gsSurv().
# The list is inspired by gsBoundSummary().
testthat::expect_equal(dsgn1$delta, dsgn2$delta, tolerance = tolerance)
testthat::expect_equal(dsgn1$delta0, dsgn2$delta0, tolerance = tolerance)
testthat::expect_equal(dsgn1$delta1, dsgn2$delta1, tolerance = tolerance)
testthat::expect_equal(dsgn1$theta, dsgn2$theta, tolerance = tolerance)
testthat::expect_equal(dsgn1$ratio, dsgn2$ratio, tolerance = tolerance)
testthat::expect_equal(dsgn1$lower$bound, dsgn2$lower$bound, tolerance = tolerance)
testthat::expect_equal(dsgn1$upper$bound, dsgn2$upper$bound, tolerance = tolerance)
testthat::expect_equal(dsgn1$n.fix, dsgn2$n.fix, tolerance = tolerance)
testthat::expect_equal(dsgn1$n.I, dsgn2$n.I, tolerance = tolerance)
testthat::expect_equal(dsgn1$nFixSurv, dsgn2$nFixSurv, tolerance = tolerance)
testthat::expect_equal(dsgn1$eNE, dsgn2$eNE, tolerance = tolerance)
testthat::expect_equal(dsgn1$eNC, dsgn2$eNC, tolerance = tolerance)
testthat::expect_equal(dsgn1$T, dsgn2$T, tolerance = tolerance)
}
#-----------------------------------------------------------------------------------
### Unit testings
#-----------------------------------------------------------------------------------
### Check if gsSurvCalendar can mimic gsSurv with different test types
testthat::test_that(
desc = "From information timing to calendar timing (test.type = 1 and default values for the other arguments)",
code = {
dsgn01 <- gsSurv(k = 3,
test.type = 1, alpha = 0.025, sided = 1, beta = 0.1, astar = 0, timing = 1,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
r = 18, lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, T = 18, minfup = 6, ratio = 1,
tol = .Machine$double.eps^0.25, usTime = NULL, lsTime = NULL)
dsgn02 <- gsSurvCalendar(spending = "information", calendarTime = dsgn01$T, minfup = 6, tol = .Machine$double.eps^0.25, # These arguments' values are different from their default values.
test.type = 1, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
r = 18, lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, ratio = 1)
# dsgn02 is supposed to be the same as dsgn01.
comparison_names(dsgn01, dsgn02)
comparison_inputs(dsgn01, dsgn02)
comparison_outputs(dsgn01, dsgn02)
}
)
testthat::test_that(
desc = "From information timing to calendar timing (test.type = 2 and default values for the other arguments)",
code = {
dsgn01 <- gsSurv(k = 3,
test.type = 2, alpha = 0.025, sided = 1, beta = 0.1, astar = 0, timing = 1,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
r = 18, lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, T = 18, minfup = 6, ratio = 1,
tol = .Machine$double.eps^0.25, usTime = NULL, lsTime = NULL)
dsgn02 <- gsSurvCalendar(spending = "information", calendarTime = dsgn01$T, minfup = 6, tol = .Machine$double.eps^0.25, # These arguments' values are different from their default values.
test.type = 2, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
r = 18, lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, ratio = 1)
# dsgn02 is supposed to be the same as dsgn01.
comparison_names(dsgn01, dsgn02)
comparison_inputs(dsgn01, dsgn02)
comparison_outputs(dsgn01, dsgn02)
}
)
testthat::test_that(
desc = "From information timing to calendar timing (test.type = 3 and default values for the other arguments)",
code = {
dsgn01 <- gsSurv(k = 3,
test.type = 3, alpha = 0.025, sided = 1, beta = 0.1, astar = 0, timing = 1,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
r = 18, lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, T = 18, minfup = 6, ratio = 1,
tol = .Machine$double.eps^0.25, usTime = NULL, lsTime = NULL)
dsgn02 <- gsSurvCalendar(spending = "information", calendarTime = dsgn01$T, minfup = 6, tol = .Machine$double.eps^0.25, # These arguments' values are different from their default values.
test.type = 3, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
r = 18, lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, ratio = 1)
# dsgn02 is supposed to be the same as dsgn01.
comparison_names(dsgn01, dsgn02)
comparison_inputs(dsgn01, dsgn02)
comparison_outputs(dsgn01, dsgn02)
}
)
testthat::test_that(
desc = "From information timing to calendar timing (test.type = 4 and default values for the other arguments)",
code = {
dsgn01 <- gsSurv(k = 3,
test.type = 4, alpha = 0.025, sided = 1, beta = 0.1, astar = 0, timing = 1,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
r = 18, lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, T = 18, minfup = 6, ratio = 1,
tol = .Machine$double.eps^0.25, usTime = NULL, lsTime = NULL)
dsgn02 <- gsSurvCalendar(spending = "information", calendarTime = dsgn01$T, minfup = 6, tol = .Machine$double.eps^0.25, # These arguments' values are different from their default values.
test.type = 4, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
r = 18, lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, ratio = 1)
# dsgn02 is supposed to be the same as dsgn01.
comparison_names(dsgn01, dsgn02)
comparison_inputs(dsgn01, dsgn02)
comparison_outputs(dsgn01, dsgn02)
}
)
testthat::test_that(
desc = "From information timing to calendar timing (test.type = 5 and default values for the other arguments)",
code = {
dsgn01 <- gsSurv(k = 3,
test.type = 5, alpha = 0.025, sided = 1, beta = 0.1, astar = 0, timing = 1,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
r = 18, lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, T = 18, minfup = 6, ratio = 1,
tol = .Machine$double.eps^0.25, usTime = NULL, lsTime = NULL)
dsgn02 <- gsSurvCalendar(spending = "information", calendarTime = dsgn01$T, minfup = 6, tol = .Machine$double.eps^0.25, # These arguments' values are different from their default values.
test.type = 5, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
r = 18, lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, ratio = 1)
# dsgn02 is supposed to be the same as dsgn01.
comparison_names(dsgn01, dsgn02)
comparison_inputs(dsgn01, dsgn02)
comparison_outputs(dsgn01, dsgn02)
}
)
testthat::test_that(
desc = "From information timing to calendar timing (test.type = 6 and default values for the other arguments)",
code = {
dsgn01 <- gsSurv(k = 3,
test.type = 6, alpha = 0.025, sided = 1, beta = 0.1, astar = 0, timing = 1,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
r = 18, lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, T = 18, minfup = 6, ratio = 1,
tol = .Machine$double.eps^0.25, usTime = NULL, lsTime = NULL)
dsgn02 <- gsSurvCalendar(spending = "information", calendarTime = dsgn01$T, minfup = 6, tol = .Machine$double.eps^0.25, # These arguments' values are different from their default values.
test.type = 6, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
r = 18, lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, ratio = 1)
# dsgn02 is supposed to be the same as dsgn01.
comparison_names(dsgn01, dsgn02)
comparison_inputs(dsgn01, dsgn02)
comparison_outputs(dsgn01, dsgn02)
}
)
### Check if gsSurv can mimic gsSurvCalendar with different test types
testthat::test_that(
desc = "From calendar timing to information timing (test.type = 1 and default values for the other arguments)",
code = {
dsgn03 <- gsSurvCalendar(spending = "information",
test.type = 1, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
calendarTime = c(12, 24, 36),
lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, minfup = 18, ratio = 1, r = 18,
tol = 1e-06)
# Calculate the expected numbers of events for time points
nevents <- sapply(dsgn03$T,
function(x) nEventsIA(x = dsgn03, tIA = x, simple = FALSE)[[2]] +
nEventsIA(x = dsgn03, tIA = x, simple = FALSE)[[3]])
dsgn04 <- gsSurv(k = 3, timing = nevents / tail(nevents, 1), T = tail(dsgn03$T, 1), minfup = 18, tol = 1e-06, # These arguments' values are different from their default values.
test.type = 1, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, ratio = 1, r = 18,
usTime = NULL, lsTime = NULL)
# dsgn04 is supposed to be the same as dsgn03.
comparison_names(dsgn04, dsgn03)
comparison_inputs(dsgn04, dsgn03)
comparison_outputs(dsgn04, dsgn03)
}
)
testthat::test_that(
desc = "From calendar timing to information timing (test.type = 2 and default values for the other arguments)",
code = {
dsgn03 <- gsSurvCalendar(spending = "information",
test.type = 2, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
calendarTime = c(12, 24, 36),
lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, minfup = 18, ratio = 1, r = 18,
tol = 1e-06)
# Calculate the expected numbers of events for time points
nevents <- sapply(dsgn03$T,
function(x) nEventsIA(x = dsgn03, tIA = x, simple = FALSE)[[2]] +
nEventsIA(x = dsgn03, tIA = x, simple = FALSE)[[3]])
dsgn04 <- gsSurv(k = 3, timing = nevents / tail(nevents, 1), T = tail(dsgn03$T, 1), minfup = 18, tol = 1e-06, # These arguments' values are different from their default values.
test.type = 2, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, ratio = 1, r = 18,
usTime = NULL, lsTime = NULL)
# dsgn04 is supposed to be the same as dsgn03.
comparison_names(dsgn04, dsgn03)
comparison_inputs(dsgn04, dsgn03)
comparison_outputs(dsgn04, dsgn03)
}
)
testthat::test_that(
desc = "From calendar timing to information timing (test.type = 3 and default values for the other arguments)",
code = {
dsgn03 <- gsSurvCalendar(spending = "information",
test.type = 3, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
calendarTime = c(12, 24, 36),
lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, minfup = 18, ratio = 1, r = 18,
tol = 1e-06)
# Calculate the expected numbers of events for time points
nevents <- sapply(dsgn03$T,
function(x) nEventsIA(x = dsgn03, tIA = x, simple = FALSE)[[2]] +
nEventsIA(x = dsgn03, tIA = x, simple = FALSE)[[3]])
dsgn04 <- gsSurv(k = 3, timing = nevents / tail(nevents, 1), T = tail(dsgn03$T, 1), minfup = 18, tol = 1e-06, # These arguments' values are different from their default values.
test.type = 3, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, ratio = 1, r = 18,
usTime = NULL, lsTime = NULL)
# dsgn04 is supposed to be the same as dsgn03.
comparison_names(dsgn04, dsgn03)
comparison_inputs(dsgn04, dsgn03)
comparison_outputs(dsgn04, dsgn03)
}
)
testthat::test_that(
desc = "From calendar timing to information timing (test.type = 4 and default values for the other arguments)",
code = {
dsgn03 <- gsSurvCalendar(spending = "information",
test.type = 4, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
calendarTime = c(12, 24, 36),
lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, minfup = 18, ratio = 1, r = 18,
tol = 1e-06)
# Calculate the expected numbers of events for time points
nevents <- sapply(dsgn03$T,
function(x) nEventsIA(x = dsgn03, tIA = x, simple = FALSE)[[2]] +
nEventsIA(x = dsgn03, tIA = x, simple = FALSE)[[3]])
dsgn04 <- gsSurv(k = 3, timing = nevents / tail(nevents, 1), T = tail(dsgn03$T, 1), minfup = 18, tol = 1e-06, # These arguments' values are different from their default values.
test.type = 4, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, ratio = 1, r = 18,
usTime = NULL, lsTime = NULL)
# dsgn04 is supposed to be the same as dsgn03.
comparison_names(dsgn04, dsgn03)
comparison_inputs(dsgn04, dsgn03)
comparison_outputs(dsgn04, dsgn03)
}
)
testthat::test_that(
desc = "From calendar timing to information timing (test.type = 5 and default values for the other arguments)",
code = {
dsgn03 <- gsSurvCalendar(spending = "information",
test.type = 5, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
calendarTime = c(12, 24, 36),
lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, minfup = 18, ratio = 1, r = 18,
tol = 1e-06)
# Calculate the expected numbers of events for time points
nevents <- sapply(dsgn03$T,
function(x) nEventsIA(x = dsgn03, tIA = x, simple = FALSE)[[2]] +
nEventsIA(x = dsgn03, tIA = x, simple = FALSE)[[3]])
dsgn04 <- gsSurv(k = 3, timing = nevents / tail(nevents, 1), T = tail(dsgn03$T, 1), minfup = 18, tol = 1e-06, # These arguments' values are different from their default values.
test.type = 5, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, ratio = 1, r = 18,
usTime = NULL, lsTime = NULL)
# dsgn04 is supposed to be the same as dsgn03.
comparison_names(dsgn04, dsgn03)
comparison_inputs(dsgn04, dsgn03)
comparison_outputs(dsgn04, dsgn03)
}
)
testthat::test_that(
desc = "From calendar timing to information timing (test.type = 6 and default values for the other arguments)",
code = {
dsgn03 <- gsSurvCalendar(spending = "information",
test.type = 6, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
calendarTime = c(12, 24, 36),
lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, minfup = 18, ratio = 1, r = 18,
tol = 1e-06)
# Calculate the expected numbers of events for time points
nevents <- sapply(dsgn03$T,
function(x) nEventsIA(x = dsgn03, tIA = x, simple = FALSE)[[2]] +
nEventsIA(x = dsgn03, tIA = x, simple = FALSE)[[3]])
dsgn04 <- gsSurv(k = 3, timing = nevents / tail(nevents, 1), T = tail(dsgn03$T, 1), minfup = 18, tol = 1e-06, # These arguments' values are different from their default values.
test.type = 6, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, ratio = 1, r = 18,
usTime = NULL, lsTime = NULL)
# dsgn04 is supposed to be the same as dsgn03.
comparison_names(dsgn04, dsgn03)
comparison_inputs(dsgn04, dsgn03)
comparison_outputs(dsgn04, dsgn03)
}
)
### Check if gsSurv and gsSurvcalendar can mimic each other with extreme argument values
testthat::test_that(
desc = "From information timing to calendar timing (test.type = 4, alpha = 0.0001, and beta = 0.01)",
code = {
dsgn01 <- gsSurv(k = 3,
test.type = 4, alpha = 0.0001, sided = 1, beta = 0.01, astar = 0, timing = 1,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
r = 18, lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, T = 18, minfup = 6, ratio = 1,
tol = .Machine$double.eps^0.25, usTime = NULL, lsTime = NULL)
dsgn02 <- gsSurvCalendar(spending = "information", calendarTime = dsgn01$T, minfup = 6, tol = .Machine$double.eps^0.25, # These arguments' values are different from their default values.
test.type = 4, alpha = 0.0001, sided = 1, beta = 0.01, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
r = 18, lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, ratio = 1)
# dsgn02 is supposed to be the same as dsgn01.
comparison_names(dsgn01, dsgn02)
comparison_inputs(dsgn01, dsgn02)
comparison_outputs(dsgn01, dsgn02)
}
)
testthat::test_that(
desc = "From calendar timing to information timing (test.type = 4, alpha = 0.0001, and beta = 0.01)",
code = {
dsgn03 <- gsSurvCalendar(spending = "information",
test.type = 4, alpha = 0.0001, sided = 1, beta = 0.01, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
calendarTime = c(12, 24, 36),
lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, minfup = 18, ratio = 1, r = 18,
tol = 1e-06)
# Calculate the expected numbers of events for time points
nevents <- sapply(dsgn03$T,
function(x) nEventsIA(x = dsgn03, tIA = x, simple = FALSE)[[2]] +
nEventsIA(x = dsgn03, tIA = x, simple = FALSE)[[3]])
dsgn04 <- gsSurv(k = 3, timing = nevents / tail(nevents, 1), T = tail(dsgn03$T, 1), minfup = 18, tol = 1e-06, # These arguments' values are different from their default values.
test.type = 4, alpha = 0.0001, sided = 1, beta = 0.01, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, ratio = 1, r = 18,
usTime = NULL, lsTime = NULL)
# dsgn04 is supposed to be the same as dsgn03.
comparison_names(dsgn04, dsgn03)
comparison_inputs(dsgn04, dsgn03)
comparison_outputs(dsgn04, dsgn03)
}
)
testthat::test_that(
desc = "From information timing to calendar timing (test.type = 4 and 9 planned analyses)",
code = {
dsgn01 <- gsSurv(k = 9,
test.type = 4, alpha = 0.025, sided = 1, beta = 0.1, astar = 0, timing = 1,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
r = 18, lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, T = 18, minfup = 6, ratio = 1,
tol = .Machine$double.eps^0.25, usTime = NULL, lsTime = NULL)
dsgn02 <- gsSurvCalendar(spending = "information", calendarTime = dsgn01$T, minfup = 6, tol = .Machine$double.eps^0.25, # These arguments' values are different from their default values.
test.type = 4, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
r = 18, lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, ratio = 1)
# dsgn02 is supposed to be the same as dsgn01.
comparison_names(dsgn01, dsgn02)
comparison_inputs(dsgn01, dsgn02, tolerance = 1e-5) # Please note that we are using tol = 1e-5 instead of 1e-6 for comparison. The number of planned analyses may impact the numerical accuracy or precision of the functions.
comparison_outputs(dsgn01, dsgn02, tolerance = 1e-5)
}
)
testthat::test_that(
desc = "From calendar timing to information timing (test.type = 4 and 9 planned analyses)",
code = {
dsgn03 <- gsSurvCalendar(spending = "information",
test.type = 4, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
calendarTime = seq(from = 4, to = 36, by = 4),
lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, minfup = 18, ratio = 1, r = 18,
tol = 1e-06)
# Calculate the expected numbers of events for time points
nevents <- sapply(dsgn03$T,
function(x) nEventsIA(x = dsgn03, tIA = x, simple = FALSE)[[2]] +
nEventsIA(x = dsgn03, tIA = x, simple = FALSE)[[3]])
dsgn04 <- gsSurv(k = 9, timing = nevents / tail(nevents, 1), T = tail(dsgn03$T, 1), minfup = 18, tol = 1e-06, # These arguments' values are different from their default values.
test.type = 4, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, ratio = 1, r = 18,
usTime = NULL, lsTime = NULL)
# dsgn04 is supposed to be the same as dsgn03.
comparison_names(dsgn04, dsgn03)
comparison_inputs(dsgn04, dsgn03, tolerance = 1e-5)
comparison_outputs(dsgn04, dsgn03, tolerance = 1e-5)
}
)
testthat::test_that(
desc = "From information timing to calendar timing (test.type = 4 and sfu = sfl = sfLDOF)",
code = {
dsgn01 <- gsSurv(k = 3,
test.type = 4, alpha = 0.025, sided = 1, beta = 0.1, astar = 0, timing = 1,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
r = 18, lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, T = 18, minfup = 6, ratio = 1,
tol = .Machine$double.eps^0.25, usTime = NULL, lsTime = NULL)
dsgn02 <- gsSurvCalendar(spending = "information", calendarTime = dsgn01$T, minfup = 6, tol = .Machine$double.eps^0.25, # These arguments' values are different from their default values.
test.type = 4, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
r = 18, lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, ratio = 1)
# dsgn02 is supposed to be the same as dsgn01.
comparison_names(dsgn01, dsgn02)
comparison_inputs(dsgn01, dsgn02)
comparison_outputs(dsgn01, dsgn02)
}
)
testthat::test_that(
desc = "From calendar timing to information timing (test.type = 4 and sfu = sfl = sfLDOF)",
code = {
dsgn03 <- gsSurvCalendar(spending = "information",
test.type = 4, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfLDOF, sfupar = NULL, sfl = gsDesign::sfLDOF, sflpar = NULL,
calendarTime = c(12, 24, 36),
lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, minfup = 18, ratio = 1, r = 18,
tol = 1e-06)
# Calculate the expected numbers of events for time points
nevents <- sapply(dsgn03$T,
function(x) nEventsIA(x = dsgn03, tIA = x, simple = FALSE)[[2]] +
nEventsIA(x = dsgn03, tIA = x, simple = FALSE)[[3]])
dsgn04 <- gsSurv(k = 3, timing = nevents / tail(nevents, 1), T = tail(dsgn03$T, 1), minfup = 18, tol = 1e-06, # These arguments' values are different from their default values.
test.type = 4, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfLDOF, sfupar = NULL, sfl = gsDesign::sfLDOF, sflpar = NULL,
lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, ratio = 1, r = 18,
usTime = NULL, lsTime = NULL)
# dsgn04 is supposed to be the same as dsgn03.
comparison_names(dsgn04, dsgn03)
comparison_inputs(dsgn04, dsgn03)
comparison_outputs(dsgn04, dsgn03)
}
)
testthat::test_that(
desc = "From information timing to calendar timing (test.type = 4 and sfu = sfl = sfLDPocock)",
code = {
dsgn01 <- gsSurv(k = 3,
test.type = 4, alpha = 0.025, sided = 1, beta = 0.1, astar = 0, timing = 1,
sfu = gsDesign::sfLDPocock, sfupar = -4, sfl = gsDesign::sfLDPocock, sflpar = -2,
r = 18, lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, T = 18, minfup = 6, ratio = 1,
tol = .Machine$double.eps^0.25, usTime = NULL, lsTime = NULL)
dsgn02 <- gsSurvCalendar(spending = "information", calendarTime = dsgn01$T, minfup = 6, tol = .Machine$double.eps^0.25, # These arguments' values are different from their default values.
test.type = 4, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfLDPocock, sfupar = -4, sfl = gsDesign::sfLDPocock, sflpar = -2,
r = 18, lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, ratio = 1)
# dsgn02 is supposed to be the same as dsgn01.
comparison_names(dsgn01, dsgn02)
comparison_inputs(dsgn01, dsgn02)
comparison_outputs(dsgn01, dsgn02)
}
)
testthat::test_that(
desc = "From calendar timing to information timing (test.type = 4 and sfu = sfl = sfLDPocock)",
code = {
dsgn03 <- gsSurvCalendar(spending = "information",
test.type = 4, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfLDPocock, sfupar = NULL, sfl = gsDesign::sfLDPocock, sflpar = NULL,
calendarTime = c(12, 24, 36),
lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, minfup = 18, ratio = 1, r = 18,
tol = 1e-06)
# Calculate the expected numbers of events for time points
nevents <- sapply(dsgn03$T,
function(x) nEventsIA(x = dsgn03, tIA = x, simple = FALSE)[[2]] +
nEventsIA(x = dsgn03, tIA = x, simple = FALSE)[[3]])
dsgn04 <- gsSurv(k = 3, timing = nevents / tail(nevents, 1), T = tail(dsgn03$T, 1), minfup = 18, tol = 1e-06, # These arguments' values are different from their default values.
test.type = 4, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfLDPocock, sfupar = NULL, sfl = gsDesign::sfLDPocock, sflpar = NULL,
lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, ratio = 1, r = 18,
usTime = NULL, lsTime = NULL)
# dsgn04 is supposed to be the same as dsgn03.
comparison_names(dsgn04, dsgn03)
comparison_inputs(dsgn04, dsgn03)
comparison_outputs(dsgn04, dsgn03)
}
)
### Check if gsSurvcalendar (with different spending types) can provide an error when the arguments are not desirable
testthat::test_that(
desc = "Performing an interim analysis for each timepoint is not an easy task (with spending = information)",
code = {
testthat::expect_error(
object = gsSurvCalendar(spending = "information",
test.type = 4, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
calendarTime = seq(from = 4, to = 36, by = 1),
lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, minfup = 18, ratio = 1, r = 18,
tol = 1e-06),
regexp = NULL)
}
)
testthat::test_that(
desc = "A new user may be confused with the meaning of test.type (with spending = information)",
code = {
testthat::expect_error(
object = gsSurvCalendar(spending = "information",
test.type = "one-sided", alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
calendarTime = c(12, 24, 36),
lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, minfup = 18, ratio = 1, r = 18,
tol = 1e-06),
regexp = NULL)
}
)
testthat::test_that(
desc = "Minimum follow-up must be smaller than study duration (with spending = information)",
code = {
testthat::expect_error(
object = gsSurvCalendar(spending = "information",
test.type = 4, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
calendarTime = c(4, 8, 12, 16),
lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, minfup = 18, ratio = 1, r = 18,
tol = 1e-06),
regexp = NULL)
}
)
testthat::test_that(
desc = "Performing an interim analysis for each timepoint is not an easy task (with spending = calendar)",
code = {
testthat::expect_error(
object = gsSurvCalendar(spending = "calendar",
test.type = 4, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
calendarTime = seq(from = 4, to = 36, by = 1),
lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, minfup = 18, ratio = 1, r = 18,
tol = 1e-06),
regexp = NULL)
}
)
testthat::test_that(
desc = "A new user may be confused with the meaning of test.type (with spending = calendar)",
code = {
testthat::expect_error(
object = gsSurvCalendar(spending = "calendar",
test.type = "one-sided", alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
calendarTime = c(12, 24, 36),
lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, minfup = 18, ratio = 1, r = 18,
tol = 1e-06),
regexp = NULL)
}
)
testthat::test_that(
desc = "Minimum follow-up must be smaller than study duration (with spending = calendar)",
code = {
testthat::expect_error(
object = gsSurvCalendar(spending = "calendar",
test.type = 4, alpha = 0.025, sided = 1, beta = 0.1, astar = 0,
sfu = gsDesign::sfHSD, sfupar = -4, sfl = gsDesign::sfHSD, sflpar = -2,
calendarTime = c(4, 8, 12, 16),
lambdaC = log(2)/6, hr = 0.6, hr0 = 1, eta = 0, etaE = NULL,
gamma = 1, R = 12, S = NULL, minfup = 18, ratio = 1, r = 18,
tol = 1e-06),
regexp = NULL)
}
)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.