How to Perform a Log Rank Test in R


 A log rank test is the most common way to compare survival curves between two groups.

This test uses the following hypotheses:

H0: There is no difference in survival between the two groups.

HA: There is a difference in survival between the two groups.

If the p-value of the test is less than some significance level (e.g. α = .05), then we can reject the null hypothesis and conclude that there is sufficient evidence to say there is a difference in survival between the two groups.

To perform a log rank test in R, we can use the survdiff() function from the survival package, which uses the following syntax:

survdiff(Surv(time, status) ~ predictors, data)

This function returns a Chi-Squared test statistic and a corresponding p-value.

The following example shows how to use this function to perform a log rank test in R.

Example: Log Rank Test in R

For this example, we’ll use the ovarian dataset from the survival package. This dataset contains the following information about 26 patients:

  • Survival time (in months) after being diagnosed with ovarian cancer
  • Whether or not survival time was censored
  • Type of treatment received (rx =1 or rx = 2)

The following code shows how to view the first six rows of this dataset:

library(survival)

#view first six rows of dataset
head(ovarian)

  futime fustat     age resid.ds rx ecog.ps
1     59      1 72.3315        2  1       1
2    115      1 74.4932        2  1       1
3    156      1 66.4658        2  1       2
4    421      0 53.3644        2  2       1
5    431      1 50.3397        2  1       1
6    448      0 56.4301        1  1       2

The following code shows how to perform a log rank test to determine if there is a difference in survival between patients who received different treatments:

#perform log rank test
survdiff(Surv(futime, fustat) ~ rx, data=ovarian)

Call:
survdiff(formula = Surv(futime, fustat) ~ rx, data = ovarian)

      N Observed Expected (O-E)^2/E (O-E)^2/V
rx=1 13        7     5.23     0.596      1.06
rx=2 13        5     6.77     0.461      1.06

 Chisq= 1.1  on 1 degrees of freedom, p= 0.3 

The Chi-Squared test statistic is 1.1 with 1 degree of freedom and the corresponding p-value is 0.3. Since this p-value is not less than .05, we fail to reject the null hypothesis.

In other words, we don’t have sufficient evidence to say that there is a statistically significant difference in survival between the two treatments.

We can also plot the survival curves for each group using the following syntax:

#plot survival curves for each treatment group
plot(survfit(Surv(futime, fustat) ~ rx, data = ovarian), 
     xlab = "Time", 
     ylab = "Overall survival probability")

A plot of survival curves in R

We can see that the survival curves are slightly different, but the log rank test told us that the difference is not statistically significant.

Leave a Reply

Your email address will not be published.