
Probabilistic sensitivity analysis for unmeasured confounding of person-time data and random error.
Source:R/probsens.irr.conf.R
probsens.irr.conf.Rd
Probabilistic sensitivity analysis to correct for unmeasured confounding when person-time data has been collected.
Usage
probsens.irr.conf(
counts,
pt = NULL,
reps = 1000,
prev_exp = list(dist = c("constant", "uniform", "triangular", "trapezoidal", "normal",
"beta"), parms = NULL),
prev_nexp = list(dist = c("constant", "uniform", "triangular", "trapezoidal", "normal",
"beta"), parms = NULL),
risk = list(dist = c("constant", "uniform", "triangular", "trapezoidal",
"log-logistic", "log-normal"), parms = NULL),
corr_p = NULL,
alpha = 0.05
)
Arguments
- counts
A table or matrix where first row contains disease counts and second row contains person-time at risk, and first and second columns are exposed and unexposed observations, as:
Exposed Unexposed Cases a b Person-time N1 N0 - pt
A numeric vector of person-time at risk. If provided,
counts
must be a numeric vector of disease counts.- reps
Number of replications to run.
- prev_exp
List defining the prevalence of exposure among the exposed. The first argument provides the probability distribution function (constant, uniform, triangular, trapezoidal, truncated normal, or beta) and the second its parameters as a vector. Lower and upper bounds for truncated normal distribution cannot be les than zero.
constant; value,
uniform: min, max,
triangular: lower limit, upper limit, mode,
trapezoidal: min, lower mode, upper mode, max.
normal: lower bound, upper bound, mean, sd,
beta: alpha, beta.
- prev_nexp
List defining the prevalence of exposure among the unexposed.
- risk
List defining the confounder-disease relative risk or the confounder-exposure odds ratio. The first argument provides the probability distribution function (constant,uniform, triangular, trapezoidal, log-logistic, or log-normal) and the second its parameters as a vector:
constant: value,
uniform: min, max,
triangular: lower limit, upper limit, mode,
trapezoidal: min, lower mode, upper mode, max.
log-logistic: shape, rate. Must be strictly positive,
log-normal: meanlog, sdlog. This is the mean and standard deviation on the log scale.
- corr_p
Correlation between the exposure-specific confounder prevalences.
- alpha
Significance level.
Value
A list with elements:
- obs_data
The analyzed 2 x 2 table from the observed data.
- obs_measures
A table of observed incidence rate ratio with exact confidence interval.
- adj_measures
A table of corrected incidence rate ratios.
- sim_df
Data frame of random parameters and computed values.
Details
Correlations between prevalences of exposure classification among cases and controls can be specified and use the NORmal To Anything (NORTA) transformation (Li & Hammond, 1975).
Updated calculations
episensr 2.0.0 introduced updated calculations of probabilistic bias analyses
by (1) using the NORTA transformation to define a correlation between
distributions, and (2) sampling true prevalences and then sampling the
adjusted cell counts rather than just using the expected cell counts from a
simple quantitative bias analysis. This updated version should be preferred
but if you need to run an old analysis, you can easily revert to the
computation using probsens.irr.conf_legacy()
as follows:
References
Li, S.T., Hammond, J.L., 1975. Generation of Pseudorandom Numbers with Specified Univariate Distributions and Correlation Coefficients. IEEE Trans Syst Man Cybern 5:557-561.
See also
Other confounding:
confounders()
,
confounders.array()
,
confounders.evalue()
,
confounders.ext()
,
confounders.limit()
Examples
set.seed(123)
# Unmeasured confounding
probsens.irr.conf(matrix(c(77, 10000, 87, 10000),
dimnames = list(c("D+", "Person-time"), c("E+", "E-")), ncol = 2),
reps = 20000,
prev_exp = list("trapezoidal", c(.01, .2, .3, .51)),
prev_nexp = list("trapezoidal", c(.09, .27, .35, .59)),
risk = list("trapezoidal", c(2, 2.5, 3.5, 4.5)),
corr_p = .8)
#> ℹ Calculating observed measures
#> ⠙ Assign probability distributions
#> ✔ Assign probability distributions [13ms]
#>
#> ⠙ Bias analysis
#> ✔ Bias analysis [88ms]
#>
#>
#> ── Observed data ───────────────────────────────────────────────────────────────
#> • Outcome: D+
#> • Comparing: E+ vs. E-
#>
#> E+ E-
#> D+ 77 87
#> Person-time 10000 10000
#> 2.5% 97.5%
#> Observed Incidence Rate ratio: 0.8850575 0.6427270 1.2167540
#> ── Bias-adjusted measures ──
#>
#> Median 2.5th percentile
#> Incidence Rate Ratio -- systematic error: 0.9701044 0.8198774
#> Incidence Rate Ratio -- systematic and random error: 0.9726062 0.6746654
#> 97.5th percentile
#> Incidence Rate Ratio -- systematic error: 1.1804282
#> Incidence Rate Ratio -- systematic and random error: 1.4024046