The analysis function [a_proportion_diff_j()] can be used to create a layout element to estimate the difference in proportion of responders within a studied population. The primary analysis variable, `vars`, is a logical variable indicating whether a response has occurred for each record. See the `method` parameter for options of methods to use when constructing the confidence interval of the proportion difference. A stratification variable can be supplied via the `strata` element of the `variables` argument.
Usage
a_proportion_diff_j(
df,
.var,
ref_path,
.spl_context,
...,
.stats = NULL,
.formats = NULL,
.labels = NULL,
.indent_mods = NULL
)
s_proportion_diff_j(
df,
.var,
.ref_group,
.in_ref_col,
variables = list(strata = NULL),
conf_level = 0.95,
method = c("waldcc", "wald", "cmh", "ha", "newcombe", "newcombecc", "strat_newcombe",
"strat_newcombecc"),
weights_method = "cmh"
)
Arguments
- df
(`data.frame`)
input data frame.- .var
(`string`)
name of the response variable.- ref_path
(`character`)
path to the reference group.- .spl_context
(`environment`)
split context environment.- ...
Additional arguments passed to the statistics function.
- .stats
(`character`)
statistics to calculate.- .formats
(`list`)
formats for the statistics.- .labels
(`list`)
labels for the statistics.- .indent_mods
(`list`)
indentation modifications for the statistics.- .ref_group
(`data.frame`)
reference group data frame.- .in_ref_col
(`logical`)
whether the current column is the reference column.- variables
(`list`)
list with strata variable names.- conf_level
(`numeric`)
confidence level for the confidence interval.- method
(`string`)
method to use for confidence interval calculation.- weights_method
(`string`)
method to use for weights calculation in stratified analysis.
Value
* `a_proportion_diff_j()` returns the corresponding list with formatted [rtables::CellValue()].
* `s_proportion_diff_j()` returns a named list of elements `diff`, `diff_ci`, `diff_est_ci` and `diff_ci_3d`.
Functions
a_proportion_diff_j()
: Formatted analysis function which is used as `afun` in `estimate_proportion_diff()`.s_proportion_diff_j()
: Statistics function estimating the difference in terms of responder proportion.
Note
The [a_proportion_diff_j()] function has the `_j` suffix to distinguish it from [tern::a_proportion_diff()]. The functions here are a copy from the `tern` package with additional features:
* Additional statistic `diff_est_ci` is returned. * `ref_path` needs to be provided as extra argument to specify the control group column.
When performing an unstratified analysis, methods `'cmh'`, `'strat_newcombe'`, and `'strat_newcombecc'` are not permitted.
Examples
## 'Mid' case: 4/4 respond in group A, 1/2 respond in group B.
nex <- 100 # Number of example rows
dta <- data.frame(
'rsp' = sample(c(TRUE, FALSE), nex, TRUE),
'grp' = sample(c('A', 'B'), nex, TRUE),
'f1' = sample(c('a1', 'a2'), nex, TRUE),
'f2' = sample(c('x', 'y', 'z'), nex, TRUE),
stringsAsFactors = TRUE
)
l <- basic_table() |>
split_cols_by(var = 'grp') |>
analyze(
vars = 'rsp',
afun = a_proportion_diff_j,
show_labels = "hidden",
na_str = tern::default_na_str(),
extra_args = list(
conf_level = 0.9,
method = 'ha',
ref_path = c('grp', 'B')
)
)
build_table(l, df = dta)
#> A B
#> ———————————————————————————————————————————————————————
#> Difference in Response rate (%) 12.0
#> 90% CI (Anderson-Hauck) (-5.4, 29.4)
#> % Difference (90% CI) 12.0 (-5.4, 29.4)
s_proportion_diff_j(
df = subset(dta, grp == 'A'),
.var = 'rsp',
.ref_group = subset(dta, grp == 'B'),
.in_ref_col = FALSE,
conf_level = 0.90,
method = 'ha'
)
#> $diff
#> diff_ha
#> 12
#> attr(,"label")
#> [1] "Difference in Response rate (%)"
#>
#> $diff_ci
#> diff_ci_ha_l diff_ci_ha_u
#> -5.374519 29.374519
#> attr(,"label")
#> [1] "90% CI (Anderson-Hauck)"
#>
#> $diff_est_ci
#> diff_ha diff_ci_ha_l diff_ci_ha_u
#> 12.000000 -5.374519 29.374519
#> attr(,"label")
#> [1] "% Difference (90% CI)"
#>
#> $diff_ci_3d
#> diff_ha diff_ci_ha_l diff_ci_ha_u
#> 12.000000 -5.374519 29.374519
#> attr(,"label")
#> [1] "Relative Risk (90% CI)"
#>
# CMH example with strata
s_proportion_diff_j(
df = subset(dta, grp == 'A'),
.var = 'rsp',
.ref_group = subset(dta, grp == 'B'),
.in_ref_col = FALSE,
variables = list(strata = c('f1', 'f2')),
conf_level = 0.90,
method = 'cmh'
)
#> $diff
#> diff_cmh
#> 12.27932
#> attr(,"label")
#> [1] "Difference in Response rate (%)"
#>
#> $diff_ci
#> diff_ci_cmh_l diff_ci_cmh_u
#> -2.657093 27.215725
#> attr(,"label")
#> [1] "90% CI (CMH, without correction)"
#>
#> $diff_est_ci
#> diff_cmh diff_ci_cmh_l diff_ci_cmh_u
#> 12.279316 -2.657093 27.215725
#> attr(,"label")
#> [1] "% Difference (90% CI)"
#>
#> $diff_ci_3d
#> diff_cmh diff_ci_cmh_l diff_ci_cmh_u
#> 12.279316 -2.657093 27.215725
#> attr(,"label")
#> [1] "Relative Risk (90% CI)"
#>