## ----echo = FALSE------------------------------------------------------------- knitr::opts_chunk$set(collapse = TRUE, comment = "#>", eval = TRUE, fig.width = 6, fig.height = 4) options(width = 80) ## ----setup-------------------------------------------------------------------- library(testflow) cardio <- make_cardio_data() ## ----------------------------------------------------------------------------- x <- test_two_groups(sbp_3m ~ sex, data = cardio) x # print.testflow(): formatted console report summary(x) # summary.testflow(): compact summary list report(x) # report.testflow(): report-ready sentence as_tibble(x) # as_tibble.testflow(): one-row tidy summary ## ----------------------------------------------------------------------------- sumtab(~ age + sbp_3m + ldl | treatment, data = cardio) ## ----------------------------------------------------------------------------- x_one_sample <- test_one_sample(cardio, sbp_3m, mu = 140) x_one_sample plot(x_one_sample) ## ----------------------------------------------------------------------------- x_two_groups <- test_two_groups(sbp_3m ~ sex, data = cardio) x_two_groups plot(x_two_groups) ## ----------------------------------------------------------------------------- x_paired <- test_paired(sbp_3m ~ sbp_baseline, data = cardio) x_paired plot(x_paired) ## ----------------------------------------------------------------------------- x_groups <- test_groups(sbp_3m ~ treatment, data = cardio) x_groups plot(x_groups) ## ----------------------------------------------------------------------------- x_factorial <- test_factorial(sbp_3m ~ sex * treatment, data = cardio) x_factorial plot(x_factorial) ## ----------------------------------------------------------------------------- x_repeated <- test_repeated(cardio, c(sbp_baseline, sbp_3m, sbp_6m), id = id) x_repeated plot(x_repeated) ## ----------------------------------------------------------------------------- long_sbp <- tidyr::pivot_longer( cardio, c(sbp_baseline, sbp_3m, sbp_6m), names_to = "time", values_to = "sbp" ) test_repeated_long(long_sbp, outcome = sbp, within = time, id = id) ## ----------------------------------------------------------------------------- x_categorical <- test_categorical(treatment ~ controlled_3m, data = cardio) x_categorical plot(x_categorical) ## ----------------------------------------------------------------------------- x_proportion <- test_proportion(cardio, controlled_3m, success = "yes", p = 0.5) x_proportion plot(x_proportion) ## ----------------------------------------------------------------------------- x_multinomial <- test_multinomial(cardio, treatment) x_multinomial plot(x_multinomial) ## ----------------------------------------------------------------------------- x_paired_cat <- test_paired_categorical(cardio, controlled_baseline, controlled_3m) x_paired_cat plot(x_paired_cat) ## ----------------------------------------------------------------------------- x_repeated_cat <- test_repeated_categorical(cardio, c(controlled_baseline, controlled_3m, controlled_6m)) x_repeated_cat plot(x_repeated_cat) ## ----------------------------------------------------------------------------- x_correlation <- test_correlation(sbp_3m ~ age, data = cardio) x_correlation plot(x_correlation) ## ----------------------------------------------------------------------------- x_corr_matrix <- test_correlation_matrix(cardio, c(age, sbp_baseline, ldl, crp), method = "spearman") x_corr_matrix plot(x_corr_matrix) ## ----------------------------------------------------------------------------- x_linreg <- test_linear_regression(sbp_3m ~ age + ldl, data = cardio) x_linreg plot(x_linreg) ## ----------------------------------------------------------------------------- x_logreg <- test_logistic_regression(controlled_3m ~ age + ldl, data = cardio) x_logreg plot(x_logreg) ## ----------------------------------------------------------------------------- set.seed(1) n <- 100 survival_dat <- tibble::tibble( time = rexp(n, 0.1), status = rbinom(n, 1, 0.7), arm = rep(c("control", "treatment"), each = n / 2), age = rnorm(n, 60, 10) ) ## ----------------------------------------------------------------------------- x_survival <- test_survival(Surv(time, status) ~ arm, data = survival_dat) x_survival plot(x_survival) ## ----------------------------------------------------------------------------- x_cox <- test_cox(Surv(time, status) ~ age + arm, data = survival_dat) x_cox plot(x_cox) ## ----------------------------------------------------------------------------- set.seed(1) diag_dat <- tibble::tibble( test = c(rep("positive", 55), rep("negative", 98)), reference = c(rep("positive", 45), rep("negative", 10), rep("positive", 8), rep("negative", 90)) ) x_diagnostic <- test_diagnostic(diag_dat, test, reference) x_diagnostic plot(x_diagnostic) ## ----------------------------------------------------------------------------- roc_dat <- tibble::tibble( marker = c(rnorm(60, 2, 1), rnorm(50, 0, 1)), disease = c(rep("yes", 60), rep("no", 50)) ) x_roc <- test_roc(roc_dat, marker, disease) x_roc plot(x_roc) ## ----------------------------------------------------------------------------- agree_dat <- tibble::tibble( rater1 = sample(c("mild", "moderate", "severe"), 100, replace = TRUE), rater2 = sample(c("mild", "moderate", "severe"), 100, replace = TRUE) ) x_agreement <- test_agreement(agree_dat, rater1, rater2) x_agreement plot(x_agreement) ## ----------------------------------------------------------------------------- icc_dat <- tibble::tibble( rater1 = rnorm(30, 50, 10), rater2 = rnorm(30, 50, 10), rater3 = rnorm(30, 50, 10) ) x_icc <- test_icc(icc_dat, c(rater1, rater2, rater3)) x_icc plot(x_icc) ## ----------------------------------------------------------------------------- x_outliers <- test_outliers(c(sbp_3m, ldl, crp), data = cardio) x_outliers plot(x_outliers) ## ----eval = FALSE------------------------------------------------------------- # sample_size( # endpoint = c("continuous", "binary", "survival", "ordinal"), # design = c("parallel", "paired", "repeated"), # objective = c("superiority", "noninferiority", "equivalence"), # ... # ) ## ----------------------------------------------------------------------------- ss_parallel <- sample_size_continuous(design = "parallel", objective = "superiority", delta = 5, sd = 10, alpha = 0.05, power = 0.90) ss_parallel plot(ss_parallel, type = "summary") ## ----------------------------------------------------------------------------- ss_paired <- sample_size_continuous(design = "paired", objective = "superiority", delta = 5, sd_diff = 10, alpha = 0.05, power = 0.90) ss_paired plot(ss_paired, type = "both") ## ----------------------------------------------------------------------------- sample_size_binary(design = "parallel", objective = "superiority", p1 = 0.4, p2 = 0.25, method = "pooled", alpha = 0.05, power = 0.90) ## ----------------------------------------------------------------------------- sample_size_survival(hr = 0.7, survival_a = 0.8, survival_b = 0.7, alpha = 0.05, power = 0.90) ## ----------------------------------------------------------------------------- sample_size_ordinal(p_superiority = 0.65, alpha = 0.05, power = 0.90) ## ----------------------------------------------------------------------------- sample_size_bioequivalence(design = "crossover", gmr = 0.95, cv_within = 0.30, alpha = 0.05, power = 0.90) ## ----------------------------------------------------------------------------- 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, allocation = 2) ## ----------------------------------------------------------------------------- sample_size_precision(endpoint = "binary", design = "one_sample", width = 0.02, p = 0.01, method = "wilson") ## ----------------------------------------------------------------------------- sample_size_cluster_adjust(100, m = 20, rho = 0.02) sample_size_adjust_dropout(100, dropout = 0.15)