negativeControlOutcomeAdjustment {NegativeControlOutcomeAdjustment} | R Documentation |
NegativeControlOutcomeAdjustment
Description
Reducing confounding bias in observational studies of vaccine efficacy using negative control outcomes
Usage
negativeControlOutcomeAdjustment(Y1, Y2, Trt, W=NULL,
method=c("Joint-MH", "Joint-NC", "SS-Joint"), minObsPerStrata=20)
Arguments
Y1 |
Binary vector for the outcome of interest. |
Y2 |
Numeric vector of natural numbers for the secondary outcome, which should be unaffected by the treatment. |
Trt |
Binary vector for the treatment. |
W |
Categorical confounders to define strata. |
method |
Any of |
minObsPerStrata |
Minimum number of observations within each stratum for the |
Details
Observations with missing or non-finite values will be removed from the data.
For the SS-Joint
method, strata that yield non-finite estimates
are removed from the calculations, and strata that contain
too few observations as defined by minObsPerStrata
above are removed.
Joint-MH
Joint-MH
reduces bias due to unmeasured confounders in the estimate of the primary
outcome relative risk, by using the treatment effect on the secondary outcome.
Joint-MH
first estimates jointly the effects of the treatment on the primary and
secondary outcomes from stratification (with Mantel-Haenszel-type weights) on the measured confounders,
and then uses the non-zero estimated effect on the secondary outcome to "subtract off" bias due to
unmeasured confounders. If the observed confounder used to stratify only has a few large strata,
method SS-Joint
could be used instead.
If information on observed confounders is not provided, method Joint-NC
is used instead.
Joint-NC
Joint-NC
reduces bias due to unmeasured confounders in the estimate of the primary outcome
log-relative risk, by using the treatment effect on the secondary outcome. Joint-NC
first estimates
jointly the effects of the treatment on the primary and secondary outcomes, by using log-links,
and then uses the non-zero estimated effect on the secondary outcome to "subtract off" bias due
to unmeasured confounders. Information on potential observed confounders is not used with this method.
SS-Joint
SS-Joint
applies method Joint-NC
within each stratum of the observed confounders,
in order to reduce bias due to unmeasured confounders in the primary outcome log-relative risk estimate.
More precisely, it estimates jointly the effects of the treatment on the primary and secondary outcomes,
by using log-links, within each stratum.
It then "subtracts off" the non-zero estimated effects on the secondary outcome from the estimated effects
on the primary outcome, respectively in each stratum.
SS-Joint
finally combines efficiently these stratum-specific estimates by taking a weighted combination,
with weights inversely proportional to their respective variances.
If no information on observed confounders is provided, method Joint-NC
is used instead.
If data is available on a categorical confounder, but with many possibly sparse strata,
we recommend using method Joint-MH
instead.
Value
A data frame with columns method
, beta_1.hat
, sd.beta_1.hat
, n.strata
and
error.message
, where beta_1.hat
is the "de-biased" estimate of the
treatment effect on Y1
,
sd.beta_1.hat
is the sandwich estimate for the standard deviation of beta_1.hat
,
and n.strata
is the number of strata used in the calculation.
References
Etievant, L., Sampson, J.N., Gail, M.H. (2022). Increasing efficiency and reducing bias when assessing HPV vaccination efficacy by using nontargeted HPV strains. Biometrics. 1-12. https://doi.org/10.1111/biom.13663
Examples
data(data, package="NegativeControlOutcomeAdjustment")
Y1 <- data[, "Y1"]
Y2 <- data[, "Y2"]
Trt <- data[, "T"]
# With no covariates, only the Joint-NC method is used
negativeControlOutcomeAdjustment(Y1, Y2, Trt)
# Age and Region define 39 strata, some of which have fewer than 20 observations.
# Other strata that lead to non-finite estimates in the SS-Joint method are also dropped.
# Warning messages will be issued in these situations.
tab <- table(interaction(data$Age, data$Region, drop=TRUE, sep="_"))
sum(tab < 20)
negativeControlOutcomeAdjustment(Y1, Y2, Trt, W=data[, c("Age", "Region")])
# Create two age groups; Age > 18 and Age <= 18 to reduce the number of strata to 6
Age <- as.numeric(data$Age > 18)
W <- interaction(Age, data$Region, sep="_", drop=TRUE)
negativeControlOutcomeAdjustment(Y1, Y2, Trt, W=W)