Skip to contents

Simple sensitivity analysis to correct for unknown or unmeasured polychotomous (3-level) confounding without effect modification. Implementation for ratio measures (relative risk -- RR, or odds ratio -- OR) and difference measures (risk difference -- RD).

Usage

confounders.poly(
  case,
  exposed,
  type = c("RR", "OR", "RD"),
  bias_parms = NULL,
  alpha = 0.05
)

Arguments

case

Outcome variable. If a variable, this variable is tabulated against.

exposed

Exposure variable.

type

Choice of implementation, with no effect measure modification for ratio measures (relative risk -- RR; odds ratio -- OR) or difference measures (risk difference -- RD).

bias_parms

Numeric vector defining the bias parameters. This vector has 6 elements, in the following order:

  1. the association between the highest level confounder and the outcome,

  2. the association between the mid-level confounder and the outcome,

  3. the prevalence of the highest level confounder among the exposed (between 0 and 1),

  4. the prevalence of the highest level confounder among the unexposed (between 0 and 1),

  5. the prevalence of the mid-level confounder among the exposed (between 0 and 1), and

  6. the prevalence of the mid-level confounder among the unexposed (between 0 and 1).

alpha

Significance level.

Value

A list with elements:

obs.data

The analyzed 2 x 2 table from the observed data.

cfder1.data

The same table for Mid-level Confounder +.

cfder2.data

The same table for Highest-level Confounder +.

nocfder.data

The same table for Confounder -.

obs.measures

A table of relative risk with confidence intervals; Total and by confounders.

adj.measures

A table of Standardized Morbidity Ratio and Mantel-Haenszel estimates.

bias.parms

Input bias parameters.

References

Lash, T.L., Fox, M.P, Fink, A.K., 2009 Applying Quantitative Bias Analysis to Epidemiologic Data, pp.59--78, Springer.

Examples

# The data for this example come from:
# Tyndall M.W., Ronald A.R., Agoki E., Malisa W., Bwayo J.J., Ndinya-Achola J.O.
# et al.
# Increased risk of infection with human immunodeficiency virus type 1 among
# uncircumcised men presenting with genital ulcer disease in Kenya.
# Clin Infect Dis 1996;23:449-53.
confounders.poly(matrix(c(105, 85, 527, 93),
dimnames = list(c("HIV+", "HIV-"), c("Circ+", "Circ-")),
nrow = 2, byrow = TRUE),
type = "RR",
bias_parms = c(.4, .8, .6, .05, .2, .2))
#> --Observed data-- 
#>          Outcome: HIV+ 
#>        Comparing: Circ+ vs. Circ- 
#> 
#>      Circ+ Circ-
#> HIV+   105    85
#> HIV-   527    93
#> 
#>                                                            2.5%     97.5%
#>                        Crude Relative Risk: 0.3479151 0.2757026 0.4390417
#> Relative Risk, Confounder +, Highest Level: 0.5392684                    
#>     Relative Risk, Confounder +, Mid-Level: 0.5392684                    
#>                Relative Risk, Confounder -: 0.5392684                    
#> ---
#>                                         Adjusted RR
#> Standardized Morbidity Ratio: 0.5392684   0.6451613
#>              Mantel-Haenszel: 0.5392684   0.6451613

confounders.poly(matrix(c(105, 85, 527, 93),
dimnames = list(c("HIV+", "HIV-"), c("Circ+", "Circ-")),
nrow = 2, byrow = TRUE),
type = "OR",
bias_parms = c(.4, .8, .6, .05, .2, .2))
#> --Observed data-- 
#>          Outcome: HIV+ 
#>        Comparing: Circ+ vs. Circ- 
#> 
#>      Circ+ Circ-
#> HIV+   105    85
#> HIV-   527    93
#> 
#>                                                         2.5%     97.5%
#>                        Crude Odds Ratio: 0.2179931 0.1519254 0.3127916
#> Odds Ratio, Confounder +, Highest Level: 0.3378893                    
#>     Odds Ratio, Confounder +, Mid-Level: 0.3378893                    
#>                Odds Ratio, Confounder -: 0.3378893                    
#> ---
#>                                         Adjusted OR
#> Standardized Morbidity Ratio: 0.3378893   0.6451613
#>              Mantel-Haenszel: 0.3378893   0.6451613

confounders.poly(matrix(c(105, 85, 527, 93),
dimnames = list(c("HIV+", "HIV-"), c("Circ+", "Circ-")),
nrow = 2, byrow = TRUE),
type = "RD",
bias_parms = c(-.4, -.2, .6, .05, .2, .2))
#> --Observed data-- 
#>          Outcome: HIV+ 
#>        Comparing: Circ+ vs. Circ- 
#> 
#>      Circ+ Circ-
#> HIV+   105    85
#> HIV-   527    93
#> 
#>                                                                  2.5%
#>                        Crude Risk Difference: -0.31138885 -0.39029685
#> Risk Difference, Confounder +, Highest Level: -0.09138885            
#>     Risk Difference, Confounder +, Mid-Level: -0.09138885            
#>                Risk Difference, Confounder -: -0.09138885            
#>                                                     97.5%
#>                        Crude Risk Difference: -0.23248085
#> Risk Difference, Confounder +, Highest Level:            
#>     Risk Difference, Confounder +, Mid-Level:            
#>                Risk Difference, Confounder -:            
#> ---
#>                              Adjusted RD
#> Mantel-Haenszel: -0.09138885 -0.22000000