Description Usage Arguments Value References Examples
View source: R/Core_CoxICPen_XZ.R
Perform variable selection for Cox regression model with two sets of covariates by using the method in Wu et al. (2020). Variable selection is performed on the possibly high-dimensional covariates x with linear effects. Covariates z with possibly nonlinear effects are always kept in the model.
1 2 3 4 5 6 7 8 9 |
LR |
An n by 2 matrix that contains interval-censored failure times (L, R]. Please set time point R to "Inf" if a subject is right-censored. |
x |
An n by p covariate matrix. Variable selection will be performed on x. Linear covariates effects are assumed. Both p>n and p<n are allowed. |
z |
An n by q covariate matrix. Variable selection will NOT be performed on z. Non-linear covariates effects are assumed. Only q<n is allowed. |
lamb |
The value of the tuning parameter of the penalty term. Can either be a single value or a vector. Cross-validation will be employed to select the optimal lambda if a vector is provided. Default is log(n)/2-2. |
beta.initial |
The initial values for the regression coefficients in the Cox's model. Default is 0. |
pen |
The penalty function. Choices include "RIDGE", "BAR", "LASSO", "ALASSO", "SCAD", "MCP", "SICA", "SELO". Default is "BAR". |
nfold |
Number of folds for cross-validation. Will be ignored if a single lambda value is provided. Default is 5. |
BernD |
The degree of Bernstein polynomials for both cumulative baseline hazard and covariate effects of z. Default is 3. |
subj.wt |
Weight for each subject in the likelihood function. Can be used to incorporate case-cohort design. Default is 1 for each subject. |
beta: Penalized estimates of the regression coefficients in the Cox's model.
phi: Estimates of the coefficients in Bernstein Polynomials.
logL: Log likelihood function based on current parameter estimates and lambda value.
Lamb0: Estimate of the cumulative baseline hazard function at each observation time point.
cv.out: Cross-validation outcome for each lambda. Will be NULL if cross-validation is not performed.
f.est.all: A matrix that contains the values of covariates z and the corresponding estimated effects.
Wu, Q., Zhao, H., Zhu, L., Sun, J. (2020). Variable Selection for High-dimensional Partly Linear Additive Cox Model with Application to Alzheimer's disease. Statistics in Medicines.39(23):3120-3134.
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 44 45 46 47 48 49 50 51 52 | # Generate an example data
require(foreach)
n <- 300 # Sample size
p <- 20 # Number of covariates
bet0 <- c(1, -1, 1, -1, rep(0,p-4)) # True values of regression coefficients
f1 <- function(z) sin(2*pi*z) # True effects of z1
f2 <- function(z) cos(2*pi*z) # True effects of z2
set.seed(1)
x.example <- matrix(rnorm(n*p,0,1),n,p) # Generate x covariates matrix
z.example <- cbind(runif(n,0,1),runif(n,0,1)) # Generate z covariates matrix
T.example <- c()
for (i in 1:n){
T.example[i] <- rexp(1,exp(x.example%*%bet0+
f1(z.example[,1])+f2(z.example[,2]))[i]) # Generate true failure times
}
timep <- seq(0,3,,10)
LR.example <- c()
for (i in 1:n){
obsT <- timep*rbinom(10,1,0.5)
if (max(obsT) < T.example[i]) {LR.example <- rbind(LR.example,c(max(obsT), Inf))} else {
LR.example <- rbind(LR.example,c(max(obsT[obsT<T.example[i]]), min(obsT[obsT>=T.example[i]])))
}
} # Generate interval-censored failure times
# Fit Cox's model with penalized estimation
model1 <- CoxICPen.XZ(LR = LR.example, x = x.example, z = z.example, lamb = 100, pen = "RIDGE")
beta.initial <- model1$beta
model2 <- CoxICPen.XZ(LR = LR.example, x = x.example, z = z.example,
beta.initial = beta.initial, pen = "BAR")
model2$beta
# Plots of covariate effects of z
par(mfrow=c(1,2))
plot(model2$f.est.all$z1, model2$f.est.all$f1, type="l", ylim=c(-1,2),
xlab="z1", ylab="f1")
lines(model2$f.est.all$z1, f1(model2$f.est.all$z1), col="blue")
legend("topright", col=c("black","blue"), lty=rep(1,2), c("Estimate", "True"))
plot(model2$f.est.all$z2, model2$f.est.all$f2, type="l", ylim=c(-1,2),
xlab="z2", ylab="f2")
lines(model2$f.est.all$z2, f2(model2$f.est.all$z2), col="blue")
legend("topright", col=c("black","blue"), lty=rep(1,2), c("Estimate", "True"))
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.