Description Usage Arguments Details Value Author(s) References See Also Examples
View source: R/jointSurroPenal.R
Joint Frailty Surrogate model definition
Fit the one-step Joint surrogate model for the evaluation of a canditate surrogate endpoint,
with different integration methods on the random effects, using a semiparametric penalized
likelihood estimation. This approach extends that of Burzykowski et al.
(2001) by
including in the same joint frailty model the individual-level and the trial-level random effects.
For the jth subject (j=1,...,ni) of the ith trial (i=1,...,G), the joint surrogate model is defined as follows:
where, ωij ~ N(0,θ), ui ~ N(0,γ), ωi ⊥ ui, ui ⊥ vSi, ui ⊥ vTi
and (vSi,vTi)T ~ N(0,Σv)
with
In this model, λ0s(t) is the baseline hazard function associated with the surrogate endpoint and βS the fixed treatment effect (or log-hazard ratio); λ0T(t) is the baseline hazard function associated with the true endpoint and βT the fixed treatment effect. ωij is a shared individual-level frailty that serve to take into account the heterogeneity in the data at the individual level; ui is a shared frailty effect associated with the baseline hazard function that serve to take into account the heterogeneity between trials of the baseline hazard function, associated with the fact that we have several trials in this meta-analytical design. The power parameters ζ and α distinguish both individual and trial-level heterogeneities between the surrogate and the true endpoint. vSi and vTi are two correlated random effects treatment-by-trial interactions. Zij1 represents the treatment arm to which the patient has been randomized.
Surrogacy evaluation
We proposed new definitions of Kendall's τ and coefficient of determination as individual-level and trial-level association measurements, to evaluate a candidate surrogate endpoint (Sofeu et al., 2018). The formulations are given below.
Individual-level surrogacy
To measure the strength of association between Sij and Tij after adjusting the marginal distributions for the trial and the treatment effects, as show in Sofeu et al.(2018), we use the Kendall's τ define by :
where θ, ζ, α and γ are estimated using the joint surrogate model defined previously. Kendall's τ is the difference between the probability of concordance and the probability of discordance of two realizations of Sij and Tij. It belongs to the interval [-1,1] and assumes a zero value when Sij and Tij are independent. We estimate Kendall's τ using Monte-Carlo or Gaussian Hermite quadrature integration methods. Its confidence interval is estimated using parametric bootstrap
Trial-level surrogacy
The key motivation for validating a surrogate endpoint is to be able to predict the effect of treatment on the true endpoint, based on the observed effect of treatment on the surrogate endpoint. As shown by Buyse et al. (2000), the coefficenient of determination obtains from the covariance matrix Σv of the random effects treatment-by-trial interaction can be used to evaluate underlined prediction, and therefore as surrogacy evaluation measurement at trial-level. It is defined by:
The SEs of Rtrial2 is calculated using the Delta-method. We also propose Rtrial2 and 95% CI computed using the parametric bootstrap. The use of delta-method can lead to confidence limits violating the [0,1], as noted by (Burzykowski et al., 2001). However, using other methods would not significantly alter the findings of the surrogacy assessment
1 2 3 4 5 6 7 8 9 10 11 12 | jointSurroPenal(data, maxit=40, indicator.zeta = 1,
indicator.alpha = 1, frail.base = 1, n.knots = 6,
LIMparam = 0.001, LIMlogl = 0.001, LIMderiv = 0.001,
nb.mc = 300, nb.gh = 32, nb.gh2 = 20, adaptatif = 0,
int.method = 2, nb.iterPGH = 5, nb.MC.kendall = 10000,
nboot.kendall = 1000, true.init.val = 0,
theta.init = 1, sigma.ss.init = 0.5, sigma.tt.init = 0.5,
sigma.st.init = 0.48, gamma.init = 0.5, alpha.init = 1,
zeta.init = 1, betas.init = 0.5, betat.init = 0.5, scale = 1,
random.generator = 1, kappa.use = 4, random = 0,
random.nb.sim = 0, seed = 0, init.kappa = NULL, ckappa = c(0,0),
nb.decimal = 4, print.times = TRUE, print.iter=FALSE)
|
data |
A
|
maxit |
maximum number of iterations for the Marquardt algorithm.
The default being |
indicator.zeta |
A binary, indicates whether the power's parameter ζ should
be estimated (1) or not (0). If |
indicator.alpha |
A binary, indicating whether the power's parameter α should
be estimated (1) or not (0). If |
frail.base |
A binary, indicating whether the heterogeneity between trial on the baseline risk
is considered ( |
n.knots |
integer giving the number of knots to use. Value required in
the penalized likelihood estimation. It corresponds to the (n.knots+2)
splines functions for the approximation of the hazard or the survival
functions. We estimate I or M-splines of order 4. When the user set a
number of knots equals to k (n.knots=k) then the number of interior knots
is (k-2) and the number of splines is (k-2)+order. Number of knots must be
between 4 and 20. (See |
LIMparam |
Convergence threshold of the Marquardt algorithm for the
parameters, 10-3 by default (See |
LIMlogl |
Convergence threshold of the Marquardt algorithm for the
log-likelihood, 10-3 by default (See |
LIMderiv |
Convergence threshold of the Marquardt algorithm for the gradient, 10-3 by default
(See |
nb.mc |
Number of samples considered in the Monte-Carlo integration. Required in the event
|
nb.gh |
Number of nodes for the Gaussian-Hermite quadrature. It can be chosen among 5, 7, 9, 12, 15, 20 and 32. The default is 32. |
nb.gh2 |
Number of nodes for the Gauss-Hermite quadrature used to re-estimate the model,
in the event of non-convergence, defined as previously. The default is |
adaptatif |
A binary, indicates whether the pseudo adaptive Gaussian-Hermite quadrature |
int.method |
A numeric, indicates the integration method: |
nb.iterPGH |
Number of iterations before the re-estimation of the posterior random effects,
in the event of the two-steps pseudo-adaptive Gaussian-hermite quadrature. If set to |
nb.MC.kendall |
Number of generated points used with the Monte-Carlo to estimate
integrals in the Kendall's τ formulation. Beter to use at least 4000 points for
stable reseults. The default is |
nboot.kendall |
Number of samples considered in the parametric bootstrap to estimate the confidence
interval of the Kendall's τ. The default is |
true.init.val |
Numerical value. Indicates if the given initial values to parameters |
theta.init |
Initial values for θ, required if |
sigma.ss.init |
Initial values for
σ2vS, required if |
sigma.tt.init |
Initial values for
σ2vT, required if |
sigma.st.init |
Initial values for
σvST, required if |
gamma.init |
Initial values for γ, required if |
alpha.init |
Initial values for α, required if |
zeta.init |
Initial values for ζ, required if |
betas.init |
Initial values for βS, required if |
betat.init |
Initial values for βT, required if |
scale |
A numeric that allows to rescale (multiplication) the survival times, to avoid numerical problems in the event of some convergence issues. If no change is needed the argument is set to 1, the default value. eg: code1/365 aims to convert days to years ". |
random.generator |
Random number generator used by the Fortran compiler,
|
kappa.use |
A numeric, that indicates how to manage the smoothing parameters k1
and k2 in the event of convergence issues. If it is set to |
random |
A binary that says if we reset the random number generation with a different environment
at each call |
random.nb.sim |
If |
seed |
The seed to use for data (or samples) generation. required if |
init.kappa |
smoothing parameter used to penalized the log-likelihood. By default (init.kappa = NULL) the values used are obtain by cross-validation. |
ckappa |
Vector of two fixed values to add to the smoothing parameters. By default it is set to (0,0). this argument allows to well manage the smoothing parameters in the event of convergence issues. |
nb.decimal |
Number of decimal required for results presentation. |
print.times |
a logical parameter to print estimation time. Default is TRUE. |
print.iter |
a logical parameter to print iteration process. Default is FALSE. |
The estimated parameter are obtained using the robust Marquardt algorithm (Marquardt, 1963) which is a combination between a Newton-Raphson algorithm and a steepest descent algorithm. The iterations are stopped when the difference between two consecutive log-likelihoods was small (< 10-3 ), the estimated coefficients were stable (consecutive values (< 10-3 )), and the gradient small enough (< 10-3 ), by default. Cubic M-splines of order 4 are used for the hazard function, and I-splines (integrated M-splines) are used for the cumulative hazard function.
The inverse of the Hessian matrix is the variance estimator and to deal with the positivity constraint of the variance component and the spline coefficients, a squared transformation is used and the standard errors are computed by the Δ-method (Knight & Xekalaki, 2000). The smooth parameter can be chosen by maximizing a likelihood cross validation criterion (Joly and other, 1998).
We proposed based on the joint surrogate model a new definition of the Kendall's τ. Moreover, distinct numerical integration methods are available to approximate the integrals in the marginal log-likelihood.
Non-convergence case management procedure
Special attention must be given to initializing model parameters, the choice of the number of
spline knots, the smoothing parameters and the number of quadrature points to solve convergence
issues. We first initialized parameters using the user's desired strategy, as specified
by the option true.init.val
. When numerical or convergence problems are encountered,
with kappa.use
set to 4
, the model is fitted again using a combination of the following strategies:
vary the number of quadrature point (nb.gh
to nb.gh2
or nb.gh2
to nb.gh
)
in the event of the use of the Gaussian Hermite quadrature integration (see int.method
);
divided or multiplied the smoothing parameters ( k1,
k2) by 10 or 100 according to
their preceding values, or used parameter vectors obtained during the last iteration (with a
modification of the number of quadrature points and smoothing parameters). Using this strategy,
we usually obtained during simulation the rejection rate less than 3%. A sensitivity analysis
was conducted without this strategy, and similar results were obtained on the converged samples,
with about a 23% rejection rate.
This function return an object of class jointSurroPenal with elements :
EPS |
A vector containing the obtained convergence thresholds with the Marquardt algorithm, for the parameters, the log-likelihood and for the gradient; |
b |
A vector containing estimates for the splines parameter's;
the power's parameter ζ (if |
varH |
The variance matrix of all parameters in |
varHIH |
The robust estimation of the variance matrix of all parameters in |
loglikPenal |
The complete marginal penalized log-likelihood; |
LCV |
the approximated likelihood cross-validation criterion in the semiparametric case (with |
xS |
vector of times for surrogate endpoint where both survival and hazard function are estimated. By default seq(0,max(time),length=99), where time is the vector of survival times; |
lamS |
array (dim = 3) of hazard estimates and confidence bands, for surrogate endpoint; |
survS |
array (dim = 3) of baseline survival estimates and confidence bands, for surrogate endpoint; |
xT |
vector of times for true endpoint where both survival and hazard function are estimated. By default seq(0, max(time), length = 99), where time is the vector of survival times; |
lamT |
array (dim = 3) of hazard estimates and confidence bands, for true endpoint; |
survT |
array (dim = 3) of baseline survival estimates and confidence bands, for true endpoint; |
n.iter |
number of iterations needed to converge; |
theta |
Estimate for θ; |
gamma |
Estimate for γ; |
alpha |
Estimate for α; |
zeta |
Estimate for ζ; |
sigma.s |
Estimate for σ2vS; |
sigma.t |
Estimate for σ2vT; |
sigma.st |
Estimate for σvST; |
beta.s |
Estimate for βS; |
beta.t |
Estimate for βT; |
ui |
A binary, that indicates if the heterogeneity between trial on the baseline risk
has been Considered ( |
ktau |
The Kendall's τ with the correspondant 95 \% CI computed using the parametric bootstrap; |
R2.boot |
The
|
Coefficients |
The estimates with the corresponding standard errors and the 95 \% CI |
kappa |
Positive smoothing parameters used for convergence. These values could be different to initial
values if |
scale |
The value used to rescale the survival times |
data |
The dataset used in the model |
varcov.Sigma |
covariance matrix of the estimates of (σ2vS,σ2vT, σvST) obtained from the delta-method |
parameter |
list of all arguments used in the model |
Casimir Ledoux Sofeu casimir.sofeu@u-bordeaux.fr, scl.ledoux@gmail.com and Virginie Rondeau virginie.rondeau@inserm.fr
Burzykowski, T., Molenberghs, G., Buyse, M., Geys, H., and Renard, D. (2001). Validation of surrogate end points in multiple randomized clinical trials with failure time end points. Journal of the Royal Statistical Society: Series C (Applied Statistics) 50, 405-422.
Buyse, M., Molenberghs, G., Burzykowski, T., Renard, D., and Geys, H. (2000). The validation of surrogate endpoints in meta-analyses of randomized experiments. Biostatistics 1, 49-67
Sofeu, C. L., Emura, T., and Rondeau, V. (2019). One-step validation method for surrogate endpoints using data from multiple randomized cancer clinical trials with failure-time endpoints. Statistics in Medicine 38, 2928-2942.
jointSurrSimul
, summary.jointSurroPenal
, jointSurroPenalSimul
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | ## Not run:
# Generation of data to use
data.sim <- jointSurrSimul(n.obs=600, n.trial = 30,cens.adm=549.24,
alpha = 1.5, theta = 3.5, gamma = 2.5, zeta = 1, sigma.s = 0.7,
sigma.t = 0.7, cor = 0.8, betas = -1.25, betat = -1.25,
full.data = 0, random.generator = 1, seed = 0, nb.reject.data = 0)
#Surrogacy evaluation based on ganerated data with a combination of Monte Carlo
#and classical Gaussian Hermite integration.*
# (Computation takes around 5 minutes)
joint.surro.sim.MCGH <- jointSurroPenal(data = data.sim, int.method = 2,
nb.mc = 300, nb.gh = 20)
#Surrogacy evaluation based on ganerated data with a combination of Monte Carlo
# and Pseudo-adaptive Gaussian Hermite integration.
# (Computation takes around 4 minutes)
joint.surro.sim.MCPGH <- jointSurroPenal(data = data.sim, int.method = 2,
nb.mc = 300, nb.gh = 20, adaptatif = 1)
# Results
summary(joint.surro.sim.MCGH)
summary(joint.surro.sim.MCPGH)
# Data from the advanced ovarian cancer randomized clinical trials.
# Joint surrogate model with \eqn{\zeta} fixed to 1, 8 nodes spline
# and the rescaled survival time.
data(dataOvarian)
# (Computation takes around 20 minutes)
joint.surro.ovar <- jointSurroPenal(data = dataOvarian, n.knots = 8,
init.kappa = c(2000,1000), indicator.alpha = 0, nb.mc = 200,
scale = 1/365)
# results
summary(joint.surro.ovar)
print(joint.surro.ovar)
## End(Not run)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.