R: Test the Proportional Hazards Assumption of a Cox Regression

cox.zph {survival} | R Documentation

## Test the Proportional Hazards Assumption of a Cox Regression

### Description

Test the proportional hazards assumption for a Cox regression model fit (`coxph`).

### Usage

    cox.zph(fit, transform="km", terms=TRUE, singledf=FALSE, global=TRUE)

### Arguments

`fit` | the result of fitting a Cox regression model, using the `coxph` or `coxme` functions.
`transform` | a character string specifying how the survival times should be transformed before the test is performed. Possible values are `"km"`, `"rank"`, `"identity"` or a function of one argument.
`terms` | if TRUE, do a test for each term in the model rather than for each separate covariate. For a factor variable with k levels, for instance, this would lead to a k-1 degree of freedom test. The plot for such variables will be a single curve evaluating the linear predictor over time.
`singledf` | use a single degree of freedom test for terms that have multiple coefficients, i.e., the test that corresponds most closely to the plot. If `terms=FALSE` this argument has no effect.
`global` | should a global chi-square test be done, in addition to the per-variable or per-term tests tests.

### Details

The computations require the original `x` matrix of the Cox model fit. Thus it saves time if the `x=TRUE` option is used in `coxph`. This function would usually be followed by both a plot and a print of the result. The plot gives an estimate of the time-dependent coefficient beta(t). If the proportional hazards assumption holds then the true beta(t) function would be a horizontal line. The `table` component provides the results of a formal score test for slope=0, a linear fit to the plot would approximate the test.

Random effects terms such a `frailty` or random effects in a `coxme` model are not checked for proportional hazards, rather they are treated as a fixed offset in model.

If the model contains strata by covariate interactions, then the `y` matrix may contain structural zeros, i.e., deaths (rows) that had no role in estimation of a given coefficient (column). These are marked as NA. If an entire row is NA, for instance after subscripting a `cox.zph` object, that row is removed.

### Value

an object of class `"cox.zph"`, with components:

`table` | a matrix with one row for each variable, and optionally a last row for the global test. Columns of the matrix contain a score test of for addition of the time-dependent term, the degrees of freedom, and the two-sided p-value.
`x` | the transformed time axis.
`time` | the untransformed time values; there is one entry for each event time in the data
`strata` | for a stratified `coxph model`, the stratum of each of the events
`y` | the matrix of scaled Schoenfeld residuals. There will be one column per term or per variable (depending on the `terms` option above), and one row per event. The row labels are a rounded form of the original times.
`var` | a variance matrix for the covariates, used to create an approximate standard error band for plots
`transform` | the transform of time that was used
`call` | the calling sequence for the routine.

### Note

In versions of the package before survival3.0 the function computed a fast approximation to the score test. Later versions compute the actual score test.

### References

P. Grambsch and T. Therneau (1994), Proportional hazards tests and diagnostics based on weighted residuals. Biometrika, 81, 515-26.

### See Also

`coxph`, `Surv`.

### Examples

    fit <- coxph(Surv(futime, fustat) ~ age + ecog.ps,
                 data=ovarian)
    temp <- cox.zph(fit)
    print(temp)                  # display the results
    plot(temp)                   # plot curves

[Package survival version 3.2-7 Index]