## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ## ----------------------------------------------------------------------------- library(gst) library(dplyr) # load data from the `multcomp` package dat <- multcomp::mtept head(dat) ## ----------------------------------------------------------------------------- # correlation between endpoints dat |> select(-treatment) |> cor() ## ----------------------------------------------------------------------------- # reverse E4 dat <- dat |> mutate( E4 = -E4 ) # correlation between endpoints dat |> select(-treatment) |> cor() ## ----------------------------------------------------------------------------- results <- dat |> obrien( endpoint_vars = c("E1", "E2", "E3", "E4"), treatment_vars = "treatment", method = "ols" ) print(data.frame(results[-5])) ## ----------------------------------------------------------------------------- results <- dat |> obrien( endpoint_vars = c("E1", "E2", "E3", "E4"), treatment_vars = "treatment", method = "gls" ) print(data.frame(results[-5])) ## ----------------------------------------------------------------------------- results <- dat |> obrien( endpoint_vars = c("E1", "E2", "E3", "E4"), treatment_vars = "treatment", method = "ranksum" ) print(data.frame(results[-5])) ## ----------------------------------------------------------------------------- # generate all possible combinations of the 4 endpoints (1 = include; 0 = exclude) opt_mat <- expand.grid(0:1, 0:1, 0:1, 0:1) opt_mat <- opt_mat |> dplyr::arrange(rowSums(opt_mat)) endpoints <- c("E1", "E2", "E3", "E4") # run o'brien's test on each combination of endpoints results <- purrr::map_dfr( 2:nrow(opt_mat), function(i) { my_endpoints <- endpoints[ opt_mat[i, ] == 1 ] # identify endpoints to test x <- dat |> obrien( endpoint_vars = my_endpoints, treatment_vars = "treatment", method = "ols" ) x$R <- NULL # ignore correlation matrix in output (not needed) x |> dplyr::as_tibble() |> dplyr::mutate( endpoints = paste(my_endpoints, collapse = ", "), method = "ols" ) } ) # display results in a nice table (gt is optional; fall back to kable) results_tbl <- results |> dplyr::transmute( Endpoints = endpoints, DF = df, `Test Statistic` = round(statistic, 2), `P-value` = round(pvalue, 3) ) if (requireNamespace("gt", quietly = TRUE)) { results_tbl |> gt::gt() |> gt::fmt_auto() |> gt::tab_header( "O'Brien's OLS Test on All Endpoint Combinations" ) } else { knitr::kable(results_tbl, caption = "O'Brien's OLS Test on All Endpoint Combinations") }