Description Usage Arguments Value Note Examples
This function performs inverse probability weighting of two or more strata.
It could be used when arm1 has 2 or more strata, while stratum information is unknown in arm2.
The function will fit a logistic regression (when 2 classes) or multinomial logistic
regression (when > 2 classes) based on stratum labels in arm1 (model: label ~ features), then
predict stratum labels for pts in arm2 based on the fitted model (as well as pts in arm1 who have missing labels,
if there is any).
The predicted probability of being stratum X will be used as weights when estimating treatment difference of two arms
(Hazard ratio for survival endpoint; response rate difference for binary endpoint)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
data.in |
( |
formula |
( |
indicator.var |
( |
class.of.int |
( |
tte |
( |
event |
( |
trt |
( |
response |
( |
model |
(
|
indicator.next |
( |
weights |
( |
multinom.maxit |
see parameter |
return.data |
( |
return a list
containing the following components:
stat a matrix
with rows as strata and columns as Estimate and CIs.
converged logical
to indicate whether model converges.
any_warning_glm logical
to indicate whether there's warning from glm model.
warning.msg a list
to capture any warning message from the modeling process.
models a list
to capture the glm model results.
roc.list a list
to capture information about Area under the curve from glm model.
data a data.frame
which is the original input data plus predicted probabilities.
Three elements in the output list - the data element is a data frame that contains input data and
estimated probabilities. The stat element contains estimated treatment difference between 2 arms,
in each of the strata of interest.
The converge element indicates whether the model converged (taking from $converged from stats::glm
and $convergency from nnet::multinom).
if return.data is FALSE
, data won't be returned.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# example 1: Impute NA as one stratum in experimental arm; default model
library(dplyr)
clinical_1 <- clinical %>% mutate(
indicator = case_when(
STRATUM == "strata_1" ~ 0,
STRATUM == "strata_2" ~ 1,
is.na(STRATUM) & ARM == "experimental" ~ 1,
TRUE ~ -1
),
ARM = factor(ARM, levels = c("control","experimental")),
BNLR = case_when(
is.na(BNLR) ~ median(BNLR, na.rm = TRUE),
TRUE ~ BNLR
)
)
ipw_res1 <- ipw_strata(
data.in = clinical_1, formula = indicator ~ BECOG + SEX + BNLR,
indicator.var = "indicator", tte = "OS_MONTH", event = "OS_EVENT", trt = "ARM",
class.of.int = list("strata_1" = 1, "strata_2" = 0)
)
## Weighted HRs
ipw_res1$stat
# example 2: "Weight regression imputation" model
clinical_2 <- clinical %>% mutate(
indicator = case_when(
STRATUM == "strata_1" ~ 0,
STRATUM == "strata_2" ~ 1,
is.na(STRATUM) & ARM == "experimental" ~ 2,
TRUE ~ -1
),
indicator_next = case_when(
STRATUM_NEXT == "strata_1" ~ 0,
STRATUM_NEXT == "strata_2" ~ 1,
is.na(STRATUM_NEXT) & ARM == "experimental" ~ 2,
TRUE ~ -1
),
ARM = factor(ARM, levels = c("control","experimental")),
BNLR = case_when(
is.na(BNLR) ~ median(BNLR, na.rm = TRUE),
TRUE ~ BNLR
)
)
ipw_res2 <- ipw_strata(
data.in = clinical_2, formula = indicator ~ BECOG + SEX + BNLR, model = "wri",
indicator.var = "indicator", indicator.next = "indicator_next",
tte = "OS_MONTH", event = "OS_EVENT", trt = "ARM",
class.of.int = list("strata_1" = 1, "strata_2" = 0)
)
## Weighted HRs
ipw_res2$stat
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.