Skip to contents

This vignette covers changes between versions 0.2.4 and 0.2.5 for specifiyng weights in the log-rank comparisons done in ggsurvplot().

Log-rank statistic for 2 groups

As it is stated in the literature, the Log-rank test for comparing survival (estimates of survival curves) in 2 groups (AA and BB) is based on the below statistic

LR=U2Vχ(1),LR = \frac{U^2}{V} \sim \chi(1),

where U=i=1Twti(otiAetiA),V=Var(U)=i=1T(wti2ntiAntiBoti(ntioti)nti2(nti1))U = \sum_{i=1}^{T}w_{t_i}(o_{t_i}^A-e_{t_i}^A), \ \ \ \ \ \ \ \ V = Var(U) = \sum_{i=1}^{T}(w_{t_i}^2\frac{n_{t_i}^An_{t_i}^Bo_{t_i}(n_{t_i}-o_{t_i})}{n_{t_i}^2(n_{t_i}-1)}) and

  • tit_i for i=1,,Ti=1, \dots, T are possible event times,
  • ntin_{t_i} is the overall risk set size on the time tit_i (nti=ntiA+ntiBn_{t_i} = n_{t_i}^A+n_{t_i}^B),
  • ntiAn_{t_i}^A is the risk set size on the time tit_i in group AA,
  • ntiBn_{t_i}^B is the risk set size on the time tit_i in group BB,
  • otio_{t_i} overall observed events in the time tit_i (oti=otiA+otiBo_{t_i} = o_{t_i}^A+o_{t_i}^B),
  • otiAo_{t_i}^A observed events in the time tit_i in group AA,
  • otiBo_{t_i}^B observed events in the time tit_i in group BB,
  • etie_{t_i} number of overall expected events in the time tit_i (eti=etiA+etiBe_{t_i} = e_{t_i}^A+e_{t_i}^B),
  • etiAe_{t_i}^A number of expected events in the time tit_i in group AA,
  • etiBe_{t_i}^B number of expected events in the time tit_i in group BB,
  • wtiw_{t_i} is a weight for the statistic,

also remember about few notes

etiA=ntiAotinti,etiB=ntiBotinti,e_{t_i}^A = n_{t_i}^A \frac{o_{t_i}}{n_{t_i}}, \ \ \ \ \ \ \ \ \ \ e_{t_i}^B = n_{t_i}^B \frac{o_{t_i}}{n_{t_i}},etiA+etiB=otiA+otiBe_{t_i}^A + e_{t_i}^B = o_{t_i}^A + o_{t_i}^B

that’s why we can substitute group AA with BB in UU and receive same results.

Weighted Log-rank extensions

Regular Log-rank comparison uses wti=1w_{t_i} = 1 but many modifications to that approach have been proposed. The most popular modifications, called weighted Log-rank tests, are available in ?survMisc::comp

  • n Gehan and Breslow proposed to use wti=ntiw_{t_i} = n_{t_i} (this is also called generalized Wilcoxon),
  • srqtN Tharone and Ware proposed to use wti=ntiw_{t_i} = \sqrt{n_{t_i}},
  • S1 Peto-Peto’s modified survival estimate wti=S1(ti)=i=1T(1etinti+1)w_{t_i} = S1({t_i}) = \prod_{i=1}^{T}(1-\frac{e_{t_i}}{n_{t_i}+1}),
  • S2 modified Peto-Peto (by Andersen) wti=S2(ti)=S1(ti)ntinti+1w_{t_i} = S2({t_i}) = \frac{S1({t_i})n_{t_i}}{n_{t_i}+1},
  • FH Fleming-Harrington wti=S(ti)p(1S(ti))qw_{t_i} = S(t_i)^p(1 - S(t_i))^q.

Watch out for FH as I submitted an info on survMisc repository where I think their mathematical notation is misleading for Fleming-Harrington.

Why are they useful?

The regular Log-rank test is sensitive to detect differences in late survival times, where Gehan-Breslow and Tharone-Ware propositions might be used if one is interested in early differences in survival times. Peto-Peto modifications are also useful in early differences and are more robust (than Tharone-Whare or Gehan-Breslow) for situations where many observations are censored. The most flexible is Fleming-Harrington method for weights, where high p indicates detecting early differences and high q indicates detecting differences in late survival times. But there is always an issue on how to detect p and q.

Remember that test selection should be performed at the research design level! Not after looking in the dataset.

Plots

library("survival")
data("lung")
fit <- survfit(Surv(time, status) ~ sex, data = lung)

After preparing a functionality for this GitHub’s issue Other tests than log-rank for testing survival curves and Log-rank test for trend we are now able to compute p-values for various Log-rank test in survminer package. Let as see below examples on executing all possible tests.

Log-rank (survdiff)

ggsurvplot(fit, data = lung, pval = TRUE, pval.method = TRUE)

Log-rank (comp)

ggsurvplot(fit, data = lung, pval = TRUE, pval.method = TRUE,
           log.rank.weights = "1")

Gehan-Breslow (generalized Wilcoxon)

ggsurvplot(fit, data = lung, pval = TRUE, pval.method = TRUE,
           log.rank.weights = "n", pval.method.coord = c(5, 0.1),
           pval.method.size = 3)

Tharone-Ware

ggsurvplot(fit, data = lung, pval = TRUE, pval.method = TRUE,
           log.rank.weights = "sqrtN", pval.method.coord = c(3, 0.1),
           pval.method.size = 4)

Peto-Peto’s modified survival estimate

ggsurvplot(fit, data = lung, pval = TRUE, pval.method = TRUE,
           log.rank.weights = "S1", pval.method.coord = c(5, 0.1),
           pval.method.size = 3)

modified Peto-Peto’s (by Andersen)

ggsurvplot(fit, data = lung, pval = TRUE, pval.method = TRUE,
           log.rank.weights = "S2", pval.method.coord = c(5, 0.1),
           pval.method.size = 3)

Fleming-Harrington (p=1, q=1)

ggsurvplot(fit, data = lung, pval = TRUE, pval.method = TRUE,
           log.rank.weights = "FH_p=1_q=1", 
           pval.method.coord = c(5, 0.1),
           pval.method.size = 4)

References

  • Gehan A. A Generalized Wilcoxon Test for Comparing Arbitrarily Singly-Censored Samples. Biometrika 1965 Jun. 52(1/2):203-23.

  • Tarone RE, Ware J 1977 On Distribution-Free Tests for Equality of Survival Distributions. Biometrika;64(1):156-60.

  • Peto R, Peto J 1972 Asymptotically Efficient Rank Invariant Test Procedures. J Royal Statistical Society 135(2):186-207.

  • Fleming TR, Harrington DP, O’Sullivan M 1987 Supremum Versions of the Log-Rank and Generalized Wilcoxon Statistics. J American Statistical Association 82(397):312-20.

  • Billingsly P 1999 Convergence of Probability Measures. New York: John Wiley & Sons.