# Setting a seed for reproducibility
set.seed(1123)
#-------------------------
# Simulating Survival data
#-------------------------
N <- c(7, 10, 13) # the sample sizes of 3 datasets
beta <- 1:4
p <- length(beta)
L <- 3
# Define a function to generate multivariate normal samples
mvrnorm_new <- function(n, mu, Sigma) {
pp <- length(mu)
e <- matrix(rnorm(n * pp), nrow = n)
return(crossprod(t(e), chol(Sigma)) + matrix(mu, n, pp, byrow = TRUE))
}
Z <- list()
for (z in seq_len(L)) {
Z[[z]] <- mvrnorm_new(n = N[z], mu = rep(0, p),
Sigma = diag(rep(1, p),p))
colnames(Z[[z]]) <- paste0("Z_",seq_len(ncol(Z[[z]])))
}
# One simulated dataset from exponential distribution with no censoring:
surv_data <- surv.simulate(Z = Z[[1]], beta = beta, a = exp(-.9),
cen_rate = 0, gen_data_from = "exp")
surv_data
surv_data$D[[1]][,1:2] # The simulated survival data
# Calculate only 'u2' with a predefined censoring rate of 0.4:
u2_new <- surv.simulate(Z = Z[1:2], beta = beta, a = exp(-.9),
b = exp(1.8), u1 = 0.1, only_u2 = TRUE,
cen_rate = 0.4, gen_data_from = "weibul")$u2
u2_new
# Two simulated datasets with a known 'u2':
# Using 'u2_new' to help control over censoring rate (was chosen 0.4)
surv.simulate(Z = Z[1:2], beta = beta, a = exp(-.9), b = exp(1.8),
u1 = 0.05, u2 = u2_new, gen_data_from = "weibul")
# Three simulated datasets from 'weibul' with an unknown 'u2':
surv.simulate(Z = Z, beta = beta, a = exp(-1), b = exp(1),
u1 = 0.01, cen_rate = 0.3, gen_data_from = "weibul")
# Two simulated datasets from 'gomp' with unknown 'u2' and censoring rate of 0.3:
surv.simulate(Z = Z[2:3], beta = beta, a = exp(1), b = exp(2), u1 = 0.1,
cen_rate = 0.3, gen_data_from = "gomp", Trace = TRUE)
Run the code above in your browser using DataLab