# NOT RUN {
# Examples for hsaftgroupcorr function
burnin <- 50 # number of burnin
nmc <- 100 # number of Markov Chain samples
y.sd <- 1 # standard deviation of the data
p <- 80 # number of covariates
r <- 5 # number of groups
p <- 80 # number of covariate in each group
n1 <- 40 # sample size of 1st group
n2 <- 50 # sample size of 2nd group
n3 <- 70 # sample size of 3rd group
n4 <- 100 # sample size of 4th group
n5 <- 120 # sample size of 5th group
n <- sum(c(n1, n2, n3, n4, n5)) # total sample size
n.seq <- c(n1, n2, n3, n4, n5)
Beta <- matrix(smoothmest::rdoublex(p * r), nrow = r, ncol = p, byrow = TRUE)
# from double exponential distribution
beta <- as.vector(t(Beta)) # vectorize Beta
x1 <- mvtnorm::rmvnorm(n1, mean = rep(0, p))
x2 <- mvtnorm::rmvnorm(n2, mean = rep(0, p))
x3 <- mvtnorm::rmvnorm(n3, mean = rep(0, p))
x4 <- mvtnorm::rmvnorm(n4, mean = rep(0, p))
x5 <- mvtnorm::rmvnorm(n5, mean = rep(0, p)) # from multivariate normal distribution
y.mu1 <- x1 %*% Beta[1, ]
y.mu2 <- x2 %*% Beta[2, ]
y.mu3 <- x3 %*% Beta[3, ]
y.mu4 <- x4 %*% Beta[4, ]
y.mu5 <- x5 %*% Beta[5, ]
y1 <- stats::rnorm(n1, mean = y.mu1, sd = y.sd)
y2 <- stats::rnorm(n2, mean = y.mu2, sd = y.sd)
y3 <- stats::rnorm(n3, mean = y.mu3, sd = y.sd)
y4 <- stats::rnorm(n4, mean = y.mu4, sd = y.sd)
y5 <- stats::rnorm(n5, mean = y.mu5, sd = y.sd)
y <- c(y1, y2, y3, y4, y5)
x <- Matrix::bdiag(x1, x2, x3, x4, x5)
X <- as.matrix(x)
y <- as.numeric(as.matrix(y)) # from normal distribution
T <- exp(y) # AFT model
C <- rgamma(n, shape = 1.75, scale = 3) # censoring time
time <- pmin(T, C) # observed time is min of censored and true
status = time == T # set to 1 if event is observed
ct <- as.matrix(cbind(time = time, status = status)) # censored time
posterior.fit <- hsaftgroupcorr(ct, X, method.tau = "truncatedCauchy", method.sigma = "Jeffreys",
burn = burnin, nmc = nmc,
r = r, n.seq = n.seq, pk = p)
summary(posterior.fit$BetaHat)
# }
Run the code above in your browser using DataLab