icmis {icensmis} | R Documentation |
Maximum likelihood estimation for settings of error-prone diagnostic tests and self-reported outcomes
Description
This function estimates the baseline survival function evaluated at each test time in the presence of error-prone diagnostic tests and self-reported outcomes. If there are covariates included in the dataset, it also estimates their coefficients assuming proportional hazards. The covariate values can be either time independent or time varying The function can also be used to incorporate misclassification of disease status at baseline (due to an error-prone diagnostic procedure).
Usage
icmis(
subject,
testtime,
result,
data,
sensitivity,
specificity,
formula = NULL,
negpred = 1,
time.varying = F,
betai = NULL,
initsurv = 0.5,
param = 1,
...
)
Arguments
subject |
variable in data for subject id. |
testtime |
variable in data for test time. Assume all test times are non-negative. testtime = 0 refers to baseline visit (only used/needed if the model is time varying covarites) |
result |
variable in data for test result. |
data |
the data to analyze. |
sensitivity |
the sensitivity of test. |
specificity |
the specificity of test. |
formula |
a formula to specify what covariates to be included in the model. If there is no covariate or one sample setting, set it to NULL. Otherwise, input like ~x1 + x2 + factor(x3). |
negpred |
baseline negative predictive value, i.e. the probability of being truely disease free for those who were tested (reported) as disease free at baseline. If baseline screening test is perfect, then negpred = 1. |
time.varying |
indicator whether fitting a time varying covariate model or not. |
betai |
a vector of initial values for the regression coefficients corresponding to the vector of covariates. If betai=NULL, then 0s are used for the initial values. Otherwise, the length of betai must equal the number of covariates. |
initsurv |
initial value for survival function of baseline group in the last visit time. It is used to compute initival values for survival function at all visit times. |
param |
parameterization for survival function used for optimization, taking values 1, 2, or 3. There are 3 parameterizations available. param = 1: this parameterization uses the change in cumulative incidence in time period j for baseline group as parameters, i.e. log(S[j]) - log(S[j+1]). param = 2: simply use log of the parameters in param = 1 so that those parameters are unbounded. param = 3: the first element is log(-log(S[tau_1])) corresponding to log-log transformation of survival function at first visit, while other parameters are corresponding to the change in log-log of surival function, log(-log(S[j])) - log(-log(S[j-1])). In most cases, all parameters yield same results , while in some situations especially when two visit times are estimated to have same survival functions, they may differ. Choose the one that works best (check likelihood function) |
... |
other arguments passed to |
Details
The input data should be in longitudinal form with one row per test
time. Use datasim
to simulate a dataset to see the sample
data structure. If time varying model is to be fitted, the baseline visit
must be provided so that the baseline covariate information can be
extracted. If an error is generated due to the optimization procedure, then
we recommend trying different initial values.
This likelihood-based approach is a function of the survival function evaluated at each unique test time in the dataset and the vector of regression coefficients as model parameters. Therefore, it works best for situations where there is a limited number of unique test times in the dataset. If there are a large number of unique test times, one solution is to group several test times together.
Value
A list of fitting results is returned with log-likelihood, estimated coefficiets, estimated survival function, and estimated covariance matrix for covariates.
Examples
## One sample setting
simdata1 <- datasim(N = 1000, blambda = 0.05, testtimes = 1:8,
sensitivity = 0.7, specificity = 0.98, betas = NULL,
twogroup = NULL, pmiss = 0.3, design = "MCAR")
fit1 <- icmis(subject = ID, testtime = testtime, result = result,
data = simdata1, sensitivity = 0.7, specificity= 0.98,
formula = NULL, negpred = 1)
## Two group setting, and the two groups have same sample sizes
simdata2 <- datasim(N = 1000, blambda = 0.05, testtimes = 1:8,
sensitivity = 0.7, specificity = 0.98, betas = 0.7,
twogroup = 0.5, pmiss = 0.3, design = "MCAR")
fit2 <- icmis(subject = ID, testtime = testtime, result = result,
data = simdata2, sensitivity = 0.7, specificity= 0.98,
formula = ~group)
## Three covariates with coefficients 0.5, 0.8, and 1.0
simdata3 <- datasim(N = 1000, blambda = 0.05, testtimes = 1:8,
sensitivity = 0.7, specificity = 0.98, betas = c(0.5, 0.8, 1.0),
twogroup = NULL, pmiss = 0.3, design = "MCAR", negpred = 1)
fit3 <- icmis(subject = ID, testtime = testtime, result = result,
data = simdata3, sensitivity = 0.7, specificity= 0.98,
formula = ~cov1+cov2+cov3, negpred = 1)
## Fit data with NTFP missing mechanism (the fitting is same as MCAR data)
simdata4 <- datasim(N = 1000, blambda = 0.05, testtimes = 1:8,
sensitivity = 0.7, specificity = 0.98, betas = c(0.5, 0.8, 1.0),
twogroup = NULL, pmiss = 0.3, design = "NTFP", negpred = 1)
fit4 <- icmis(subject = ID, testtime = testtime, result = result,
data = simdata4, sensitivity = 0.7, specificity= 0.98,
formula = ~cov1+cov2+cov3, negpred = 1)
## Fit data with baseline misclassification
simdata5 <- datasim(N = 2000, blambda = 0.05, testtimes = 1:8,
sensitivity = 0.7, specificity = 0.98, betas = c(0.5, 0.8, 1.0),
twogroup = NULL, pmiss = 0.3, design = "MCAR", negpred = 0.97)
fit5 <- icmis(subject = ID, testtime = testtime, result = result,
data = simdata5, sensitivity = 0.7, specificity= 0.98,
formula = ~cov1+cov2+cov3, negpred = 0.97)
## Fit data with time varying covariates
simdata6 <- datasim(N = 1000, blambda = 0.05, testtimes = 1:8,
sensitivity = 0.7, specificity = 0.98, betas = c(0.5, 0.8, 1.0),
twogroup = NULL, pmiss = 0.3, design = "MCAR", negpred = 1,
time.varying = TRUE)
fit6 <- icmis(subject = ID, testtime = testtime, result = result,
data = simdata6, sensitivity = 0.7, specificity= 0.98,
formula = ~cov1+cov2+cov3, negpred = 1, time.varying = TRUE)