cond_logreg {pooling} | R Documentation |
Conditional Logistic Regression with Measurement Error in One Covariate
Description
Compatible with individual or pooled measurements. Assumes a normal linear model for exposure given other covariates, and additive normal errors.
Usage
cond_logreg(g = rep(1, length(xtilde1)), xtilde1, xtilde0, c1 = NULL,
c0 = NULL, errors = "processing", approx_integral = TRUE,
estimate_var = FALSE, start_nonvar_var = c(0.01, 1),
lower_nonvar_var = c(-Inf, 1e-04), upper_nonvar_var = c(Inf, Inf),
jitter_start = 0.01, hcubature_list = list(tol = 1e-08),
nlminb_list = list(control = list(trace = 1, eval.max = 500, iter.max =
500)), hessian_list = list(method.args = list(r = 4)),
nlminb_object = NULL)
Arguments
g |
Numeric vector with pool sizes, i.e. number of members in each pool. |
xtilde1 |
Numeric vector (or list of numeric vectors, if some observations have replicates) with Xtilde values for cases. |
xtilde0 |
Numeric vector (or list of numeric vectors, if some observations have replicates) with Xtilde values for controls. |
c1 |
Numeric matrix with precisely measured covariates for cases. |
c0 |
Numeric matrix with precisely measured covariates for controls. |
errors |
Character string specifying the errors that X is subject to.
Choices are |
approx_integral |
Logical value for whether to use the probit approximation for the logistic-normal integral, to avoid numerically integrating X's out of the likelihood function. |
estimate_var |
Logical value for whether to return variance-covariance matrix for parameter estimates. |
start_nonvar_var |
Numeric vector of length 2 specifying starting value for non-variance terms and variance terms, respectively. |
lower_nonvar_var |
Numeric vector of length 2 specifying lower bound for non-variance terms and variance terms, respectively. |
upper_nonvar_var |
Numeric vector of length 2 specifying upper bound for non-variance terms and variance terms, respectively. |
jitter_start |
Numeric value specifying standard deviation for mean-0
normal jitters to add to starting values for a second try at maximizing the
log-likelihood, should the initial call to |
hcubature_list |
List of arguments to pass to
|
nlminb_list |
List of arguments to pass to |
hessian_list |
List of arguments to pass to
|
nlminb_object |
Object returned from |
Value
List containing:
Numeric vector of parameter estimates.
Variance-covariance matrix (if
estimate_var = TRUE
).Returned
nlminb
object from maximizing the log-likelihood function.Akaike information criterion (AIC).
References
Saha-Chaudhuri, P., Umbach, D.M. and Weinberg, C.R. (2011) "Pooled exposure assessment for matched case-control studies." Epidemiology 22(5): 704–712.
Schisterman, E.F., Vexler, A., Mumford, S.L. and Perkins, N.J. (2010) "Hybrid pooled-unpooled design for cost-efficient measurement of biomarkers." Stat. Med. 29(5): 597–613.
Weinberg, C.R. and Umbach, D.M. (1999) "Using pooled exposure assessment to improve efficiency in case-control studies." Biometrics 55: 718–726.
Weinberg, C.R. and Umbach, D.M. (2014) "Correction to 'Using pooled exposure assessment to improve efficiency in case-control studies' by Clarice R. Weinberg and David M. Umbach; 55, 718–726, September 1999." Biometrics 70: 1061.
Examples
# Load simulated data for 150 case pools and 150 control pools
data(dat_cond_logreg)
dat <- dat_cond_logreg$dat
xtilde1 <- dat_cond_logreg$xtilde1
xtilde0 <- dat_cond_logreg$xtilde0
# Fit conditional logistic regression to estimate log-odds ratio for X and Y
# adjusted for C, using the precise poolwise summed exposure X. True log-OR
# for X is 0.5.
truth <- cond_logreg(
g = dat$g,
xtilde1 = dat$x1,
xtilde0 = dat$x0,
c1 = dat$c1.model,
c0 = dat$c0.model,
errors = "neither"
)
truth$theta.hat
# Suppose X is subject to additive measurement error and processing error,
# and we observe Xtilde1 and Xtilde0 rather than X1 and X0. Fit model with
# Xtilde's, accounting for errors (numerical integration avoided by using
# probit approximation).
## Not run:
corrected <- cond_logreg(
g = dat$g,
xtilde1 = xtilde1,
xtilde0 = xtilde0,
c1 = dat$c1.model,
c0 = dat$c0.model,
errors = "both",
approx_integral = TRUE
)
corrected$theta.hat
## End(Not run)