[R] coxme frailty model standard errors?
Terry Therneau
therneau at mayo.edu
Thu Dec 6 17:58:03 CET 2007
--- begin included message
I am running R 2.6.1 on windows xp
I am trying to fit a cox proportional hazard model with a shared
Gaussian frailty term using coxme My model is specified as:
nofit1<-coxme(Surv(Age,cen1new)~ Sex+bo2+bo3,random=~1|isl,data=mydat)
With x1-x3 being dummy variables, and isl being the community level
variable with 4 levels.
Does anyone know if there is a way to get the standard error for the
random effect, like in nofit1$var? I would like to know if my random
effect is worth writing home about.
-- end included message
Computation of the se of the random effect turns out to be very hard, and
worse it isn't worth much when you have done so. For both these reasons coxme
doesn't even try (and it's not on the list of things to add).
First, you can do a likelihood ratio test by comparing the fit to a coxph
model that does not have the random effect. Make sure that the null
loglikelihood for the two fits are the same though! (For instance, one obs was
missing the "isl" variable above, so the two fits have differnt n).
fit1<- coxme(Surv(Age,cen1new)~ Sex+bo2+bo3,random=~1|isl, data=mydat)
fit2<- coxph(Surv(Age,cen1new)~ Sex+bo2+bo3, data=mydat)
fit1$loglik[1:2] - fit2$loglik
The first number printed should be 0, twice the second is distributed as a chisq
on "number of random effects" degrees of freedom. (Not quite. The chisq test
is actually conservative since the random effect is constrained to be >=0. But
it is close, and I'll let someone else work out the details)
Second, you can print a profile likelihood confidence interval. You had a
random effects variance of about .4, so make a guess that the confidence
interval is somewhere between 0 and 2.
vtemp <- seq(0.0001, 2, length=20)
ltemp <- 0*vtemp
for (i in 1:length(vtemp)) {
tfit <- coxme(Surv(Age,cen1new)~ Sex+bo2+bo3,random=~1|isl, data=mydat,
variance= vtemp[i])
ltemp <- 2 * diff(tfit$loglik[1:2])
}
plot(vtemp, ltemp, xlab='Variance', ylab="LR test")
abline(h= 2*diff(fit1$loglik[1:2]) - 3.84)
The sequence of fits each have a fixed value for the variance of the random
effect; the plot shows the profile likelihood. The profile is often very
asymmetric (which is why the se of the random effect isn't worth much). The
intersection of the profile with a line 3.84 units down (chisq on 1df) is the
profile based 95% confidence interval.
Terry Therneau
More information about the R-help
mailing list