Summarize results of ANCOVA. This can be used to analyze multiple endpoints and/or
multiple timepoints within the same response variable .var
.
Usage
h_ancova(.var, .df_row, variables)
s_ancova(df, .var, .df_row, variables, .ref_group, .in_ref_col, conf_level)
a_ancova(df, .var, .df_row, variables, .ref_group, .in_ref_col, conf_level)
summarize_ancova(
lyt,
vars,
var_labels,
...,
show_labels = "visible",
table_names = vars,
.stats = NULL,
.formats = NULL,
.labels = NULL,
.indent_mods = NULL
)
Arguments
- .var
(
string
)
single variable name that is passed byrtables
when requested by a statistics function.- .df_row
(
data frame
)
data set that includes all the variables that are called in.var
andvariables
.- variables
-
(named
list
ofstrings
)
list of additional analysis variables, with expected elements:arm
: (string
)
group variable, for which the covariate adjusted means of multiple groups will be summarized. Specifically, the first level ofarm
variable is taken as the reference group.covariates
: (character
)
a vector that can contain single variable names (such as"X1"
), and/or interaction terms indicated by"X1 * X2"
.
- df
(
data frame
)
data set containing all analysis variables.- .ref_group
(
data frame
orvector
)
the data corresponding to the reference group.- .in_ref_col
(
logical
)TRUE
when working with the reference level,FALSE
otherwise.- conf_level
(
proportion
)
confidence level of the interval.- lyt
(
layout
)
input layout where analyses will be added to.- vars
(
character
)
variable names for the primary analysis variable to be iterated over.- var_labels
character for label.
- ...
additional arguments for the lower level functions.
- show_labels
label visibility: one of "default", "visible" and "hidden".
- table_names
(
character
)
this can be customized in case that the samevars
are analyzed multiple times, to avoid warnings fromrtables
.- .stats
(
character
)
statistics to select for the table.- .formats
(named
character
orlist
)
formats for the statistics.- .labels
(named
character
)
labels for the statistics (without indent).- .indent_mods
(named
integer
)
indent modifiers for the labels.
Value
A named list of 5 statistics:
n
: count of complete sample size for the group.lsmean
: estimated marginal means in the group.lsmean_diff
: difference in estimated marginal means in comparison to the reference group. If working with the reference group, this will be empty.lsmean_diff_ci
: confidence level for difference in estimated marginal means in comparison to the reference group.pval
: p-value (not adjusted for multiple comparisons).
Functions
h_ancova()
: Helper function to return results of a linear model.s_ancova()
: Statistics function that produces a named list of results of the investigated linear model.a_ancova()
: Formatted Analysis function which can be further customized by callingrtables::make_afun()
on it. It is used asafun
inrtables::analyze()
.summarize_ancova()
: Layout creating function which can be be used for creating summary tables for analysis of covariance (ANCOVA).
Examples
h_ancova(
.var = "Sepal.Length",
.df_row = iris,
variables = list(arm = "Species", covariates = c("Petal.Length * Petal.Width", "Sepal.Width"))
)
#> Species emmean SE df lower.CL upper.CL
#> setosa 6.15 0.3371 143 5.49 6.82
#> versicolor 5.72 0.0668 143 5.59 5.85
#> virginica 5.41 0.1488 143 5.11 5.70
#>
#> Confidence level used: 0.95
library(scda)
library(dplyr)
adsl <- synthetic_cdisc_data("latest")$adsl
adqs <- synthetic_cdisc_data("latest")$adqs
adqs_single <- adqs %>%
filter(
AVISIT == "WEEK 1 DAY 8", # single time point
PARAMCD == "FKSI-FWB" # single end point
) %>%
mutate(CHG = ifelse(BMEASIFL == "Y", CHG, NA)) # only analyze evaluable population
df <- adqs_single %>%
filter(ARMCD == "ARM B")
.var <- "CHG"
.df_row <- adqs_single
variables <- list(arm = "ARMCD", covariates = "SEX * AGE")
.ref_group <- adqs_single %>%
filter(ARMCD == "ARM A")
conf_level <- 0.95
# Internal function - s_ancova
if (FALSE) {
s_ancova(df, .var, .df_row, variables, .ref_group, .in_ref_col = FALSE, conf_level)
}
# Internal function - a_ancova
if (FALSE) {
a_ancova(df, .var, .df_row, variables, .ref_group, .in_ref_col = FALSE, conf_level)
}
library(scda)
library(rtables)
library(dplyr)
adsl <- synthetic_cdisc_data("latest")$adsl
adqs <- synthetic_cdisc_data("latest")$adqs
adqs_single <- adqs %>%
filter(
AVISIT == "WEEK 1 DAY 8", # single time point
PARAMCD == "FKSI-FWB" # single end point
) %>%
mutate(CHG = ifelse(BMEASIFL == "Y", CHG, NA)) # only analyze evaluable population
adqs_multi <- adqs %>%
filter(AVISIT == "WEEK 1 DAY 8")
basic_table() %>%
split_cols_by("ARMCD", ref_group = "ARM A") %>%
add_colcounts() %>%
summarize_ancova(
vars = "CHG",
variables = list(arm = "ARMCD", covariates = NULL),
table_names = "unadj",
conf_level = 0.95, var_labels = "Unadjusted comparison",
.labels = c(lsmean = "Mean", lsmean_diff = "Difference in Means")
) %>%
summarize_ancova(
vars = "CHG",
variables = list(arm = "ARMCD", covariates = c("BASE", "STRATA1")),
table_names = "adj",
conf_level = 0.95, var_labels = "Adjusted comparison (covariates BASE and STRATA1)"
) %>%
build_table(adqs_single, alt_counts_df = adsl)
#> ARM A ARM B ARM C
#> (N=134) (N=134) (N=132)
#> ———————————————————————————————————————————————————————————————————————————————————————————
#> Unadjusted comparison
#> n 68 73 62
#> Mean 3.68 5.07 3.09
#> Difference in Means 1.38 -0.59
#> 95% CI (-2.76, 5.53) (-4.91, 3.73)
#> p-value 0.5113 0.7873
#> Adjusted comparison (covariates BASE and STRATA1)
#> n 68 73 62
#> Adjusted Mean 4.06 3.57 3.34
#> Difference in Adjusted Means -0.49 -0.72
#> 95% CI (-3.28, 2.29) (-3.57, 2.12)
#> p-value 0.7277 0.6165
if (FALSE) {
basic_table() %>%
split_cols_by("ARMCD", ref_group = "ARM A") %>%
split_rows_by("PARAMCD") %>%
summarize_ancova(
vars = "CHG",
variables = list(arm = "ARMCD", covariates = c("BASE", "STRATA1")),
conf_level = 0.95, var_labels = "Adjusted mean"
) %>%
build_table(adqs_multi, alt_counts_df = adsl)
}