Nothing
library(coxme)
options(na.action='na.exclude', contrasts=c('contr.treatment', 'contr.poly'))
aeq <- function(x,y, ...) all.equal(as.vector(x), as.vector(y), ...)
#
# Same data set as slope1
#
set.seed(56)
n.subject <- seq(180, by=21, length=9) # number of subjects
slope <- sort(-.5 + rnorm(9, sd=.5)) # true treament effects
inst <- rep(1:9, n.subject)
n <- length(inst)
simdata <- data.frame(id=1:n, inst=inst,
trt= rep(0:1, length=n),
age= runif(n, 40, 70))
#risk goes up 30%/decade of age
simdata$hazard <- .8* exp(simdata$trt * rep(slope, n.subject) +
(simdata$age-55) * .03)
rtime <- function(hazard, censor=c(1,2)) {
stime <- rexp(length(hazard), rate=hazard)
ctime <- runif(length(hazard), censor[1], censor[2])
list(time= pmin(stime, ctime), status=1*(stime <=ctime))
}
temp <- rtime(simdata$hazard)
simdata$time <- temp$time
simdata$status <- temp$status
#
# Test out the refine.n code, using the simdata
# A simple diagonal variance
#
# For original testing we had nsim=100, changed to 10 for a CRAN speedup
nsim <- 10
var <- .3 #sizeable
set.seed(20)
fit1 <- coxme(Surv(time, status) ~ age + trt + (trt|inst) + strata(inst),
vfixed=.3, simdata, refine.n=nsim, refine.detail=TRUE)
debug <- fit1$refine.detail
nfrail <- length(unlist(ranef(fit1)))
hmatbb <- fit1$hmat[1:nfrail, 1:nfrail]
bhat <- unlist(ranef(fit1)) #random coefs
set.seed(20)
rdf <- coxme.control()$refine.df
bmat <- matrix(rnorm(nfrail*nsim), nfrail) # replicate the simulations
bmat <- backsolve(hmatbb, bmat) /
rep(sqrt(rchisq(nsim, rdf)/rdf), each=nfrail)
bmat <- bmat + bhat
if (!is.null(debug)) all.equal(bmat, debug$bmat)
clog <- double(nsim)
Xmat <- scale(as.matrix(simdata[,c('age', 'trt')]), fit1$means, FALSE)
# Part 1, loglik for a set of nearby Cox models
fix.lp <- Xmat %*% fixef(fit1)
for (i in 1:nsim) {
lp <- fix.lp + bmat[simdata$inst,i]*simdata$trt
tfit <- coxph(Surv(time, status) ~ offset(lp) + strata(inst), simdata)
clog[i] <- tfit$loglik
}
if (!is.null(debug)) aeq(clog, debug$loglik)
# Part 2: Taylor series for the PPL
b.sig <- t(bmat-bhat) %*% hmatbb #b time sqrt(H)
taylor <- rowSums(b.sig^2)/2
temp2 <- cbind(clog-colSums(bmat^2)/.6 , fit1$log[3] - taylor)
m2 <- fit1$log[2]
errhat <- exp(temp2[,1]-m2) - exp(temp2[,2]-m2)
require(mvtnorm)
tdens <- dmvt(t(bmat), delta=bhat, sigma=as.matrix(solve(hmatbb)), df=rdf)
gdens <- -(log(2*pi) + log(.3))*nfrail/2
errhat <- errhat * exp(gdens-tdens) # account for importance sampling dis
if (!is.null(debug)) {
aeq(errhat, debug$errhat)
}
mtemp <- mean(errhat)
aeq(c(log(1+ mean(errhat)), sqrt(var(errhat)/nsim)/(1+mtemp)), fit1$refine)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.