Learn R Programming

DoseFinding (version 0.9-9)

bFitMod: Fit a dose-response model using Bayesian or bootstrap methods.

Description

For type = "Bayes", MCMC sampling from the posterior distribution of the dose-response model is done. The function assumes a multivariate normal distribution for resp with covariance matrix S, and this is taken as likelihood function and combined with the prior distributions specified in prior to form the posterior distribution.

For type = "bootstrap", a multivariate normal distribution for resp with covariance matrix S is assumed, and a large number of samples is drawn from this distribution. For each draw the fitMod function with type = "general" is used to fit the draws from the multivariate normal distribution.

Usage

bFitMod(dose, resp, model, S, placAdj = FALSE,
        type = c("Bayes", "bootstrap"),
        start = NULL, prior = NULL, nSim = 1000,
        MCMCcontrol = list(), control = NULL, bnds, 
        addArgs = NULL)

Arguments

dose
Numeric specifying the dose variable.
resp
Numeric specifying the response estimate corresponding to the doses in dose
S
Covariance matrix associated with the dose-response estimate specified via resp
model
Dose-response model to fit, possible models are "linlog", "linear", "quadratic", "emax", "exponential", "sigEmax", "betaMod" and "logistic", see drmodels.
placAdj
Whether or not estimates in "placAdj" are placebo-adjusted (note that the linear in log and the logistic model cannot be fitted for placebo-adjusted data)
type
Character with allowed values "Bayes" and "bootstrap", Determining whether samples are drawn from the posterior, or the bootstrap distribution.
start
Optional starting values for the dose-response parameters in the MCMC algorithm.
prior
List containing the information regarding the prior distributions for type = "Bayes". The list needs to have as many entries as there are model parameters. The ordering of the list entries should be the same as in the argument
nSim
Desired number of samples to produce with the algorithm
MCMCcontrol
List of control parameters for the MCMC algorithm
  • thinThinning rate. Must be a positive integer.
  • wNumeric of same length as number of parameters in the model, specifies the width parameters of the slice
control
Same as the control argument in fitMod.
bnds
Bounds for non-linear parameters, in case type = "bootstrap". If missing the the default bounds from defBnds is used.
addArgs
List containing two entries named "scal" and "off" for the "betaMod" and "linlog" model. When addArgs is NULL the following defaults are used list(scal = 1.2*max(doses), off = 0.01*max(doses)).

Value

  • An object of class bFitMod, which is a list containing the matrix of posterior simulations plus some additional information on the fitted model.

Details

Componentwise univariate slice samplers are implemented (see Neal, 2003) to sample from the posterior distribution.

References

Neal, R. M. (2003), Slice sampling, Annals of Statistics, 31, 705-767

See Also

fitMod

Examples

Run this code
data(biom)
  ## produce first stage fit (using dose as factor)
  anMod <- lm(resp~factor(dose)-1, data=biom)
  drFit <- coef(anMod)
  S <- vcov(anMod)
  dose <- sort(unique(biom$dose))
  ## define prior list
  ## normal prior for E0 (mean=0 and sdev=10)
  ## normal prior for Emax (mean=0 and sdev=100)
  ## beta prior for ED50: bounds: [0,1.5] parameters shape1=0.45, shape2=1.7
  prior <- list(norm = c(0, 10), norm = c(0,100), beta=c(0,1.5,0.45,1.7))
  ## now fit an emax model
  gsample <- bFitMod(dose, drFit, S, model = "emax", 
                      start = c(0, 1, 0.1), nSim = 1000, prior = prior)
  ## summary information
  gsample
  ## samples are stored in
  head(gsample$samples)
  ## predict 0.025, 0.25, 0.5, 0.75, 0.975 Quantile at 0, 0.5 and 1
  predict(gsample, doseSeq = c(0, 0.5, 1))
  ## simple plot function
  plot(gsample)

  ## now look at bootstrap distribution
  gsample <- bFitMod(dose, drFit, S, model = "emax", type = "bootstrap",
                     nSim = 100, bnds = defBnds(1)$emax)
  plot(gsample)

  ## now fit linear interpolation
  prior <- list(norm = c(0,1000), norm = c(0,1000),
                norm = c(0,1000), norm = c(0,1000), norm = c(0,100))
  gsample <- bFitMod(dose, drFit, S, model = "linInt", 
                     start = rep(1,5), nSim = 1000, prior = prior)
  gsample <- bFitMod(dose, drFit, S, model = "linInt", type = "bootstrap",
                     nSim = 100)

  ## data fitted on placebo adjusted scale
  data(IBScovars)
  anovaMod <- lm(resp~factor(dose)+gender, data=IBScovars)
  drFit <- coef(anovaMod)[2:5] # placebo adjusted estimates at doses
  vCov <- vcov(anovaMod)[2:5,2:5]
  dose <- sort(unique(IBScovars$dose))[-1]
  prior <- list(norm = c(0,100), beta=c(0,6,0.45,1.7))
  ## Bayes fit
  gsample <- bFitMod(dose, drFit, vCov, model = "emax", placAdj=TRUE,
                     start = c(1, 0.1), nSim = 1000, prior = prior)
  ## bootstrap fit
  gsample <- bFitMod(dose, drFit, vCov, model = "emax", placAdj=TRUE,
                     type = "bootstrap", start = c(1, 0.1),
                     nSim = 100, prior = prior, bnds = c(0.01,6))
  ## calculate target dose estimate
  TD(gsample, Delta = 0.2)
  ## now fit linear interpolation
  prior <- list(norm = c(0,1000), norm = c(0,1000), norm = c(0,1000), norm = c(0,100))
  gsample <- bFitMod(dose, drFit, vCov, model = "linInt", placAdj=TRUE,
                     start = rep(1,4), nSim = 1000, prior = prior)
  gsample <- bFitMod(dose, drFit, vCov, model = "linInt", type = "bootstrap",
                     placAdj = TRUE, nSim = 100)

Run the code above in your browser using DataLab