Contextualizing Sensitivity Analysis in Observational Studies: Calculating Bias Factors for Known Covariates |
|
|
Robert A Greevy, Jr. |
Strength of evidence provided by epidemiological and observational studies is limited by the potential of unmeasured confounding.
Include content-matter expertise
Anchor in your data
Calculate a hypothetical “tipping point” confounder
We recommend a tipping point method that builds on the Lin et al. method.
## devtools::install_github("LucyMcGowan/tipr")
tip_with_binary(p1 = .5, p0 = 0, lb = 1.2, ub = 1.5)In order to choose sensible values for tipping point analyses, these methods must be anchored and contextualized in the studies at hand. For this purpose, propose calculating “bias factors” of known covariates.
We extend the extensive research that has been done developing methods for assessing sensitivity to unmeasured confounding in observational studies (Cornfield et al. 1959, Bross (1966), Schlesselman (1978), Rosenbaum and Rubin (1983), Greenland (1996), Lin, Psaty, and Kronmal (1998), S. Schneeweiss (2006), StĂĽrmer et al. (2005), VanderWeele and Arah (2011), Peng Ding (2016)).
Imbalance of exposure
Predictive of outcome
Independent of other covariates
We calculate these bias factors by leaving known covariates out of the entire analysis process (both the propensity score model and the final analysis model). In the case of a binary response, such as is the case with logistic regression, a bias factor is the ratio of an observed result (OR) with and without a covariate present.
\[\frac{OR_{cov^-}}{OR_{cov^+}}\]
Where \(OR_{cov^-}\) is the odds ratio for the effect of the exposure and outcome without the covariate present in the analysis, and \(OR_{cov^+}\) is the odds ratio for the effect of the exposure and outcome with the covariate present in the analysis.
We then graphically display the impact of each of the covariates along with an indication of our sensitivity analysis parameters.
In addition to the display, we will demonstrate how observed bias factors compare in three design contexts, (1) matching weights with additional direct covariate adjustment, (2) matching weights without additional direct covariate adjustment, and (3) direct covariate adjustment only.
As an example, we use the Right Heart Catheterization dataset, originally used in Connors et al (Connors et al. 1996). We use 50 covariates to estimate the propensity of being assigned to right heart catheterization. We then fit the full analysis, leaving out one covariate at a time. Each time we estimate the effect of the exposure, right heart catheterization, on the outcome, 30 day survival, and compare it to the estimate with the fully specified analysis.
Figure 1 shows an example of the results from the weighted analysis. While many covariates do not cause much change in the result, a few, such as pafi, the PaO2/FIO2 ratio, dnr1, the DNR status on day 1, and surv2md1, the Support model estimate of the prob. of surviving 2 months, seem to. We believe insights such as these will help ground sensitivity to unmeasured confounding analyses for observational study research.
R Packages
JJ Allaire (2016). flexdashboard: R Markdown Format for Flexible Dashboards. R package version 0.3.
https://CRAN.R-project.org/package=flexdashboard
Winston Chang, Joe Cheng, JJ Allaire, Yihui Xie and Jonathan McPherson (2017). shiny: Web Application Framework for R. R package version 1.0.3. https://CRAN.R-project.org/package=shiny
Kazuki Yoshida and Justin Bohn. (2015). tableone: Create “Table 1” to Describe Baseline Characteristics. R package version 0.7.3. https://CRAN.R-project.org/package=tableone
T. Lumley (2014) “survey: analysis of complex survey samples”. R package version 3.30.
T. Lumley (2004) Analysis of complex survey samples. Journal of Statistical Software 9(1): 1-19
H. Wickham. ggplot2: Elegant Graphics for Data Analysis. Springer-Verlag New York, 2009.
R Core Team (2017). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. URL https://www.R-project.org/.
Baptiste Auguie (2016). gridExtra: Miscellaneous Functions for “Grid” Graphics. R package version 2.2.1. https://CRAN.R-project.org/package=gridExtra
References
Bross, IDJ. 1966. “Spurious effects from an extraneous variable.” Journal of Chronic Diseases.
Connors, A F, T Speroff, N V Dawson, and C Thomas. 1996. “The effectiveness of right heart catheterization in the initial care of critically III patients.” Jama.
Cornfield, J, W Haenszel, E C Hammond, A M Lilienfeld, M B Shimkin, and E L Wynder. 1959. “Smoking and lung cancer: recent evidence and a discussion of some questions.” Journal of the National Cancer Institute 22 (1): 173–203.
Greenland, S. 1996. “Basic methods for sensitivity analysis of biases.” International Journal of Epidemiology.
Lin, D Y, B M Psaty, and R A Kronmal. 1998. “Assessing the sensitivity of regression results to unmeasured confounders in observational studies.” Biometrics 54 (3): 948–63.
Peng Ding, Tyler J VanderWeele. 2016. “Sensitivity Analysis Without Assumptions.” Epidemiology (Cambridge, Mass.) 27 (3): 368–77.
Rosenbaum, P R, and D B Rubin. 1983. “Assessing sensitivity to an unobserved binary covariate in an observational study with binary outcome.” Journal of the Royal Statistical Society Series B ….
Schlesselman, J J. 1978. “Assessing effects of confounding variables.” American Journal of Epidemiology 108 (1): 3–8.
Schneeweiss, S. 2006. “Sensitivity analysis and external adjustment for unmeasured confounders in epidemiologic database studies of therapeutics.” Pharmacoepidemiology and Drug Safety.
Stürmer, Til, Sebastian Schneeweiss, Jerry Avorn, and Robert J Glynn. 2005. “Adjusting Effect Estimates for Unmeasured Confounding with Validation Data using Propensity Score Calibration.” American Journal of Epidemiology 162 (3): 279–89.
VanderWeele, Tyler J, and Onyebuchi A Arah. 2011. “Bias Formulas for Sensitivity Analysis of Unmeasured Confounding for General Outcomes, Treatments, and Confounders.” Epidemiology 22 (1): 42–52.
---
title: "Contextualizing Sensitivity Analysis in Observational Studies: Calculating Bias Factors for Known Covariates"
author: "
Lucy D'Agostino McGowan"
logo: img/logo.png
output:
flexdashboard::flex_dashboard:
self_contained: true
orientation: rows
source: embed
css: my_style.css
bibliography: ../../tutorial-manuscript.bib
---
```{r setup, include=FALSE}
library(package = flexdashboard)
library(package = tidyverse)
# Setup knitr
knitr::opts_chunk$set(
echo = FALSE, message = FALSE, warning = FALSE,
# Save all figures in the output dir, you have to include them explicitly
# with an
tag
fig.path = "../output/img/", fig.show = "hide"
)
```
## Row 1 {data-height=25}
###
**Contextualizing Sensitivity Analysis in Observational Studies: Calculating Bias Factors for Known Covariates**
Lucy D'Agostino McGowan
Robert A Greevy, Jr.
## Row 2 {data-height=60}
### **Background**
_Strength of evidence provided by epidemiological and observational studies is limited by the potential of **unmeasured confounding**._
---
#### Our Recommendation
Include content-matter expertise
Anchor in your data
Calculate a hypothetical "**tipping point**" confounder
---
We recommend a [**tipping point method**](http://rpubs.com/lucymcgowan/enar2017) that builds on the Lin et al. method.
```r
## devtools::install_github("LucyMcGowan/tipr")
tip_with_binary(p1 = .5, p0 = 0, lb = 1.2, ub = 1.5)
```
* In order to choose sensible values for tipping point analyses, these methods must be anchored and contextualized in the studies at hand. For this purpose, propose calculating **“bias factors”** of known covariates.
* We extend the extensive research that has been done developing methods for assessing sensitivity to unmeasured confounding in observational studies [@Cornfield, @Bross, @Schlesselman, @Rosenbaum:1983, @Greenland, @Lin, @Schneeweiss, @Sturmer:2005bc, @VanderWeele:2011es, @Ding].
### **Plot**
#### Figure 1. Visual representation of bias in the Right Heart Catheterization Study.
### **Methods**
#### Qualities of meaningful confounders
Imbalance of **exposure**
Predictive of **outcome**
Independent of **other covariates**
***
We calculate these bias factors by leaving known covariates out of the entire analysis process (both the propensity score model and the final analysis model). In the case of a binary response, such as is the case with logistic regression, a bias factor is the ratio of an observed result (OR) with and without a covariate present.
$$\frac{OR_{cov^-}}{OR_{cov^+}}$$
Where $OR_{cov^-}$ is the odds ratio for the effect of the exposure and outcome without the covariate present in the analysis, and $OR_{cov^+}$ is the odds ratio for the effect of the exposure and outcome with the covariate present in the analysis.
We then graphically display the impact of each of the covariates along with an indication of our sensitivity analysis parameters.
In addition to the display, we will demonstrate how observed bias factors compare in three design contexts, (1) matching weights with additional direct covariate adjustment, (2) matching weights without additional direct covariate adjustment, and (3) direct covariate adjustment only.
## Row 3 {data-height=15}
### **Results** {data-width=50}
As an example, we use the Right Heart Catheterization [dataset](http://biostat.mc.vanderbilt.edu/wiki/Main/DataSets), originally used in Connors et al [@Connors:1996un]. We use 50 covariates to estimate the propensity of being assigned to right heart catheterization. We then fit the full analysis, leaving out one covariate at a time. Each time we estimate the effect of the exposure, right heart catheterization, on the outcome, 30 day survival, and compare it to the estimate with the fully specified analysis.
Figure 1 shows an example of the results from the weighted analysis. While many covariates do not cause much change in the result, a few, such as `pafi`, the PaO2/FIO2 ratio, `dnr1`, the DNR status on day 1, and `surv2md1`, the Support model estimate of the prob. of surviving 2 months, seem to. We believe insights such as these will help ground sensitivity to unmeasured confounding analyses for observational study research.
### **Thank you** {data-width=50}
#### Lucy D'Agostino McGowan
ld.mcgowan@vanderbilt.edu
\@LucyMcGowan
\@LucyStats
**R Packages**
JJ Allaire (2016). flexdashboard: R Markdown Format for Flexible
Dashboards. R package version 0.3.
https://CRAN.R-project.org/package=flexdashboard
Winston Chang, Joe Cheng, JJ Allaire, Yihui Xie and Jonathan
McPherson (2017). shiny: Web Application Framework for R. R package
version 1.0.3. https://CRAN.R-project.org/package=shiny
Kazuki Yoshida and Justin Bohn. (2015). tableone: Create "Table 1"
to Describe Baseline Characteristics. R package version 0.7.3.
https://CRAN.R-project.org/package=tableone
T. Lumley (2014) "survey: analysis of complex survey samples". R
package version 3.30.
T. Lumley (2004) Analysis of complex survey samples. Journal of
Statistical Software 9(1): 1-19
H. Wickham. ggplot2: Elegant Graphics for Data Analysis.
Springer-Verlag New York, 2009.
R Core Team (2017). R: A language and environment for statistical
computing. R Foundation for Statistical Computing, Vienna, Austria.
URL https://www.R-project.org/.
Baptiste Auguie (2016). gridExtra: Miscellaneous Functions for
"Grid" Graphics. R package version 2.2.1.
https://CRAN.R-project.org/package=gridExtra
**References**