# loading simulated data set
data(scrData)
n = dim(scrData)[1]
p1 = 2
p2 = 2
p3 = 2
nCov <- c(p1, p2, p3)
###############################
# setting hyperparameter values for semi-parametric analysis
a1 <- 0.7 # prior parameters for 1/sigma_1^2
b1 <- 0.7
a2 <- 0.7 # prior parameters for 1/sigma_2^2
b2 <- 0.7
a3 <- 0.7 # prior parameters for 1/sigma_3^2
b3 <- 0.7
alpha1 <- 10 # prior parameter for J1
alpha2 <- 10 # prior parameter for J2
alpha3 <- 10 # prior parameter for J3
c_lam1 <- 1 # prior parameter for MVN-ICAR specification
c_lam2 <- 1
c_lam3 <- 1
psi <- 0.7 # prior parameters for 1/theta
omega <- 0.7
nGam_save <- 5 # the number of subjects whose gamma parameters are being saved
hyperParams <- c(a1, b1, a2, b2, a3, b3, alpha1, alpha2, alpha3, c_lam1, c_lam2, c_lam3,
psi, omega)
#########################
# setting starting values
s1_max <- max(scrData$time1[scrData$event1 == 1])
s2_max <- max(scrData$time2[scrData$event1 == 0 & scrData$event2 == 1])
s3_max <- max(scrData$time2[scrData$event1 == 1 & scrData$event2 == 1])
beta1 <- c(0.1, 0.1)
beta2 <- c(0.1, 0.1)
beta3 <- c(0.1, 0.1)
s1 <- c(seq(4, 36, 4), s1_max)
s2 <- c(seq(4, 36, 4), s2_max)
s3 <- c(seq(4, 36, 4), s3_max)
J1 <- length(s1) - 1
J2 <- length(s2) - 1
J3 <- length(s3) - 1
lambda1 <- runif(J1+1, -2, -1)
lambda2 <- runif(J2+1, -2, -1)
lambda3 <- runif(J3+1, -2, -1)
sigSq_lam1 <- var(lambda1)
sigSq_lam2 <- var(lambda2)
sigSq_lam3 <- var(lambda3)
mu_lam1 <- mean(lambda1)
mu_lam2 <- mean(lambda2)
mu_lam3 <- mean(lambda3)
theta <- 3.3
gamma <- rgamma(n, 1/theta, 1/theta)
# chain 1
startValues <- list()
startValues[[1]] <- as.vector(c(beta1, beta2, beta3, J1, J2, J3, mu_lam1, mu_lam2, mu_lam3,
sigSq_lam1, sigSq_lam2, sigSq_lam3, theta, gamma, lambda1, lambda2, lambda3, s1, s2, s3))
beta1 <- c(0.2, 0.3)
beta2 <- c(0.2, 0.3)
beta3 <- c(0.2, 0.3)
lambda1 <- runif(J1+1, -2, -1)
lambda2 <- runif(J2+1, -2, -1)
lambda3 <- runif(J3+1, -2, -1)
# chain 2
startValues[[2]] <- as.vector(c(beta1, beta2, beta3, J1, J2, J3, mu_lam1, mu_lam2, mu_lam3,
sigSq_lam1, sigSq_lam2, sigSq_lam3, theta, gamma, lambda1, lambda2, lambda3, s1, s2, s3))
##################################################
# setting variable values needed for MHG algorithm
C1 <- 0.20
C2 <- 0.20
C3 <- 0.20
delPert1 <- 0.5
delPert2 <- 0.5
delPert3 <- 0.5
s_propBI1 <- floor(sort(unique(scrData$time1[scrData$event1 == 1])))
s_propBI1 <- unique(s_propBI1[s_propBI1 < s1_max])
s_propBI2 <- floor(sort(unique(scrData$time2[scrData$event1 == 0 & scrData$event2 == 1])))
s_propBI2 <- unique(s_propBI2[s_propBI2 < s2_max])
s_propBI3 <- floor(sort(unique(scrData$time2[scrData$event1 == 1 & scrData$event2 == 1])))
s_propBI3 <- unique(s_propBI3[s_propBI3 < s3_max])
num_s_propBI1 <- length(s_propBI1)
num_s_propBI2 <- length(s_propBI2)
num_s_propBI3 <- length(s_propBI3)
J1_max <- 50
J2_max <- 50
J3_max <- 50
time_lambda1 <- 1:36
time_lambda2 <- 1:36
time_lambda3 <- 1:36
nTime_lambda1 <- length(time_lambda1)
nTime_lambda2 <- length(time_lambda2)
nTime_lambda3 <- length(time_lambda3)
mhProp_theta_var <- 0.05
mcmcParams <- c(C1, C2, C3, delPert1, delPert2, delPert3, num_s_propBI1, num_s_propBI2,
num_s_propBI3, J1_max, J2_max, J3_max, s1_max, s2_max, s3_max, nTime_lambda1,
nTime_lambda2, nTime_lambda3, s_propBI1, s_propBI2, s_propBI3, time_lambda1,
time_lambda2, time_lambda3, mhProp_theta_var)
##################################################
# number of chains
numReps = 2e6
thin = 20
burninPerc = 0.5
path1 = "outcome/"
type = "semi-parametric"
model = "Markov"
nChain = 2
# fitting Bayesian semi-parametric regression model to semi-competing risks data
# In practice, set 'numReps' to a larger number such as 1000000
fitScr <- BayesID(scrData, nCov, hyperParams, startValues, mcmcParams, nGam_save,
numReps, thin, path1, burninPerc, type, model, nChain)
print(fitScr)
summary(fitScr)
## plot for estimates of baseline hazard functions
plot(fitScr)
## calculating conditional explanatory hazard ratio
vals <- ehr(c(1.5, 0), c(2, 1), fitScr)
plot(vals)
Run the code above in your browser using DataLab