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:


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.

Log-rank test for equality of survivor functions

        |   Events         Events
surgery |  observed       expected
--------+-------------------------
0       |        69          60.34
1       |         6          14.66
--------+-------------------------
Total   |        75          75.00

              chi2(1) =       6.59
              Pr>chi2 =     0.0103


Wilcoxon (Breslow) test for equality of survivor functions

        |   Events         Events        Sum of
surgery |  observed       expected        ranks
--------+--------------------------------------
0       |        69          60.34          623
1       |         6          14.66         -623
--------+--------------------------------------
Total   |        75          75.00            0

              chi2(1) =       8.99
              Pr>chi2 =     0.0027


Tarone-Ware test for equality of survivor functions

        |   Events         Events        Sum of
surgery |  observed       expected        ranks
--------+--------------------------------------
0       |        69          60.34    73.111827
1       |         6          14.66   -73.111827
--------+--------------------------------------
Total   |        75          75.00            0

              chi2(1) =       8.46
              Pr>chi2 =     0.0036


Peto-Peto test for equality of survivor functions

        |   Events         Events        Sum of
surgery |  observed       expected        ranks
--------+--------------------------------------
0       |        69          60.34    6.0529913
1       |         6          14.66   -6.0529913
--------+--------------------------------------
Total   |        75          75.00            0

              chi2(1) =       8.66
              Pr>chi2 =     0.0033

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\):

Restricted Mean Survival Time (RMST) by arm
-----------------------------------------------------------
   Group |  Estimate    Std. Err.      [95% Conf. Interval]
---------+-------------------------------------------------
   arm 1 |   884.576     187.263      517.546     1251.605
   arm 0 |   379.148      61.667      258.282      500.014
-----------------------------------------------------------

Between-group contrast (arm 1 versus arm 0) 
------------------------------------------------------------------------
           Contrast  |  Estimate       [95% Conf. Interval]     P>|z|
---------------------+--------------------------------------------------
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).