Skip to contents

dic.fit fits a parametric accelerated failure time model to survival data. It was developed with the application to estimating incubation periods of infectious diseases in mind but is applicable to many general problems. The data can be a mixture of doubly interval-censored, single interval-censored or exact observations from a single univariate distribution. Currently, three distributions are supported: log-normal, gamma, and Weibull. (The Erlang distribution is supported in the dic.fit.mcmc function, which implements an MCMC version of this code.) We use a consistent (par1, par2) notation for each distribution, they map in the following manner: $$Log-normal(meanlog=par1, sdlog=par2)$$ $$Gamma(shape=par1, scale=par2)$$ $$Weibull(shape=par1, scale=par2)$$ Standard errors of parameters can be computed using closed-form asymptotic formulae or using a bootstrap routine for log-normal and gamma models. Currently, bootstrap SEs are the only option for the gamma models, which do not have a closed form for the percentiles. dic.fit() calculates asymptotic SEs by default, or whenever the n.boots option is set to 0. To compute bootstrap SEs, just set n.boots to be greater than zero. dic.fit.mcmc also allows for Markov Chain Monte Carlo fitting of these three parametric models and Erlang models as well.

Usage

dic.fit(
  dat,
  start.par2 = log(2),
  opt.method = "L-BFGS-B",
  par1.int = log(c(0.5, 13)),
  par2.int = log(c(1.01, log(5))),
  ptiles = c(0.05, 0.95, 0.99),
  dist = "L",
  n.boots = 0,
  ...
)

Arguments

dat

a matrix with columns named "EL", "ER", "SL", "SR", corresponding to the left (L) and right (R) endpoints of the windows of possible exposure (E) and symptom onset (S). Also, a "type" column must be specified and have entries with 0, 1, or 2, corresponding to doubly interval-censored, single interval-censored or exact observations, respectively.

start.par2

starting value for 2nd parameter of desired distribution

opt.method

method used by optim

par1.int

the log-scale interval of possible median values (in the same units as the observations in dat). Narrowing this interval can help speed up convergence of the algorithm, but care must be taken so that possible values are not excluded or that the maximization does not return a value at an endpoint of this interval.

par2.int

the log-scale interval of possible dispersion values

ptiles

percentiles of interest

dist

what distribution to use to fit the data. Default "L" for log-normal. "G" for gamma, and "W" for Weibull.

n.boots

number of bootstrap resamples (0 means that asymptotic results are desired)

...

additional options passed to optim

Value

a cd.fit S4 object.

References

Reich NG et al. Statistics in Medicine. Estimating incubation periods with coarse data. 2009. https://pubmed.ncbi.nlm.nih.gov/19598148/

See also

Examples

data(fluA.inc.per)
dic.fit(fluA.inc.per, dist="L")
#> Computing Asymptotic Confidence Intervals 
#> Coarse Data Model Parameter and Quantile Estimates: 
#>           est CIlow CIhigh StdErr
#> meanlog 0.380 0.306  0.454  0.037
#> sdlog   0.424 0.368  0.480  0.028
#> p5      0.728 0.639  0.816  0.045
#> p50     1.462 1.354  1.570  0.055
#> p95     2.936 2.598  3.274  0.171
#> p99     3.919 3.344  4.494  0.291
#> 
#> -2*Log Likelihood = 524.4 
#> 
#> Note: dispersion parameter is exp(sdlog). In this case it is 1.528 (95% CI 1.442-1.614).