This is my first post here, so please bear with me! I'm comparing several biomarkers with Kaplan-Meier curves and calculating hazard ratios for different risk groups (defined by a certain, well established cut-off value of the biomarker) by using Cox regression in R. We have 3 tiers with a low, intermediate and high risk group, however the low risk group for one biomarker contains no events.

This, so my understanding, leads to quasi-separation in the Cox regression and hence infinite values and large coefficients and SEs. I understand the Likelihood ratio is still valid, but what I'm obviously interested in is a calculation of the HR from exp(coef). A sample of the data is displayed below:

   > head(riskgroups)
   ID FU_3y_death FU_3y_death_days biomarker bm.riskcat
   1           0             1095           58.2    group.3
   2           1               79           11.5    group.2
   22           0             1095           11.7    group.2
   27           0              929            9.0    group.2
   44           0              949            7.0    group.2
   46           0             1095            7.5    group.2

Now I have found that using Firth's method might allow a workaround, hence I've tried to run the analysis using coxphf with the following code:

cox.groups <- coxphf(riskgroups, formula=Surv(FU_3y_death_days,FU_3y_death) ~ bm.riskcat, pl=T, firth = T)

Rather bizarrely, this results in the following error:

Error in coxphf(riskgroups, formula = Surv(FU_3y_death_days, FU_3y_death) ~ : NA/NaN/Inf in foreign function call (arg 3)

I would have assumed that this is exactly what coxphf is trying to avoid? When setting pl to FALSE (to base the tests on the Wald method instead of profile penalised LL) I get results with all NaN. Of course the fact that there is no event in the lowest risk group is in itself an important message, but I do require hazard ratios for the second and third tier of risk categories to compare the different biomarkers. Any bright thoughts on this, my research into this has hit a wall after 3 days of reading...


1 Answer 1


Regression coefficients in a Cox model are calculated from events, based on the covariate values of the individual having an event and the covariate values of all those still at risk at that time. With no events in the lowest-risk group of the 3 groups you thus have no ability to calculate the Cox coefficient for the lowest-risk group or its associated hazard ratio. That's different from a situation where some combination of covariates leads to quasi-separation, or where there are some events in a low-risk group but they all occur after those in another group.

So your wall is insurmountable and impenetrable if you need a hazard ratio representing the lowest-risk category, based on a binned continuous marker, from your data. This is yet another reason to avoid binning a continuous marker, as frequently recommended on this site. Using the marker as a continuous predictor would give you a way to simply walk around the wall.

If binning is necessary, you might be able to use the highest-risk group as the reference factor level and calculate the hazard ratio of the middle-risk group against that reference. But I see no way to get a corresponding hazard ratio for the lowest-risk group if it has no events.


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.