# Solved – Should I correct the p-value when testing Proportionnal Hazard assumption with cox.zph()

When testing the Proportionnal Hazard assumption in a cox model in R, you usually use the `survival::cox.zph()` function.

Output is something like this:

``library(survival) my.cox.model = coxph(someFormula) cox.zph(my.cox.model) #               rho    chisq      p # x1:A     -0.01166   0.4931  0.483 # x1:B     -0.01135   0.4655  0.495 # x1:C      0.00799   0.2328  0.629 # x2        0.02412   2.0777  0.149 # x3        0.00239   0.0204  0.886 # x4        0.00463   0.0767  0.001 ** # GLOBAL         NA  37.5889  0.308 ``

But in doing so, I've made 7 tests in a row, so my alpha (I use 5%) may be broken and I could think there is a HP problem for `x4` because of sole randomness.

Would it make sense to adjust these p-values for multiple comparisons ?

If yes, would a Bonferroni correction be OK ? And should I account the last line ("Global" test) as a hypothesis test ?

PS: The help `?cox.zph` does not say anything about any correction.

Contents

You don't want to do multiple-comparison corrections for `cox.zph()` types of tests, as you are trying to protect yourself from something different than Type I errors.
For testing the proportional hazards (PH) assumption, you want to convince a skeptical reviewer that a Cox model with its assumption of PH is a valid approach. In effect you would like to prove the null hypothesis of the `cox.zph()` test that PH holds. That isn't formally possible, so you need to be sensitive to any indications that PH is violated and take appropriate action in that case. Put another way, you want to err on the side of potential false-positives for violation of PH. Thus multiple-comparison corrections go in the wrong direction.
I at least start to worry if I find p-values below 0.2 or 0.1 in `cox.zph()`, as those values mean that there is only a 20% or 10% chance that such a deviation from true PH is due to chance. I immediately take action if I see "significant" p-values like yours for `x4`. You should certainly look at the plots of scaled Schoenfeld residuals over time that `cox.zph()` provides, to get a sense of what might be going on. Stratification on the variable(s) potentially violating PH can help.