Get standardized estimates using the g-formula with and separate models for each exposure level in the data
standardize_level(
fitter_list,
arguments,
predict_fun_list,
data,
values,
B = NULL,
ci_level = 0.95,
contrasts = NULL,
reference = NULL,
seed = NULL,
times = NULL,
transforms = NULL,
progressbar = TRUE
)
An object of class std_custom
. Obtain numeric results using tidy.std_custom.
This is a list with the following components:
An unnamed list with one element for each of the requested contrasts. Each element is itself a list with the elements:
The number of bootstrap replicates
Estimated counterfactual means and standard errors for each exposure level
The estimated regression model for the outcome
A list of estimates, one for each bootstrap resample
A character vector of the exposure variable names
The vector of times at which the calculation is done, if relevant
Data.frame of the estimates of the contrast with inference
The transform argument used for this contrast
The requested contrast type
The reference level of the exposure
Confidence interval level
A named list with the elements:
The number of bootstrap replicates
Estimated counterfactual means and standard errors for each exposure level
The estimated regression model for the outcome
A list of estimates, one for each bootstrap resample
A character vector of the exposure variable names
The vector of times at which the calculation is done, if relevant
The function to call to fit the data (as a list).
The arguments to be used in the fitter function as a list
.
The function used to predict the means/probabilities for a new data set on the response level. For survival data, this should be a matrix where each column is the time, and each row the data (as a list).
The data.
A named list or data.frame specifying the variables and values at which marginal means of the outcome will be estimated.
Number of nonparametric bootstrap resamples. Default is NULL
(no bootstrap).
Coverage probability of confidence intervals.
A vector of contrasts in the following format:
If set to "difference"
or "ratio"
, then reference
argument. Has to be NULL
if no references are specified.
A vector of reference levels in the following format:
If contrasts
is not NULL
, the desired reference level(s). This
must be a vector or list the same length as contrasts
, and if not named,
it is assumed that the order is as specified in contrasts.
The seed to use with the nonparametric bootstrap.
For use with survival data. Set to NULL
otherwise.
A vector of transforms in the following format:
If set to "log"
, "logit"
, or "odds"
, the standardized
mean NULL
, then
Logical, if TRUE will print bootstrapping progress to the console
See standardize
. The difference is here that different models
can be fitted for each value of x
in values
.
Rothman K.J., Greenland S., Lash T.L. (2008). Modern Epidemiology, 3rd edition. Lippincott, Williams & Wilkins.
Sjölander A. (2016). Regression standardization with the R-package stdReg. European Journal of Epidemiology 31(6), 563-574.
Sjölander A. (2016). Estimation of causal effect measures with the R-package stdReg. European Journal of Epidemiology 33(9), 847-858.
require(survival)
prob_predict.coxph <- function(object, newdata, times) {
fit.detail <- suppressWarnings(basehaz(object))
cum.haz <- fit.detail$hazard[sapply(times, function(x) max(which(fit.detail$time <= x)))]
predX <- predict(object = object, newdata = newdata, type = "risk")
res <- matrix(NA, ncol = length(times), nrow = length(predX))
for (ti in seq_len(length(times))) {
res[, ti] <- exp(-predX * cum.haz[ti])
}
res
}
set.seed(68)
n <- 500
Z <- rnorm(n)
X <- rbinom(n, 1, prob = 0.5)
T <- rexp(n, rate = exp(X + Z + X * Z)) # survival time
C <- rexp(n, rate = exp(X + Z + X * Z)) # censoring time
U <- pmin(T, C) # time at risk
D <- as.numeric(T < C) # event indicator
dd <- data.frame(Z, X, U, D)
x <- standardize_level(
fitter_list = list("coxph", "coxph"),
arguments = list(
list(
formula = Surv(U, D) ~ X + Z + X * Z,
method = "breslow",
x = TRUE,
y = TRUE
),
list(
formula = Surv(U, D) ~ X,
method = "breslow",
x = TRUE,
y = TRUE
)
),
predict_fun_list = list(prob_predict.coxph, prob_predict.coxph),
data = dd,
times = seq(1, 5, 0.1),
values = list(X = c(0, 1)),
B = 100,
reference = 0,
contrasts = "difference"
)
print(x)
Run the code above in your browser using DataLab