bayessurvreg2 {bayesSurv} | R Documentation |
A function to estimate a regression model with possibly clustered (possibly right, left, interval or doubly-interval censored) data. In the case of doubly-interval censoring, different regression models can be specified for the onset and event times.
(Multivariate) random effects, normally distributed and acting as in the linear mixed model, normally distributed, can be included to adjust for clusters.
The error density of the regression model is specified as a mixture of Bayesian G-splines (normal densities with equidistant means and constant variances). This function performs an MCMC sampling from the posterior distribution of unknown quantities.
For details, see Komárek (2006), and Komárek, Lesaffre and Legrand (2007).
We explain first in more detail a model without doubly censoring. Let T[i,l], i=1,..., N, l=1,..., n[i] be event times for ith cluster and the units within that cluster The following regression model is assumed:
log(T[i,l]) = beta'x[i,l] + b[i]'z[i,l] + epsilon[i,l], i=1,..., N, l=1,..., n[i]
where beta is unknown regression parameter vector, x[i,l] is a vector of covariates. b[i] is a (multivariate) cluster-specific random effect vector and z[i,l] is a vector of covariates for random effects.
The random effect vectors b[i], i=1,..., N are assumed to be i.i.d. with a (multivariate) normal distribution with the mean beta[b] and a~covariance matrix D. Hierarchical centring (see Gelfand, Sahu, Carlin, 1995) is used. I.e. beta[b] expresses the average effect of the covariates included in z[i,l]. Note that covariates included in z[i,l] may not be included in the covariate vector x[i,l]. The covariance matrix D is assigned an inverse Wishart prior distribution in the next level of hierarchy.
The error terms epsilon[i,l], i=1,..., N, l=1,..., n[i] are assumed to be i.i.d. with a~univariate density g[epsilon](e). This density is expressed as a~mixture of Bayesian G-splines (normal densities with equidistant means and constant variances). We distinguish two, theoretically equivalent, specifications.
epsilon is distributed as sum[j=-K][K] w[j] N(mu[j], sigma^2)
where sigma^2 is the unknown basis variance and mu[j],;j=-K,..., K is an~equidistant grid of knots symmetric around the unknown point gamma and related to the unknown basis variance through the relationship
mu[j] = gamma + j*delta*sigma, j=K,..., K
where delta is fixed constants, e.g. delta=2/3 (which has a~justification of being close to cubic B-splines).
epsilon[1] is distributed as alpha + tau * V
where alpha is an unknown intercept term and tau is an unknown scale parameter. V is then standardized error term which is distributed according to the univariate normal mixture, i.e.
V is distributed as sum[j=-K][K] w[j] N(mu[j], sigma^2)
where mu[j], j=-K,..., K is an~equidistant grid of fixed knots (means), usually symmetric about the fixed point gamma = 0 and sigma^2 is fixed basis variance. Reasonable values for the numbers of grid points K is K=15 with the distance between the two knots equal to delta=0.3 and for the basis variance sigma^2=0.2^2.
Personally, I found Specification 2 performing better. In the paper Komarek, Lesaffre and Legrand (2007) only Specification 2 is described.
The mixture weights w[j], j=-K,..., K are not estimated directly. To avoid the constraints 0 < w[j] < 1 and sum[j=-K][K] w[j] = 1 transformed weights a[j], j=-K,..., K related to the original weights by the logistic transformation:
a[j] = exp(w[j])/sum[m] exp(w[m])
are estimated instead.
A~Bayesian model is set up for all unknown parameters. For more details I refer to Komarek (2006) and to Komarek, Lesafre, and Legrand (2007).
If there are doubly-censored data the model of the same type as above can be specified for both the onset time and the time-to-event.
bayessurvreg2(formula, random, formula2, random2, data = parent.frame(), na.action = na.fail, onlyX = FALSE, nsimul = list(niter = 10, nthin = 1, nburn = 0, nwrite = 10), prior, prior.beta, prior.b, init = list(iter = 0), mcmc.par = list(type.update.a = "slice", k.overrelax.a = 1, k.overrelax.sigma = 1, k.overrelax.scale = 1), prior2, prior.beta2, prior.b2, init2, mcmc.par2 = list(type.update.a = "slice", k.overrelax.a = 1, k.overrelax.sigma = 1, k.overrelax.scale = 1), store = list(a = FALSE, a2 = FALSE, y = FALSE, y2 = FALSE, r = FALSE, r2 = FALSE, b = FALSE, b2 = FALSE), dir = getwd())
formula |
model formula for the regression. In the case of
doubly-censored data, this is the model formula for the onset
time.
The left-hand side of the formula must be an~object created
using Surv .
In the formula all covariates appearing both in the vector x[i,l] and z[i,l] must be mentioned. Intercept is implicitely included in the model by the estimation of the error distribution. As a~consequence -1 in
the model formula does not have any effect on the model
specification.
If random is used then the formula must contain
an identification of clusters in the form cluster(id) , where
id is a name of the variable that determines clusters, e.g.
| |
random |
formula for the `random' part of the model, i.e. the
part that specifies the covariates z[i,l]. In the
case of doubly-censored data, this is the random formula for
the onset time.
If omitted, no random part is included in the model. E.g. to specify the model with a random intercept, say random=~1 . All effects mentioned in
random should also be mentioned on the right-hand side of
formula .
When some random effects are included the random intercept is added by default. It can be removed using e.g. random=~-1 + gender .
| |
formula2 |
model formula for the regression of the time-to-event in
the case of doubly-censored data. Ignored otherwise. The same structure as
for formula applies here.
| |
random2 |
specification of the `random' part of the model for
time-to-event in the case of doubly-censored data. Ignored
otherwise. The same structure as for random applies here.
| |
data |
optional data frame in which to interpret the variables
occuring in the formula , formula2 , random ,
random2 statements.
| |
na.action |
the user is discouraged from changing the default
value na.fail .
| |
onlyX |
if TRUE no MCMC sampling is performed and only the
design matrix (matrices) are returned. This can be useful to set up
correctly priors for regression parameters in the presence of
factor covariates.
| |
nsimul |
a list giving the number of iterations of the MCMC and
other parameters of the simulation.
| |
prior |
a~list specifying the prior distribution of the G-spline
defining the distribution of the error term in the regression model
given by formula and random . See prior argument of
bayesHistogram function for more detail. In this list
also ‘Specification’ as described above is specified.
The item prior$neighbor.system can only be equal to
uniCAR here.
| |
prior.b |
a list defining the way in which the random effects
involved in formula and random
are to be updated and the specification
of priors for parameters related to these random effects. The list
is assumed to have the following components.
| |
prior.beta |
prior specification for the regression parameters,
in the case of doubly-censored data for the regression parameters of
the onset time, i.e. it is related to formula and
random .
Note that the beta vector contains both the fixed effects
beta and the means of the random effects (except the
random intercept) beta[b].
This should be a~list with the following components:
onlyX set to TRUE
to find out how the betas are sorted. They must correspond to a
design matrix X taken from formula .
| |
init |
an~optional list with initial values for the MCMC related
to the model given by formula and random . The list can have the following components:
| |
mcmc.par |
a~list specifying how some of the G-spline parameters
related to the distribution of the error term from formula
are to be updated. See bayesBisurvreg for more
details.
In contrast to bayesBisurvreg function argument
mcmc.par$type.update.a can also be equal to
"block" in which case all a coefficients are updated
in 1 block using the Metropolis-Hastings algorithm.
| |
prior2 |
a~list specifying the prior distribution of the G-spline
defining the distribution of the error term in the regression model
given by formula2 and random2 . See prior argument of
bayesHistogram function for more detail.
| |
prior.b2 |
prior specification for the parameters related to the
random effects from formula2 and random2 . This should
be a~list with the same structure as prior.b .
| |
prior.beta2 |
prior specification for the regression parameters
of time-to-event in the case of doubly censored data (related to
formula2 and random2 ).
This should be a~list with the same structure as prior.beta .
| |
init2 |
an~optional list with initial values for the MCMC related
to the model given by formula2 and random2 .
The list has the same structure as init .
| |
mcmc.par2 |
a~list specifying how some of the G-spline parameters
related to formula2 are to be updated. The list has the same
structure as mcmc.par .
| |
store |
a~list of logical values specifying which chains that are
not stored by default are to be stored. The list can have the
following components.
| |
dir |
a string that specifies a directory where all sampled values are to be stored. |
A list of class bayessurvreg2
containing an information
concerning the initial values and prior choices.
Additionally, the following files with sampled values
are stored in a directory specified by dir
argument of this
function (some of them are created only on request, see store
parameter of this function).
Headers are written to all files created by default and to files asked
by the user via the argument store
. During the burn-in, only
every nsimul$nwrite
value is written. After the burn-in, all
sampled values are written in files created by default and to files
asked by the user via the argument store
. In the files for
which the corresponding store
component is FALSE
, every
nsimul$nwrite
value is written during the whole MCMC (this
might be useful to restart the MCMC from some specific point).
The following files are created:
iteration
with
indeces of MCMC iterations to which the stored sampled values
correspond.
k
, Mean.1
,
D.1.1
, where
k = number of mixture components that had probability numerically higher than zero;
Mean.1 = E(epsilon[i,l]);
D.1.1 = var(epsilon[i,l]);
all related to the distribution of the error term from the
model given by formula
.
mixmoment.sim
, however related to the model
given by formula2
.
formula
.
mweight.sim
, however related to the model
given by formula2
.
mweight.sim
. Related to the model given by formula
.
mmean.sim
, however related to the model
given by formula2
.
formula
. This file together with mixmoment.sim
,
mweight.sim
and mmean.sim
can be used to reconstruct
the G-spline in each MCMC iteration.
The file has columns labeled
gamma1
,
sigma1
,
delta1
,
intercept1
,
scale1
,
The meaning of the values in these columns is the following:
gamma1 = the middle knot gamma If ‘Specification’ is 2, this column usually contains zeros;
sigma1 = basis standard deviation sigma of the G-spline. This column contains a~fixed value if ‘Specification’ is 2;
delta1 = distance delta between the two knots of the G-spline. This column contains a~fixed value if ‘Specification’ is 2;
intercept1 = the intercept term alpha of the G-spline. If ‘Specification’ is 1, this column usually contains zeros;
scale1 = the scale parameter tau of the G-spline. If ‘Specification’ is 1, this column usually contains ones;
gspline.sim
, however related to the model
given by formula2
.
store$a = TRUE
. The
file contains the transformed weights
a[k],
k=-K,..., K
of all mixture components, i.e. also of components that had numerically zero
probabilities. This file is related to the error distribution of
the model given by formula
.
store$a2 =
TRUE
and in the case of doubly-censored data, the same
structure as mlogweight.sim
, however related to the error
distribution of the model given by formula2
.
store$r = TRUE
. The file
contains the labels of the mixture components into which the
residuals are intrinsically assigned. Instead of indeces on the
scale {-K,..., K}
values from 1 to (2*K+1) are stored here. Function
vecr2matr
can be used to transform it back to
indices from -K to K.
store$r2 =
TRUE
and in the case of doubly-censored data, the same
structure as r.sim
, however related to the model
given by formula2
.
lambda
. These are the
values of the smoothing parameterlambda
(hyperparameters of the prior distribution of the transformed
mixture weights a[k]). This file is
related to the model given by formula
.
lambda.sim
, however related to the model
given by formula2
.
formula
.
The columns are labeled according to the
colnames
of the design matrix.
beta.sim
, however related to the model
given by formula2
.
det
contains the determinant of the sampled matrix, additional columns
labeled D.1.1
, D.2.1
, ..., D.q.1
, ...
D.q.q
contain the lower triangle of the sampled
matrix. This file is related to the model specified by
formula
and random
.
D.sim
, however related to the model given by
formula2
and random2
.
store$b = TRUE
. It
contains sampled values of random effects for all clusters in
the data set. The file has q*N columns sorted as
b[1,1],..., b[1,q],..., b[N,1],..., b[N,q]. This file is
related to the model given by formula
and random
.
store$b2 =
TRUE
and in the case of doubly-censored data, the same
structure as b.sim
, however related to the model
given by formula2
and random2
.
store$y = TRUE
. It
contains sampled (augmented) log-event times for all observations
in the data set.
store$y2 =
TRUE
and in the case of doubly-censored data, the same
structure as Y.sim
, however related to the model
given by formula2
.
loglik
, penalty
,
and logprw
. This file is related to the model
given by formula
. The columns have the following meaning.
loglik = -(sum[i=1][N] n[i]) * (log(sqrt(2*pi)) + log(sigma)) -0.5*sum[i=1][N] sum[l=1][n[i]]( (sigma^2*tau^2)^(-1) * (y[i,l] - x[i,l]'beta - z[i,l]'b[i] - alpha - tau*mu[r[i,l]])^2)
where y[i,l] denotes (augmented) (i,l)th true log-event time.
In other words, loglik
is equal to the
conditional log-density
sum[i=1][N] sum[l=1][n[i]] log(p(y[i,l] | r[i,l], beta, b[i], G-spline));
penalty: the penalty term
-0.5*sum[k] (Delta a[k])^2
(not multiplied by lambda);
logprw = -2*(sum[i] n[i])*log(sum[k] exp(a[k])) + sum[k[1]] N[k]*a[k], where N[k] is the number of residuals assigned intrinsincally to the kth mixture component.
In other words, logprw
is equal to the conditional
log-density
sum[i=1][N] sum[l=1][n[i]] log(p(r[i,l] | G-spline weights)).
logposter.sim
, however related to the model
given by formula2
.
Arnošt Komárek arnost.komarek[AT]mff.cuni.cz
Gelfand, A. E., Sahu, S. K., and Carlin, B. P. (1995). Efficient parametrisations for normal linear mixed models. Biometrika, 82, 479-488.
Komárek, A. (2006). Accelerated Failure Time Models for Multivariate Interval-Censored Data with Flexible Distributional Assumptions. PhD. Thesis, Katholieke Universiteit Leuven, Faculteit Wetenschappen.
Komárek, A., Lesaffre, E., and Legrand, C. (2007). Baseline and treatment effect heterogeneity for survival times between centers using a random effects accelerated failure time model with flexible error distribution. To appear in Statistics in Medicine.
## See the description of R commands for ## the model with EORTC data, ## analysis described in Komarek, Lesaffre and Legrand (2007). ## ## R commands available in the documentation ## directory of this package ## as eortc.pdf. ##