-rank test for equality of survivor functions
Log
| Events Events
| observed expected
surgery --------+-------------------------
0 | 69 60.34
1 | 6 14.66
--------+-------------------------
| 75 75.00
Total
chi2(1) = 6.59
>chi2 = 0.0103
Pr
Wilcoxon (Breslow) test for equality of survivor functions
| Events Events Sum of
| observed expected ranks
surgery --------+--------------------------------------
0 | 69 60.34 623
1 | 6 14.66 -623
--------+--------------------------------------
| 75 75.00 0
Total
chi2(1) = 8.99
>chi2 = 0.0027
Pr
-Ware test for equality of survivor functions
Tarone
| Events Events Sum of
| observed expected ranks
surgery --------+--------------------------------------
0 | 69 60.34 73.111827
1 | 6 14.66 -73.111827
--------+--------------------------------------
| 75 75.00 0
Total
chi2(1) = 8.46
>chi2 = 0.0036
Pr
-Peto test for equality of survivor functions
Peto
| Events Events Sum of
| observed expected ranks
surgery --------+--------------------------------------
0 | 69 60.34 6.0529913
1 | 6 14.66 -6.0529913
--------+--------------------------------------
| 75 75.00 0
Total
chi2(1) = 8.66
>chi2 = 0.0033 Pr
Tests de comparaison
Les tests d’égalités des fonctions de survie entre différentes valeurs d’une covariable sont calculés à partir de la méthode de Kaplan Meier.
L’utilisation du test correspond à la nécessité de déterminer si une même distribution gouverne les évènements observés dans les différentes strates.
Attention: pas de test possible sur des variables continues. Il faut donc prévoir des regroupements pour les transformer en variable ordinale.
Deux méthodes sont utilisées:
- La plus ancienne et la plus diffusée: test dits du log-rank).
- Plus récente et (hélas) moins difusée: comparaison des RMST (Restricted Mean of Survival Time).
Tests du log-rank
Il s’agit d’une série de tests qui répondent à la même logique, la seule différence réside dans le poids accordé au début ou à la fin de la période d’observation. Par ailleurs ces différents tests sont plus ou moins sensibles à la distribution des censures à droites entre les sous échantillons.
Dans leur logique, ces tests entrent dans le cadre des tests d’indépendance du Khi2, même si formellement ils relèvent des techniques dites de rang.
Il s’agira donc de comparer des effectifs observés à des effectifs espérés à chaque temps d’évènement. La principale différence réside dans le calcul de la variance de la statistique du test qui, ici, suit une loi hypergéométrique (proche loi binomiale mais avec tirage sans remise).
Principe de calcul des effectifs - évènements - observés et espérés pour deux groupes
- Effectifs observés en \(t_i\): \(o_{i1}\) et \(o_{i2}\) sont égaux à \(d_{i1}\) et \(d_{i2}\), et leur somme pour tous les temps d’évènement à \(O_1\) et \(O_2\).
- Effectifs expérés (hypothèse nulle \(H_0\)): comme pour une statistique du \(\chi^2\) on se base sur les marges, avec le risque set (\(R_i\)) en \(t_i\) pour dénombrer les effectifs, soit \(e_{i1}=R_{i1}\times\frac{d_i}{R_i}\) et \(e_{i2}=R_{i2}\times\frac{d_2}{R_i}\). Leur somme pour tous les temps d’évènement est égale à \(E_1\) et \(E_2\). Le principe de calcul des effectifs observés reposent donc sur l’hypothèse d’un rapport des risques toujours égal à 1 au cours du temps (hypothèse fondamentale de risques proportionnels).
- Statistique du log-rank: \((O_1 - E_1) = -(O_2 - E_2)\).
- Statistique de test: sous \(H_0\), \(\frac{(O_1 - E_1)^2}{\sum{v_i}}\), avec \(v_i\) la variance de \((o_{i1} - e_{i2})\), suis un \(\chi^2(1)\). Si on teste la différence de \(g\) fonctions de survie, la statistique de test suis un \(\chi^2(g-1)\).
Les principaux tests de type log-rank
Le principe de construction des effectifs observés et espérés reste le même dans chaque test, les différences résident dans les pondérations (\(w_i\)) qui prennent en compte, de manière différente, la taille de la population soumise au risque à chaque durée où au moins un évènement est observé.
- Test du log-rank: \(w_i=1\)
Il accorde le même poids à toutes les durées d’évènement. C’est le test standard, le plus utilisé. - Test de Wilconxon-Breslow-Grehan: \(w_i=R_i\)
Les écarts entre effectifs observés et espérés sont pondérés par la population soumise à risque en \(t_i\). Le test accorde plus de poids au début de la période analysée, et il est sensible aux différences de distributions entre les strates des observations censurées. - Test de Tarone-Ware: \(w_i=\sqrt{R_i}\)
Variante du test précédent, il atténue le poids accordé aux évènements au début de la période d’observation. Il est par ailleurs moins sensible au problème de la distribution des censures entre les strates. - Test de Peto-Peto : \(w_i=S_i\)
La pondération est une variante de la fonction de survie KM (avec \(R_i=R_i+1\)). Le test n’est pas sensible au problème de distribution des censures. - Test de Fleming-Harington: \(w_i=(S_i)^p\times(1-S_i)^{q}\) avec \(0\leq{p}\leq{1}\) Il permet de paramétrer le poids accordé au début où à la fin de temps d’observation. Si \(p=q=0\) on retrouve le test du log-rank.
En pratique/remarques:
- Les tests du log-rank sont sensibles à l’hypothèse de risques proportionnels (voir modèle semi-paramétrique de Cox). En pratique si des courbes de séjours se croisent, il est fortement déconseillé de ne pas les utiliser. Cela ne signifie pas que si les courbes ne se croisent pas, l’hypothèse de proportionnalité des risques est respectée : des rapports de risque peuvent au cours du temps s’intensifier, se réduire ou le cas échant s’inverser (typique d’un croisement).
- Effectuer un test global (multiple/omnibus) sur un nombre important de groupes (ou >2) peut rendre le test très facilement significatif. Il peut être intéressant de tester des courbes deux à deux (idem qu’une régression avec covariable discrète), en conservant un seul degré de liberté. Des méthodes de correction du test multiple sont possibles.
R-Stata-Sas-Python
On utilise la fonction survdiff
de la librairie survival
. Le résultat du test de Peto-Peto est affiché par défaut (rho=1
). Si on souhaite utiliser le test non pondéré, on ajoute l’option rho=0
. Pour obtenir le résultat d’un test multiple corrigé (plus d’un degré de liberté), on peut utiliser la fonction pairwise_survdiff
de la librairie survminer
. Cette fonction permet d’obtenir des tests 2 à 2 si une variable a plus de deux groupes.
Je conseille de rester sur l’option Peto-Peto et dans le cas d’une variable à plus de deux modalités, d’utiliser la fonction de survminer
pairwise_survdiff
.
Stata
On utilise la commande sts test
avec le nom de la version du test: peto
, wilcoxon
. Sans préciser le nom de la variante, le test non pondéré est exécuté.
Le test non pondéré et la version Wilcoxon sont données avec l’option strata
de la proc lifetest
. Attention : ne jamais utiliser la version LR Test qui est biaisée. Pour obtenir d’autres versions du test du log-rank, on ajoute /test=all
à l’option strata
.
Avec la librairie lifelines
, on utilise la fonction logrank_test
. Quatre variantes sont disponibles (Wilcoxon, Tarone-Ware, Peto-Peto et Fleming-Harrigton). On peut également utiliser la fonction duration.survdiff
de statmodels
(non pondéré, Wilcoxon - appelé ici Breslow- et Tarone-Ware).
Application
On compare ici l’effet du pontage sur le risque de décéder depuis l’inscription dans le registre de greffe.
Les résultats font apparaître que l’opération permet d’allonger la durée de survie des personnes.
Comparaison des RMST
RMST: Restricted Mean of Survival Time
La comparaison des RMST est une alternative pertinente aux tests du log-rank car elle ne repose pas sur des hypothèses contraignantes (proportionnalité des risques, distribution des censures), et permet une lecture vivante basée sur des espérances de séjour et non sur la lecture d’une simple p-value traduisant l’homogénéité ou non des fonctions de séjour. Par ailleurs les comparaisons sont souples, on peut choisir un ou plusieurs points d’horizon pour alimenter l’analyse.
Principe
- L’aire sous la fonction de survie représente la durée moyenne d’attente jusqu’à l’évènement, soit une espérance de survie.
- En présence de censure à droite, il faut borner la durée maximale \(t^*<\infty\). L’espérance de survie s’interprète donc sur un horizon fini. On est très proche d’une mesure en analyse démographique type « espérance de vie partielle ».
- \(RMST =\int_0^{t^*}S(t)dt\).
- On peut facilement comparer les RMST de deux groupes, en termes de différence ou de ratio.
- Par défaut on définit généralement \(t^*\) à partir le temps du dernier évènement observé. Il est néanmoins possible de calculer le RMST sur des intervalles plus court, ce qui lui permet une véritable souplesse au niveau de l’analyse.
R-Stata-Sas-Python
Attention, selon les logiciels la durée max par défaut n’est pas la même. Pour R et Sas, il s’agit du dernier évènement observé sur l’ensemble de l’échantillon, alors que Stata prend la durée qui correspond au dernier évènement observé le plus court des deux groupes . Cela affectera légèrement la valeur des Rmst estimées par défaut.
Pour l’exemple, la durée maximale utilisée par R est de 1407 jours alors que pour Stata elle est de 995 jours.
Librairie SurvRm2
. Programmée par les mêmes personnes que la commande Stata, la fonction proposée n’est pas très souple.
Commande externe strmst2
. La plus ancienne fonction proposée par les logiciels. Au final plus limitée que la solution Sas. J’ai programmé une commande, diffrmst
, qui représente graphiquement les estimations des Rmst pour chaque temps d’évènement, leurs différences et les p-value issues des comparaisons.
Disponible depuis la version 15.1 de SAS/Stat (fin 2018). Les estimations et le résultat du test de comparaison sont récupérables très simplement dans une proc lifetest
, avec en option **plots=(rmst)**
. Bien que sortie tardivement par rapport Stata et R, les résultats sont particulièrement complets.
Estimation un peu pénible. A partir de l’estimateur KM obtenu avec la fonction KaplanMeierFitter
de lifelines
, on peut obtenir les RMST avec la fonction restricted_mean_survival_time
. On peut tracer les fonctions, en revanche le test de comparaison n’est pas implémenté.
Application
Avec \(tmax=1407\):
Time (RMST) by arm
Restricted Mean Survival -----------------------------------------------------------
| Estimate Std. Err. [95% Conf. Interval]
Group ---------+-------------------------------------------------
1 | 884.576 187.263 517.546 1251.605
arm 0 | 379.148 61.667 258.282 500.014
arm -----------------------------------------------------------
-group contrast (arm 1 versus arm 0)
Between------------------------------------------------------------------------
| Estimate [95% Conf. Interval] P>|z|
Contrast ---------------------+--------------------------------------------------
RMST (arm 1 - arm 0) | 505.428 119.010 891.846 0.010
RMST (arm 1 / arm 0) | 2.333 1.383 3.937 0.002
------------------------------------------------------------------------
Ici \(t^*\) est égal à 995 jours, soit la durée qui correspond au dernier décès observé lorsqu’une personne a été opérée pour un pontage (surgery=1).
Sur un horizon de 995 jours, ces individus peuvent espérer vivre 735 jours en moyenne, contre 310 jours pour les autres. La durée moyenne de survie est donc deux fois plus importante pour les personnes opérées d’un pontage (rapport des Rmst = 2.3 ), soit une différence de 424 jours.
Rmst et différences de Rmst à tous les points d’évènement jusqu’à \(t_max\)
+--------------------------------------------------------------------------+
| _time _rmst1 _rmst0 _diff _l _u _p |
|--------------------------------------------------------------------------|
| 1 1 1 0 0 0 . |
| 2 2 1.989011 .010989 .010989 .010989 . |
| 3 3 2.945055 .0549451 -.0196757 .1295658 .1489731 |
| 5 5 4.791209 .2087912 .0256584 .3919241 .0254456 |
| 6 6 5.692307 .3076923 .057789 .5575956 .0158133 |
|--------------------------------------------------------------------------|
| 8 8 7.45055 .5494505 .1763489 .9225521 .0038973 |
| 9 9 8.318682 .6813186 .2420128 1.120625 .0023681 |
| 11 11 10.03297 .9670329 .3961081 1.537958 .0009009 |
| 12 12 10.89011 1.10989 .4721783 1.747602 .0006468 |
| 16 16 14.27415 1.725846 .8140225 2.637669 .0002075 |
|--------------------------------------------------------------------------|
| 17 17 15.08677 1.91323 .9159752 2.910484 .0001698 |
| 18 18 15.88825 2.111745 1.041301 3.18219 .0001104 |
| 21 21 18.25931 2.740688 1.446415 4.034961 .0000332 |
| 28 28 23.63593 4.364065 2.515397 6.212732 3.71e-06 |
| 30 30 25.14985 4.85015 2.831877 6.868423 2.48e-06 |
|--------------------------------------------------------------------------|
| 31 31 25.89568 5.104324 3.003999 7.20465 1.91e-06 |
| 32 32 26.6415 5.358499 3.176076 7.540922 1.49e-06 |
| 35 35 28.84508 6.154923 3.725797 8.58405 6.83e-07 |
| 36 36 29.5683 6.431698 3.91906 8.944337 5.25e-07 |
| 37 37 30.28023 6.719774 4.124908 9.314639 3.86e-07 |
|--------------------------------------------------------------------------|
| 39 39 31.68147 7.318526 4.55935 10.0777 2.01e-07 |
| 40 40 32.3708 7.629202 4.787439 10.47097 1.43e-07 |
| 43 43 34.37097 8.629034 5.542204 11.71586 4.28e-08 |
| 45 45 35.68181 9.318189 6.065016 12.57136 1.98e-08 |
| 50 50 38.90242 11.09758 7.42216 14.773 3.26e-09 |
|--------------------------------------------------------------------------|
| 51 51 39.53524 11.46476 7.702096 15.22742 2.34e-09 |
| 53 53 40.77829 12.22171 8.288645 16.15478 1.13e-09 |
| 58 58 43.82939 14.17061 9.806356 18.53486 1.97e-10 |
| 61 61 45.62615 15.37385 10.74582 20.00187 7.47e-11 |
| 66 66 48.56425 17.43575 12.36607 22.50543 1.58e-11 |
|--------------------------------------------------------------------------|
| 68 68 49.71689 18.28311 13.03484 23.53138 8.62e-12 |
| 69 69 50.27061 18.72939 13.39442 24.06436 5.95e-12 |
| 72 72 51.89787 20.10213 14.50967 25.69459 1.85e-12 |
| 77 77 54.49696 22.50304 16.48434 28.52174 2.34e-13 |
| 78 78 55.00547 22.99453 16.8895 29.09955 1.56e-13 |
|--------------------------------------------------------------------------|
| 80 80 55.99991 24.00009 17.72639 30.27379 6.48e-14 |
| 81 81 56.48582 24.51418 18.15691 30.87144 4.11e-14 |
| 85 85 58.38429 26.61571 19.92637 33.30505 6.22e-15 |
| 90 90 60.70087 29.29913 22.19037 36.40789 6.66e-16 |
| 96 96 63.41296 32.58704 24.96899 40.20509 0 |
|--------------------------------------------------------------------------|
| 100 100 65.17583 34.82418 26.86428 42.78407 0 |
| 102 102 66.03465 35.96535 27.83604 44.09465 0 |
| 109 109 68.96146 40.03855 31.31981 48.75728 0 |
| 110 110 69.37957 40.62043 31.81599 49.42487 0 |
| 131 131 77.91607 53.08393 42.4546 63.71326 0 |
|--------------------------------------------------------------------------|
| 149 149 85.23307 63.76693 51.49292 76.04094 0 |
| 153 153 86.81125 66.18875 53.54254 78.83497 0 |
| 165 165 91.40231 73.59769 59.87227 87.32312 0 |
| 180 178.6364 97.14113 81.49523 51.34539 111.6451 1.17e-07 |
| 186 184.0909 99.43666 84.65425 53.34266 115.9658 1.16e-07 |
|--------------------------------------------------------------------------|
| 188 185.7273 100.2018 85.52544 53.56743 117.4834 1.56e-07 |
| 207 201.2727 107.2365 94.0362 58.18596 129.8865 2.73e-07 |
| 219 211.0909 111.5314 99.55952 61.16466 137.9544 3.73e-07 |
| 263 247.0909 126.7362 120.3547 72.24957 168.4599 9.41e-07 |
| 265 248.7273 127.4026 121.3246 72.75561 169.8937 9.78e-07 |
|--------------------------------------------------------------------------|
| 285 265.0909 134.0671 131.0238 77.89365 184.154 1.34e-06 |
| 308 283.9091 141.1416 142.7675 84.36471 201.1702 1.66e-06 |
| 334 305.1818 148.8057 156.3761 91.9613 220.7909 1.95e-06 |
| 340 310.0909 150.4975 159.5934 93.7855 225.4014 2.00e-06 |
| 342 311.7273 151.0358 160.6915 94.42253 226.9605 2.01e-06 |
|--------------------------------------------------------------------------|
| 370 332.0909 158.5717 173.5192 93.67785 253.3605 .0000205 |
| 397 351.7273 165.8385 185.8887 98.91255 272.865 .000028 |
| 427 373.5454 173.9127 199.6327 104.6535 294.6119 .000038 |
| 445 386.6364 178.7573 207.8791 108.0677 307.6905 .0000446 |
| 482 413.5454 188.7155 224.83 115.0288 334.6311 .0000599 |
|--------------------------------------------------------------------------|
| 515 437.5454 197.5971 239.9483 121.1859 358.7108 .000075 |
| 545 459.3636 205.6714 253.6923 126.75 380.6345 .0000897 |
| 583 487 215.8987 271.1013 133.7616 408.4409 .0001093 |
| 596 494.8788 219.3976 275.4812 134.5257 416.4367 .0001279 |
| 620 509.4243 225.8569 283.5673 136.4685 430.6661 .0001579 |
|--------------------------------------------------------------------------|
| 670 539.7273 239.314 300.4133 140.0707 460.7559 .0002405 |
| 675 542.7576 240.6597 302.0979 140.4021 463.7937 .0002504 |
| 733 577.9091 254.969 322.9401 145.3684 500.5117 .0003646 |
| 841 643.3636 279.1917 364.1719 155.9433 572.4006 .0006085 |
| 852 650.0303 281.6588 368.3715 156.9479 579.7951 .000638 |
|--------------------------------------------------------------------------|
| 915 688.2121 294.2187 393.9934 164.2454 623.7415 .0007762 |
| 941 703.9697 299.4022 404.5675 167.1593 641.9757 .0008379 |
| 979 727 306.978 420.022 171.3307 668.7133 .0009322 |
| 995 734.7576 310.1678 424.5898 149.6405 699.539 .0024726 |
| 1032 748.2121 317.5443 430.6678 146.6368 714.6989 .0029603 |
|--------------------------------------------------------------------------|
| 1141 787.8485 335.6531 452.1953 140.3977 763.993 .004476 |
| 1321 853.303 365.5577 487.7454 126.7704 848.7203 .0080902 |
| 1386 876.9394 376.3565 500.5829 121.0615 880.1041 .0097333 |
| 1400 882.0303 378.2173 503.813 119.4061 888.2199 .0102058 |
| 1407 884.5757 379.1476 505.4281 119.0099 891.8464 .0103594 |
+--------------------------------------------------------------------------+
Le graphique suivant, donne les valeurs des Rmst et les écarts de la variable surgery en faisant varier \(tmax\) sur chaque durée où un décès a été observé. Il a été réalisé avec Stata, la durée maximale utilisée a été paramétré à 1407 jours (idem R, Sas).