Summarize results of a Poisson Negative Binomial Regression. This can be used to analyze count and/or frequency data using a linear model.
Usage
s_glm_count(
df,
.var,
.df_row,
variables,
.ref_group,
.in_ref_col,
distribution,
conf_level,
rate_mean_method,
weights,
scale = 1
)
a_glm_count(
df,
.var,
.df_row,
variables,
.ref_group,
.in_ref_col,
distribution,
conf_level,
rate_mean_method,
weights,
scale = 1
)
summarize_glm_count(
lyt,
vars,
var_labels,
nested = TRUE,
...,
show_labels = "visible",
table_names = vars,
.stats = NULL,
.formats = NULL,
.labels = NULL,
.indent_mods = NULL
)
Arguments
- df
(
data.frame
)
data set containing all analysis variables.- .var
(
string
)
single variable name that is passed byrtables
when requested by a statistics function.- .df_row
(
data.frame
)
data frame across all of the columns for the given row split.- variables
(named
list
ofstring
)
list of additional 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.- distribution
(
character
)
a character value specifying the distribution used in the regression (poisson, quasipoisson).- conf_level
(
proportion
)
confidence level of the interval.- weights
(
character
)
a character vector specifying weights used in averaging predictions. Number of weights must equal the number of levels included in the covariates. Weights option passed toemmeans::emmeans()
.- 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
)
character for label.- nested
(
flag
)
whether this layout instruction should be applied within the existing layout structure if possible (TRUE
, the default) or as a new top-level element (FALSE
). Ignored if it would nest a split. underneath analyses, which is not allowed.- ...
additional arguments for the lower level functions.
- show_labels
(
string
)
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. See Details inanalyze_vars
for more information on the"auto"
setting.- .labels
(named
character
)
labels for the statistics (without indent).- .indent_mods
(named
integer
)
indent modifiers for the labels. Defaults to 0, which corresponds to the unmodified default behavior. Can be negative.
Value
-
s_glm_count()
returns a namedlist
of 5 statistics:n
: Count of complete sample size for the group.rate
: Estimated event rate per follow-up time.rate_ci
: Confidence level for estimated rate per follow-up time.rate_ratio
: Ratio of event rates in each treatment arm to the reference arm.rate_ratio_ci
: Confidence level for the rate ratio.pval
: p-value.
a_glm_count()
returns the corresponding list with formattedrtables::CellValue()
.
summarize_glm_count()
returns a layout object suitable for passing to further layouting functions, or tortables::build_table()
. Adding this function to anrtable
layout will add formatted rows containing the statistics froms_glm_count()
to the table layout.
Functions
s_glm_count()
: Statistics function that produces a named list of results of the investigated Poisson model.a_glm_count()
: Formatted analysis function which is used asafun
insummarize_glm_count()
.summarize_glm_count()
: Layout-creating function which can take statistics function arguments and additional format arguments. This function is a wrapper forrtables::analyze()
.
Examples
library(dplyr)
anl <- tern_ex_adtte %>% filter(PARAMCD == "TNE")
anl$AVAL_f <- as.factor(anl$AVAL)
lyt <- basic_table() %>%
split_cols_by("ARM", ref_group = "B: Placebo") %>%
add_colcounts() %>%
analyze_vars(
"AVAL_f",
var_labels = "Number of exacerbations per patient",
.stats = c("count_fraction"),
.formats = c("count_fraction" = "xx (xx.xx%)"),
.label = c("Number of exacerbations per patient")
) %>%
summarize_glm_count(
vars = "AVAL",
variables = list(arm = "ARM", offset = "lgTMATRSK", covariates = NULL),
conf_level = 0.95,
distribution = "poisson",
rate_mean_method = "emmeans",
var_labels = "Unadjusted exacerbation rate (per year)",
table_names = "unadj",
.stats = c("rate"),
.labels = c(rate = "Rate")
) %>%
summarize_glm_count(
vars = "AVAL",
variables = list(arm = "ARM", offset = "lgTMATRSK", covariates = c("REGION1")),
conf_level = 0.95,
distribution = "quasipoisson",
rate_mean_method = "ppmeans",
var_labels = "Adjusted (QP) exacerbation rate (per year)",
table_names = "adj",
.stats = c("rate", "rate_ci", "rate_ratio", "rate_ratio_ci", "pval"),
.labels = c(
rate = "Rate", rate_ci = "Rate CI", rate_ratio = "Rate Ratio",
rate_ratio_ci = "Rate Ratio CI", pval = "p value"
)
)
build_table(lyt = lyt, df = anl)
#> B: Placebo A: Drug X C: Combination
#> (N=73) (N=69) (N=58)
#> ———————————————————————————————————————————————————————————————————————————————————————————————————
#> Number of exacerbations per patient
#> 0 8 (10.96%) 3 (4.35%) 6 (10.34%)
#> 1 9 (12.33%) 11 (15.94%) 6 (10.34%)
#> 2 15 (20.55%) 18 (26.09%) 9 (15.52%)
#> 3 11 (15.07%) 14 (20.29%) 15 (25.86%)
#> 4 9 (12.33%) 10 (14.49%) 9 (15.52%)
#> 5 9 (12.33%) 7 (10.14%) 8 (13.79%)
#> 6 4 (5.48%) 4 (5.80%) 4 (6.90%)
#> 7 8 (10.96%) 2 (2.90%) 0 (0.00%)
#> 10 0 (0.00%) 0 (0.00%) 1 (1.72%)
#> Unadjusted exacerbation rate (per year)
#> Rate 9.1554 8.2061 7.8551
#> Adjusted (QP) exacerbation rate (per year)
#> Rate 3.4860 3.1214 2.6152
#> Rate CI (1.9833, 6.1272) (1.7307, 5.6294) (1.3661, 5.0065)
#> Rate Ratio 0.8954 0.7502
#> Rate Ratio CI (0.3975, 2.0170) (0.3067, 1.8348)
#> p value 0.7897 0.5288