## ----echo = FALSE------------------------------------------------------------- knitr::opts_chunk$set(collapse = TRUE, comment = "#>", eval = TRUE) ## ----setup-------------------------------------------------------------------- library(testflow) ## ----eval = FALSE------------------------------------------------------------- # sample_size( # endpoint = c("continuous", "binary", "survival", "ordinal"), # design = c("parallel", "paired", "repeated"), # objective = c("superiority", "noninferiority", "equivalence"), # ... # ) ## ----------------------------------------------------------------------------- parallel_ss <- sample_size_continuous( design = "parallel", objective = "superiority", delta = 5, sd = 10, alpha = 0.05, power = 0.90 ) parallel_ss ## ----------------------------------------------------------------------------- paired_ss <- sample_size_continuous( design = "paired", objective = "superiority", delta = 5, sd_diff = 10, alpha = 0.05, power = 0.90 ) paired_ss plot(paired_ss, type = "curve") ## ----------------------------------------------------------------------------- repeated_ss <- sample_size_continuous( design = "repeated", n_time = 4, correlation = 0.5, objective = "superiority", delta = 5, sd_diff = 10, alpha = 0.05, power = 0.90 ) repeated_ss ## ----------------------------------------------------------------------------- sample_size_continuous( design = "parallel", objective = "noninferiority", delta = 2, expected_difference = 0.5, sd = 10, alpha = 0.025, power = 0.90 ) sample_size_continuous( design = "parallel", objective = "equivalence", delta = 4, expected_difference = 0, sd = 10, alpha = 0.05, power = 0.90 ) ## ----------------------------------------------------------------------------- sample_size_binary( design = "parallel", objective = "superiority", p1 = 0.4, p2 = 0.25, method = "pooled", alpha = 0.05, power = 0.90 ) ## ----------------------------------------------------------------------------- paired_binary_ss <- sample_size_binary( design = "paired", objective = "superiority", p10 = 0.2, p01 = 0.1, alpha = 0.05, power = 0.90 ) paired_binary_ss ## ----------------------------------------------------------------------------- sample_size_binary( design = "parallel", objective = "equivalence", p1 = 0.3, p2 = 0.3, margin = 0.15, allocation = 2, alpha = 0.05, power = 0.90 ) ## ----------------------------------------------------------------------------- survival_ss <- sample_size_survival( hr = 0.7, survival_a = 0.8, survival_b = 0.7, alpha = 0.05, power = 0.90 ) survival_ss ## ----------------------------------------------------------------------------- accrual_ss <- sample_size_survival( hr = 0.7, survival_a = 0.8, survival_b = 0.7, alpha = 0.05, power = 0.90, accrual_duration = 12, follow_up = 24 ) accrual_ss ## ----------------------------------------------------------------------------- ordinal_ss <- sample_size_ordinal( p_superiority = 0.6, alpha = 0.05, power = 0.90 ) ordinal_ss ## ----------------------------------------------------------------------------- be_ss <- sample_size_bioequivalence( design = "crossover", gmr = 0.95, cv_within = 0.30, alpha = 0.05, power = 0.90 ) be_ss ## ----------------------------------------------------------------------------- sample_size_precision( endpoint = "continuous", design = "one_sample", width = 2, sd = 10, alpha = 0.05 ) sample_size_precision( endpoint = "binary", design = "two_sample", width = 0.08, p1 = 0.4, p2 = 0.3, alpha = 0.05 ) ## ----------------------------------------------------------------------------- # Common prevalence: Wald is adequate and remains the default sample_size_precision(endpoint = "binary", design = "one_sample", width = 0.05, p = 0.30) # Rare prevalence: Wilson score confidence interval sample_size_precision(endpoint = "binary", design = "one_sample", width = 0.02, p = 0.01, method = "wilson") # Rare prevalence: exact Clopper-Pearson, with the precision requirement # extended over a prevalence-local band of event counts (criterion = # "worst_case") rather than just the single anticipated count sample_size_precision( endpoint = "binary", design = "one_sample", width = 0.005, p = 0.001, method = "exact", criterion = "worst_case" ) ## ----------------------------------------------------------------------------- x <- sample_size_precision( endpoint = "binary", design = "one_sample", width = 0.02, p = 0.05, method = "wilson", dropout = 0.10 ) x$diagnostics$complete_case_n # n required by the precision criterion alone x$diagnostics$adjusted_n # complete_case_n inflated for dropout x$diagnostics$expected_events # anticipated events at adjusted_n x$diagnostics$probability_zero_events x$diagnostics$achieved_maximum_half_width ## ----------------------------------------------------------------------------- sample_size_precision( endpoint = "binary", design = "two_sample", width = 0.08, p1 = 0.4, p2 = 0.3, allocation = 2 ) ## ----------------------------------------------------------------------------- parallel_ss <- sample_size_continuous( design = "parallel", objective = "superiority", delta = 5, sd = 10, alpha = 0.05, power = 0.90 ) sample_size_cluster_adjust(unname(parallel_ss$n_adjusted["A"]), m = 20, rho = 0.02) ## ----------------------------------------------------------------------------- sample_size_adjust_dropout(100, dropout = 0.15) ## ----------------------------------------------------------------------------- report(paired_ss) as_tibble(paired_ss)