Learn R Programming

gsscopu (version 0.9-3)

sshzd2d: Estimating 2-D Hazard Function Using Smoothing Splines

Description

Estimate 2-D hazard function using smoothing spline ANOVA models.

Usage

sshzd2d(formula1, formula2, symmetry=FALSE, data, alpha=1.4,
        weights=NULL, subset=NULL, id.basis=NULL, nbasis=NULL, seed=NULL,
        prec=1e-7, maxiter=30, skip.iter=FALSE)

sshzd2d1(formula1, formula2, symmetry=FALSE, data, alpha=1.4, weights=NULL, subset=NULL, rho="marginal", id.basis=NULL, nbasis=NULL, seed=NULL, prec=1e-7, maxiter=30, skip.iter=FALSE)

Arguments

formula1
Description of the hazard model to be fit on the first axis.
formula2
Description of the hazard model to be fit on the second axis.
symmetry
Flag indicating whether to enforce symmetry of the two axes.
data
Data frame containing the variables in the model.
alpha
Parameter defining cross-validation scores for smoothing parameter selection.
weights
Optional vector of counts for duplicated data.
subset
Optional vector specifying a subset of observations to be used in the fitting process.
id.basis
Index of observations to be used as "knots."
nbasis
Number of "knots" to be used. Ignored when id.basis is specified.
seed
Seed to be used for the random generation of "knots." Ignored when id.basis is specified.
prec
Precision requirement for internal iterations.
maxiter
Maximum number of iterations allowed for internal iterations.
skip.iter
Flag indicating whether to use initial values of theta and skip theta iteration in marginal hazard estimation.
rho
Choice of rho function for sshzd2d1: "marginal" or "weibull".

Value

  • sshzd2d and sshzd2d1 return a list object of class "sshzd2d".

    hzdrate.sshzd2d can be used to evaluate the estimated 2-D hazard function. survexp.sshzd2d can be used to calculate estimated survival functions.

Details

The 2-D survival function is expressed as $S(t1,t2)=C(S1(t1),S2(t2))$, where $S1(t1)$, $S2(t2)$ are marginal survival functions and $C(u1,u2)$ is a 2-D copula. The marginal survival functions are estimated via the marginal hazards as in sshzd, and the copula is estimated nonparametrically by calling sscopu2.

When symmetry=TRUE, a common marginal survial function S1(t)=S2(t) is estimated, and a symmetric copula is estimated such that $C(u1,u2)=C(u2,u1)$.

Covariates can be incorporated in the marginal hazard models as in sshzd, including parametric terms via partial and frailty terms via random. Arguments formula1 and formula2 are typically model formulas of the same form as the argument formula in sshzd, but when partial or random are needed, formula1 and formula2 should be lists with model formulas as the first elements and partial/random as named elements; when necessary, variable configurations (that are done via argument type in sshzd) should also be entered as named elements of lists formula1/formula2.

When symmetry=TRUE, parallel model formulas must be consistent of each other, such as l{ formula1=list(Surv(t1,d1)~t1*u1,partial=~z1,random=~1|id1) formula2=list(Surv(t2,d2)~t2*u2,partial=~z2,random=~1|id2) } where pairs t1-t2, d2-d2 respectively are different elements in data, pairs u1-u2, z1-z2 respectively may or may not be different elements in data, and factors id1 and id2 are typically the same but at least should have the same levels.

References

Gu, C. (2013), Hazard estimation with bivariate survival data and copula density estimation.

Examples

Run this code
## THE FOLLOWING EXAMPLE IS TIME-CONSUMING
data(DiaRet)
## Common proportional hazard model on the margins
fit <- sshzd2d(Surv(time1,status1)~time1+trt1*type,
               Surv(time2,status2)~time2+trt2*type,
               data=DiaRet,symmetry=TRUE)
## Evaluate fitted survival and hazard functions
time <- cbind(c(50,70),c(70,70))
cova <- data.frame(trt1=as.factor(c(1,1)),trt2=as.factor(c(1,0)),
                   type=as.factor(c("juvenile","adult")))
survexp.sshzd2d(fit,time,cov=cova)
hzdrate.sshzd2d(fit,time,cov=cova)
## Association between margins: Kendall's tau and Spearman's rho
summary(fit$copu)
## Clean up
rm(DiaRet,fit,time,cova)
dev.off()

Run the code above in your browser using DataLab