Title: | Estimation of Vaccine Efficacy using Negative Control Outcomes |
---|---|
Description: | Methods to reduce confounding bias from unmeasured confounders in observational studies of vaccine efficacy using negative control outcomes. |
Authors: | Lola Etievant [aut], Mitchell H. Gail [aut], Joshua N. Sampson [aut], Bill Wheeler [cre] |
Maintainer: | Bill Wheeler <[email protected]> |
License: | GPL-2 |
Version: | 0.0.6 |
Built: | 2024-11-13 02:56:39 UTC |
Source: | https://github.com/cran/NegativeControlOutcomeAdjustment |
This package uses observational cohort data from a secondary outcome Y2, and from measured strata indicator confounders W, to adjust estimates of the log-relative risk of a binary outcome Y1 with a binary exposure T. Adjustment for Y2 reduces bias by unmeasured confounders. A key assumption is that Y2 is not affected by T ("negative control outcome"). Another key assumption is that effects of unmeasured confounders on Y1 are proportional to their effects on Y2. This work was motivated by studies of vaccine efficacy against vaccine-targeted strains in which measurements of infection against several non-vaccine-targeted strains are also available. In such study, Y1 would typically be the indicator of infection with a given vaccine-targeted strain, or the indicator of infection with at least one of several vaccine-targeted strains, and Y2 would be the total number of infections with the non-vaccine-targeted strains.
Y1 is coded 0 or 1 for absence or presence of the event (e.g. infection with one given vaccine-targeted strain, or infection with at least one vaccine-targeted strain). Y2 is coded with non-negative integers for the total number of events. T is coded 0 for unexposed (e.g. received placebo) and 1 for exposed (e.g. received vaccine). W is a stratification indicator covering K possible strata. It can be entered as a factor, vector, matrix, or data frame.
The package includes three methods: Joint-NC, Joint-MH, and SS-Joint. If there are many strata, the program recommends using the Joint-MH method, which works with many, possibly sparse, strata. If there are only a few large strata, the SS-Joint method can be used, which makes fewer assumptions. If W is null (i.e. there are no data on measured strata), the Joint-NC method can be used.
Lola Etievant, Mitchell H. Gail, Joshua N Sampson
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
A simulated toy data set mimicking data from a vaccine trial.
A data frame consisting of 1000 subjects with primary outcome of interest (Y1
)
as infected with HPV type 16, secondary outcome (Y2
) as
the total number of infections with 20 non-targeted HPV types,
vaccine assignment (T
), and two categorical covariates Age
and Region
with 13 and 3 levels respectively.
negativeControlOutcomeAdjustment
data(data, package="NegativeControlOutcomeAdjustment") # Display some of the data data[1:5, ]
data(data, package="NegativeControlOutcomeAdjustment") # Display some of the data data[1:5, ]
Reducing confounding bias in observational studies of vaccine efficacy using negative control outcomes
negativeControlOutcomeAdjustment(Y1, Y2, Trt, W=NULL, method=c("Joint-MH", "Joint-NC", "SS-Joint"), minObsPerStrata=20)
negativeControlOutcomeAdjustment(Y1, Y2, Trt, W=NULL, method=c("Joint-MH", "Joint-NC", "SS-Joint"), minObsPerStrata=20)
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 |
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.
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.
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
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)
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)