# Checking the proportional hazard assumption

I have a question on the cox proportional hazard model, in particular the proportionality assumption. I use cox.zph() function in R to check whether the proportionality assumption is satisfied. The global test of cox.zph() has p-value much greater than 0.05, but one of the covariates has p-value close to 0.01. In this situation, should I do a remodelling (can be stratification or time interaction), or should i say that the assumption is still not violated since globally its not significant? Thank you

• The variable with a p < 0.05 in the PH test violates the proportionality of hazards assumption. Hence, as you said, you need to do either stratified analysis (if the variable that violates the assumtion is categorical -- i.e., nominal or ordinal) or run a Cox model with time-dependent covariate (i.e., time interaction). – Ayalew A. Jul 31 '18 at 15:27
• I would always check the (weighted) Schoenfeld residual plots to validate the proportional hazards assumption. A time-varying effect could more easily be diagnosed through a plot. – dietervdf Aug 2 '18 at 17:20
• @AyalewA. time dependent covariates do not address the issue of non-proportional hazards. – AdamO Apr 3 at 15:20

The global test of proportional hazards is not well-calibrated. You haven't controlled for multiple comparisons. It's difficult to gauge power of the test. $$\alpha=0.05$$ is probably too lax in most sample sizes. The test is arbitrarily powerful in large sample sizes. It's possible that the covariate you identify is a spurious finding, and that it arises from natural variability in the observation of time-to-event data.
Even if the hazards were not proportional, altering the model to fit a set of assumptions fundamentally changes the scientific question. As Tukey said, "Better an approximate answer to the exact question, rather than an exact answer to the approximate question." If you were to fit the Cox model in the presence of non-proportional hazards, what is the net effect? Slightly less power. In fact, you can recover most of that power with robust standard errors (specify robust=TRUE or cluster = ~id). In this case the interpretation of the (exponentiated) model coefficient is a time-weighted average of the hazard ratio--I do this every single time.