The research question revolves around whether a time-varying intervention at a center enhances the transplantation hazard per person. I have patient-level data and I need to account for the center transplant volume. I believe adjusting for the center transplant volume is inappropriate, as it is in the pathway of the event and functions more as a mediator than a confounder. To address transplant volume per center and also, specific practices in each hospital in the analysis, I was planning to conduct the analysis with clustering, as follows:

mod1 = coxph(Surv(tstart, tstop, status)~int.tv, cluster = center_code, data = dat)

But I am not sure if it would be more appropriate to use strata() instead as follows:

mod2 = coxph(Surv(tstart, tstop, status)~int.tv+strata(center_code), data = dat)

What do you think would be the correct approach here? also what would be the difference in the interpretation? there is also a flailty() term that could be considered, but I am not understanding the differences between all these terms.

mod2 = coxph(Surv(tstart, tstop, status)~int.tv+frailty(center_code), data = dat)

  • $\begingroup$ You might be overthinking the possibilities here. Cluster seems to me to be the most natural. Frailty doesn't seem helpful since it is usually a quality that varies among individuals and only incidentally across centers. $\endgroup$ Jan 6 at 22:09

1 Answer 1


Any of those could be reasonable choices, depending on what you want to evaluate.

The strata() choice allows for different baseline hazards among the values of center_code, but doesn't impose any further structure related to center_code or allow comparisons among centers.

The cluster() and frailty() choices are of marginal and conditional (mixed-effect) models, respectively. Section 9.2 of Therneau and Grambsch puts the distinction between them this way, in the context of a study using litters of rats:

The marginal [cluster] model estimates the population averaged relative risk due to treatment; that is, the risk of a random sample of treated rats relative to a random sample of untreated, and the frailty model estimates the relative risk within litters.

The cluster() term provides the same point estimates of coefficients as would the model without it; the standard errors are adjusted to take within-center correlations into account. The frailty() term imposes a particular distribution (gamma, gaussian or t) of random effects among centers. The coxme package allows for more complex Gaussian random effects; it might allow you to evaluate int.tv as a random effect among centers.

If there are only a few values of center_code, you might consider treating it as a fixed effect, and perhaps including an interaction between center_code and int.tv to evaluate differences among centers directly, around a shared baseline hazard.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.