LogLik.phGH <-
function (thetas, lambda0) {
betas <- thetas[1:ncx]
sigma <- exp(thetas[ncx + 1])
gammas <- thetas[seq(ncx + 2, ncx + 1 + ncww)]
alpha <- thetas[ncx + ncww + 2]
D <- thetas[seq(ncx + ncww + 3, length(thetas))]
D <- if (diag.D) exp(D) else chol.transf(D)
# linear predictors
eta.yx <- as.vector(X %*% betas)
eta.yxT <- as.vector(Xtime %*% betas)
eta.yxT2 <- as.vector(Xtime2 %*% betas)
Y <- eta.yxT + Ztime.b
Y2 <- eta.yxT2 + Ztime2.b
eta.tw <- if (!is.null(WW)) as.vector(WW %*% gammas) else rep(0, n)
eta.t <- eta.tw + alpha * Y
eta.s <- alpha * Y2
exp.eta.s <- exp(eta.s)
mu.y <- eta.yx + Ztb
logNorm <- dnorm(y, mu.y, sigma, TRUE)
log.p.yb <- rowsum(logNorm, id); dimnames(log.p.yb) <- NULL
log.lambda0T <- log(lambda0[ind.T0])
log.lambda0T[is.na(log.lambda0T)] <- 0
log.hazard <- log.lambda0T + eta.t
S <- matrix(0, n, k)
S[unq.indT, ] <- rowsum(lambda0[ind.L1] * exp.eta.s, indT, reorder = FALSE)
log.survival <- - exp(eta.tw) * S
log.p.tb <- d * log.hazard + log.survival
log.p.b <- if (control$typeGH == "simple") {
rep(dmvnorm(b, rep(0, ncz), D, TRUE), each = n)
} else {
matrix(dmvnorm(do.call(rbind, lis.b), rep(0, ncz), D, TRUE), n, k, byrow = TRUE)
}
p.ytb <- exp(log.p.yb + log.p.tb + log.p.b)
if (control$typeGH != "simple")
p.ytb <- p.ytb * VCdets
dimnames(p.ytb) <- NULL
p.yt <- c(p.ytb %*% wGH)
p.byt <- p.ytb / p.yt
log.p.yt <- log(p.yt)
- sum(log.p.yt[is.finite(log.p.yt)], na.rm = TRUE)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.