-- Efron method for ties
Cox regression
= 103 Number of obs = 103
No. of subjects = 75
No. of failures = 31938
Time at risk chi2(3) = 17.63
LR = -289.30639 Prob > chi2 = 0.0005
Log likelihood
------------------------------------------------------------------------------
| Coef. Std. Err. z P>|z| [95% Conf. Interval]
_t -------------+----------------------------------------------------------------
| -0.1196 0.0673 -1.78 0.076 -0.2516 0.0124
year | 0.0296 0.0135 2.19 0.029 0.0031 0.0561
age | -0.9873 0.4363 -2.26 0.024 -1.8424 -0.1323
surgery ------------------------------------------------------------------------------
Modèle de Cox
Le modèle semi-paramétrique de Cox
On peut ignorer la partie sur l’estimation du modèle. On retiendra tout de même qu’il est déconseillé de tester la méthode dite exacte pour la correction de la vraisemblance, qui ne peut matériellement fonctionner qu’avec un nombre très limité d’évènements observés simultanément, ce qui est plutôt rare avec des données à durées discrètes ou groupées, classiques dans les sciences sociales.
La vraisemblance partielle et estimation des paramètres
On se situe dans une situation où la durée est mesurée sur une échelle strictement continue. Il ne peut donc y avoir qu’un seul évènement observé en \(t_i\) (idem si censure):
\[L_i=f(t_i)^{\delta_i}S(t_i)^{1-\delta_i}\]
Vraisemblance partielle de Cox
- \(f(t_i)\) est la valeur de la fonction de densité en \(t_i\)
- \(S(t_i)\) est la valeur de la fonction de survie en \(t_i\)
- \(\delta_i=1\) si l’évènement est observé: \(L_i=f(t_i)\)
- \(\delta_i=0\) si l’observation est censurée: \(L_i=S(t_i)\)
Comme \(f(t_i)=h(t_i)\times S(t_i)\), on obtient: \(L_i=[h(t_i)S(t_i)]^{\delta_i}S(t_i)^{1-\delta_i} = h(t_i)^{\delta_i}S(t_i)\).
Pour \(i=1,2,.....,n\), la vraisemblance totale s’ecrit donc: \(L_i=\prod_{i=1}^{n}h(t_i)^{\delta_i}S(t_i)\).
On peut réécrire cette vraisemblance en la multipliant et en la divisant par: \(\sum_{j\in R_i}h(t_i)\), où \(j\in R_i\) est l’ensemble des observation soumises au risque en \(t_i\).
\[L=\prod_{i=1}^{n}\left[h(t_i)\frac{\sum_{j\in R}h(t_i)}{\sum_{j\in R}h(t_i)}\right]^{\delta_i}S(t_i)= \prod_{i=1}^{n}\left[\frac{h(t_i)}{\sum_{j\in R_i}h(t_i)}\right]^{\delta_i}\sum_{j\in R_i}h(t_i)^{\delta_i}S(t_i)\]
La vraisemblance partielle retient seulement le premier terme de la vraisemblance, soit:
\[PL=\prod_{i=1}^{n}\left[\frac{h(t_i)}{\sum_{j\in R}h(t_i)}\right]^{\delta_i}\]
Une fois remplacée la valeur de \(h(t_i)\) par son expression en tant que modèle à risques proportionnels, la vraisemblance partielle ne dépendra plus de la durée. Mais elle va dépendre de l’ordre d’arrivée des évènements, c’est à dire leur rang.
Remarque: pour les observations censurées(\(\delta_i=0\)), \(PL=1\). Toutefois, ces censures à droite entrent dans l’expression \(\sum_{j\in R}h(t_i)\) tant qu’elles sont soumises au risque.
En remplaçant donc \(h(t_i)\) par l’expression \(h_0(t)e^{X_i^{'}b}\):
\[PL=\prod_{i=1}^{n}\left[\frac{h_0(t)e^{X_{i}^{'}b}}{\sum_{j\in R_i}h_0(t)e^{X_{j}^{'}b}}\right]^{\delta_i} =\prod_{i=1}^{n}\left[\frac{e^{X_i^{'}b}}{\sum_{j\in R_i}e^{X_{j}^{'}b}}\right]^{\delta_i}\]
L’expression \(\frac{e^{Xb}}{\sum_{j\in R}e^{Xb}}\) est une probabilité, la vraisemblance partielle est donc bien un produit de probabilités. Il s’agit de la probabilité qu’un individu observe l’évènement en \(t_i\) sachant qu’un évènement (et un seul) s’est produit.
Condition nécessaire: pas d’évènement simultané:
On rappelle que la durée est mesuré de manière strictement continue, il ne doit pas y avoir d’évènement simultané. Sinon, l’estimation de la vraisemblance doit faire l’objet d’une correction.
Correction de la vraisemblance avec des évènements simultanés:
- La méthode dite exacte: Comme il ne doit pasy avoir d’évènement simultané, on va intégrer à la vraisemblance toutes les permutations possibles des évènements observés simultanément: si en \(t_i\) on observe au « même moment » l’évènement pour A et B, une échelle temporelle plus précise nous permettrait de savoir si A s’est produit avant B ou B s’est produit avant A. Comme le nombre de permutations est calculé à l’aide d’une factorielle, avec 3 évènements mesurés simultanément, il y a 6 permutations possibles (\(3\times2\times1\)).
Problème: le nombre de permutations pour chaque \(t_i\) peut devenir très vite particulièrement élevé. Par exemple pour 10 évènements simultanés, le nombre de permutations est égal à 3.628.800. Le temps de calcul devient extrêmement long, et ce type de correction totalement inopérant. - La méthode dite de Breslow: il s’agit d’une approximation de la méthode exacte permettant de ne pas avoir à intégrer chaque permutation. Cette approximation est utilisée par défaut par les logiciels Sas et Stata.
- La méthode dite d’Efron: elle corrige l’approximation de Breslow, et est jugée plus proche de la méthode exacte. C’est la méthode utilisée par défaut avec le logiciel R, et elle est disponible avec les autres applications.
Estimation des paramètres
On utilise la méthode habituelle, à savoir la maximisation de la log-vraisemblance (ici partielle).
- Conditions de premier ordre: calcul des équations de score à partir des dérivées partielles. Solution: \(\frac{\partial log(PL)}{\partial{b_k}}=0\). On ne peut pas obtenir de solution numérique directe.
Remarque: les équations de score sont utilisées pour tester la validité de l’hypothèse de constance des rapports de risque pour calculer les résidus de Schoenfeld (voir plus bas). - Conditions de second ordre: calcul des dérivées secondes qui permettent d’obtenir la matrice d’information de Fisher et la matrice des variances-covariances des paramètres.
- Comme il n’y a pas de solution numérique directe, on utilise un algorithme d’optimisation (ex: Newton-Raphson) à partir des équations de score et de la matrice d’information de Fisher.
Eléments de calcul
En logarithme (sans évènement simultané), la vraisemblance partielle s’ecrit:
\[pl(b)=\sum_{i=1}^n\delta_i\left(log(e^{X_{i}^{'}b})-log\sum_{j\in R_i}e^{X_{j}^{'}b}\right)\]
\[pl(b)=\sum_{i=1}^n\delta_i\left(X_{i}^{'}b-log\sum_{j\in R_i}e^{X_{j}^{'}b}\right)\]
Calcul de l’équation de score pour une covariable \(X_k\):
\[\frac{\partial pl(b)}{\partial{b_k}}=\sum_{i=1}^n\delta_i\left(X_{ik}-\sum_{j\in R_i}X_{jk}\frac{e^{X_{j}^{'}b}}{\sum_{j\in R_i}e^{X_{j}^{'}b}}\right)\]
Comme \(\frac{e^{X_{j}b}}{\sum_{j\in R}e^{X_{j}b}}\) est une probabilité, et \(\sum_{j\in R}X_{ik}\times p_i\) est l’espérance (la moyenne) \(E(X_k)\) d’avoir la caractéristique \(X_k\) lorsqu’un évènement a été observé. Au final:
\[\frac{\partial lp(b)}{\partial{b_k}}= \sum_{i=1}^n\delta_i\left(X_{ik} - E(X_{j\in R_i,k}) \right)\]
Cette expression va permettre de tester le respect ou non de l’hypothèse de risques proportionnels via les résisus de Schoenfeld.
Lecture des résultats
Comme il s’agit d’un modèle à risque proportionnel, les rapports de risques sont constants pendant toute la période d’observation. Il s’agit d’une propriété de l’estimation.
Covariable binaire (indicatrice) \(X=(0,1)\): \(RR=\frac{h(t\ |\ X=1)}{h(t\ |\ X=0)}=e^b\).
A chaque moment de la durée \(t\), le risque d’observer l’évènement est \(e^b\) fois plus important/plus faible pour \(X=1\) que pour \(X=0\).
Covariable quantitative (mais fixe dans le temps)
\(RR=\frac{h(t\ |\ X=a+c)}{h(t\ |\ X=a)}=e^{c \times{b}}\). On prendra pour illustrer une variable type âge au début de l’exposition au risque (a) et un delta de comparaison avec un âge inférieur c.
Si \(c=1\) (résultat de l’estimation): A un âge donnée en début d’exposition, le risque de connaitre l’évènement est \(e^b\) fois inférieur/supérieur à celui d’une personne qui a un an de moins au début de l’exposition.
Exemple pour les insuffisances cardiaques
Estimateurs: \(b\)
Rapports des risques: \(e^b\)
-- Efron method for ties
Cox regression
= 103 Number of obs = 103
No. of subjects = 75
No. of failures = 31938
Time at risk chi2(3) = 17.63
LR = -289.30639 Prob > chi2 = 0.0005
Log likelihood
------------------------------------------------------------------------------
| Haz. Ratio Std. Err. z P>|z| [95% Conf. Interval]
_t -------------+----------------------------------------------------------------
| 0.8872 0.0597 -1.78 0.076 0.7775 1.0124
year | 1.0300 0.0139 2.19 0.029 1.0031 1.0577
age | 0.3726 0.1625 -2.26 0.024 0.1584 0.8761
surgery ------------------------------------------------------------------------------
On retrouve les résultats des tests non paramétriques pour l’opération, à savoir qu’un pontage réduit les risques journaliers de décès pendant la période d’observation (augmente la durée de survie).
De la même manière, plus on entre à un âge élevé dans la liste d’attente plus le risque de décès augmente. La variable year, qui traduit des progrès en médecine, exprime une réduction relativement modérée du risque journalier de décès durant l’attente de la greffe du coeur.
R-Stata-Sas-Python
Le modèle est estimé avec la fonction coxph
de la librairie survival
. Hors options, la syntaxe est identiques aux fonctions survfit
et survdif
.
Le modèle est estimé avec la commande stcox
.
Le modèle est estimé avec la proc phreg
.
Avec la librairie lifelines
, le modèle est estimé avec la fonction CoxPHFitter
. Avec la librairie statmodels
, il est estimé avec la fonction smf.phreg
.
L’hypothèse de constance des rapports de risque
- Les rapports de risque (RR) estimés par le modèle sont contraints à être constant pendant toute la période d’observation. C’est une hypothèse forte.
- Le respect de cette hypothèse doit être testé, en particulier pour un modèle de Cox où la baseline du risque est habituellement estimée à l’aide de ces rapports (méthode dite de Breslow, non traitée…mais bientôt en annexe). En post-estimation, les valeurs estimées du risque pourront présenter des valeurs aberrantes, en particulier négatives.
- Tester cette hypothèse revient à tester une interaction entre les rapports et la durée (ou plutôt une fonction de la durée).
- Plusieurs méthodes disponibles, celle sur les résidus de martingales, réservée aux covariables continues, et le « test » graphique réservé aux variables catégorielles ne seront pas traités. On traitera celle basée sur les résidus de Schoenfeld puis l’introduction d’une intéraction avec la durée dans le modèle. Cette dernière peut faire également office de méthode de correction lorsque l’hypothèse n’est pas respectée.
- Si on regarde les courbes de Kaplan-Meier, leurs croisement non tardif impliquera nécessairement un problème sur cette hypothèse.
Tests sur les résidus de Schoenfeld
Résumé rapide: le test consiste à regarder la corrélation entre des résidus obtenus directement avec la fonction de score de la vraisemblanc partielle de Cox.
- Test simplifié: simple corrélation obtenu par une régression linéaire par les moindres carrés ordinaires. Pour chaque covariable, la standardisation du résidu utilise la variance de l’estimateur obtenu par le modèle. Une rapide présentation est disponible ici
- Test exact: corrélation obtenu par une régression linéaire par les moindres carrés généralisés. Pour chaque covariable, on calcule la variance et on utilise la variance exacte du résidu à partir de la dérivée de la fonction score (matrice d’information de fisher sur sa diagonale). Les moindres carrés généralisés corrigeront la présence d’autocorrélations des résidus, classique avec des données temporelles.
A ce jour le test exact est implémenté seulement dans la v3 du package survival
de R. Un problème de reproductibilité se pose, dans l’espace des applications et dans le temps pour R, le test simplifié n’étant plus disponible à son installation (je donne un moyen de l’exécuter tout de même).
Je m’interroge par ailleurs sur la sensibilité de la version exacte en présence de durées discrètes ou groupées.
- Les résidus « bruts » sont directement calculés à partir des équations de scores (voir section estimation).
- Ce résidu n’est calculé que pour les observations qui ont connues l’évènement.
- Il est calculé au moment où l’évènement s’est produit.
- La somme des résidus pour chaque covariable est égale à 0 (propriété de l’équation de score à l’équilibre).
- On utilise généralement les résidus de Schoenfeld « standardisés » ou plutôt “remis à l’échelle” - par leur variance -.
- Pour une observation dont l’évènement s’est produit en \(t_i\), le résidu brut de Schoenfeld pour la covariable \(X_k\), après estimation du modèle, est égal à:
\[rs_{ik}=X_{ik}- \sum_{j\in R_i}X_{jk}\frac{e^{X_{j}^{'}b}}{\sum_{j\in R_i}e^{X_{j}^{'}b}}= X_{ik} - E(X_{j\in R_i})\]
Ce résidu est formellement la contribution d’une observation ou d’un moment d’évènement au score. Il se lit comme la différence entre la valeur observée d’une covariable et sa valeur espérée au moment où un évènement se produit.
Si l’hypothèse de constance des risk ratios est respectée, les résidus ne doivent pas suivre une tendance précise, , en particulier à la hausse ou à la baisse.
Intuitivement sans censure à droite et en ne considérant que les résidus bruts: on a un RR strictement égal à 1 en début d’exposition \(R_i=100\) avec 50 hommes et 50 femmes. Si l’hypothèse PH (strictement) respectée, lorsqu’il reste 90 personnes soumises au risque, on devrait avoir 45 hommes et 45 femmes. Avec \(R_i=50\), 25 hommes et 25 femmes,…….avec \(R_i=10\), 5 hommes et 5 femmes. Au final l’espérance d’avoir la caractéristique \(X\) est toujours égal à 0.5 et les résidus bruts prendront toujours la valeur -.5 si \(X=0\) et .5 si \(X=1\). En faisant une simple régression linéaire entre les résidus, qui alternent ces deux valeurs, et \(t\), le coefficient estimé sera non significativement différent de 0.
On peut tester l’hypothèse sur les résidus par une régression entre ces résidus pour chaque covariable et la durée (ou fonction dérivée de la durée, par exemple \(t\) ou \(log(t)\))). Cette solution prend forme avec le test de Grambsch-Therneau sous sa forme simplifiée -OLS- (R jusqu’à v3 de
survival
, Sas, Stata, Python) ou exacte - GLS- (R depuis la V3).
On trouvera des éléments de calcul du test simplifié ici
Avec \(g(t)=t\):
-hazards assumption
Test of proportional
: Time
Time----------------------------------------------------------------
| rho chi2 df Prob>chi2
------------+---------------------------------------------------
| 0.10162 0.80 1 0.3720
year | 0.12937 1.61 1 0.2043
age | 0.29664 5.54 1 0.0186
surgery ------------+---------------------------------------------------
| 8.76 3 0.0327
global test ----------------------------------------------------------------
Ici l’hypothèse de proportionnalité des risques est questionnable pour la variable surgery. Le risque ratio pourrait ne pas constant dans le temps. Ce n’est pas peut-être pas étonnant, le premier décès pour les personnes opérées d’un pontage n’est observé qu’au bout de 165 jours.
Remarques / à savoir
Test multiple: de nouveau il convient de se méfier du résultat du test multiple. Le risque de premier espèce peut-être assez faible alors que les tests pour chaque covariables prises une à une présenteraient des valeurs élevées (>.1 par exemple).
Le résultat de ce test est considéré par certain.e.s comme un indicateur de l’ampleur du biais qui affecte la baseline du risque.
Le résultat de ce test multiple est considéré par certain.e.s comme un indicateur de l’ampleur du biais qui affecte la baseline du risque.Transformations de la durée: n’importe quelle fonction de la durée peut être utilisée pour réaliser le test. On retient généralement les fonctions suivantes: \(g(t)=t\) (« identity »), \(g(t)=log(t)\), \(g(t)=KM(t)\) ou \(g(t)=1- KM(t\)) où \(KM(t\)) est l’estimateur de Kaplan-Meier. Enfin une transformation appelée « rank », est utilisée seulement pour les durées strictement continue ou suffisamment dispersées . Par exemple \(t=(0.1,0.5,1,2.6,3)\) donne une transformation \(t=(1,2,3,4)\). A savoir : la fonction « identity », utilisée ici, rend le test relativement sensible aux évènements tardifs lorsque la population restant soumise est peu nombreuse (outliers).
Attention version exacte du test depuis le v3 de survival.
- Après avoir créer un objet à l’estimation du modèle de Cox, on utilise la fonction
cox.zph
. Cette fonction utilise par défaut \(g(t)=1-KM(t)\) où \(KM(t)\) sont les estimateurs de la courbe de Kaplan-Meier. On peut modifier cette fonction. Il est préférable de conserver cette fonction par défaut. - Test antérieur: j’ai récupéré le programme du test antérieur, renommé
cox.zphold
. On peut le charger simplement, et il est facilement exécutable.
Le test est obtenu avec la commande estat phtest, d
. Par défaut Stata utilise \(g(t)=t\). On peut modifier cette fonction.
Le test est disponible depuis quelques années avec l’argument zph
sur la ligne proc lifetest
. Par défaut SAS utilise \(g(t)=t\). On peut modifier cette fonction.
On utilise la fonction proportional_hazard_test
de la librairie lifelines
. La fonction utilise par défaut \(g(t)=t\), mais on peut afficher les résultats pour toutes les transformations de \(t\) disponibles avec l’option time_transform=’all’
.
Intéraction avec la durée
Petit retour sur l’estimation du modèle.
Pour estimer le modèle de Cox, les données sont dans un premier temps splitées aux temps d’évènement. A l’exception de Sas, les autres logiciels disposent d’une fonction qui effectue cette opération (R: survsplit
- Stata: stsplit
).
+------------------------------+
| id surgery d t t0 |
|------------------------------|
24. | 2 0 0 1 0 |
25. | 2 0 0 2 1 |
26. | 2 0 0 3 2 |
27. | 2 0 0 5 3 |
28. | 2 0 1 6 5 |
|------------------------------|
29. | 3 0 0 1 0 |
30. | 3 0 0 2 1 |
31. | 3 0 0 3 2 |
32. | 3 0 0 5 3 |
33. | 3 0 0 6 5 |
|------------------------------|
34. | 3 0 0 8 6 |
35. | 3 0 0 9 8 |
36. | 3 0 0 12 9 |
37. | 3 0 1 16 12 |
+------------------------------+
Les bornes des intervalles \([t_0 ;t]\) ont des valeurs seulement lorsqu’un évènement s’est produit (principe de la vraisemblance partielle). Il n’y a donc pas de valeurs pour \(t\) et \(t_0\) en \(t=4\) (\(id=2,3\)), \(t=7,10,11,13,14,15\) (\(id=3\)).
Les deux individus observent l’évènement en \(t=6\) pour \(id=2\), et en \(t=16\) pour \(id=3\). Avant ce moment la valeur de la variable évènement/censure (ici \(d\)) prend toujours la valeur 0, et prend la valeur 1 le jour du décès.
On vérifie que les paramètres estimés sont identiques
for ties
Cox regression with Efron method
= 103 Number of obs = 3,573
No. of subjects = 75
No. of failures = 31,938
Time at risk chi2(3) = 17.63
LR = -289.30639 Prob > chi2 = 0.0005
Log likelihood
------------------------------------------------------------------------------
| Haz. ratio Std. err. z P>|z| [95% conf. interval]
_t -------------+----------------------------------------------------------------
| 0.887 0.060 -1.78 0.076 0.778 1.012
year | 1.030 0.014 2.19 0.029 1.003 1.058
age | 0.373 0.163 -2.26 0.024 0.158 0.876
surgery ------------------------------------------------------------------------------
Introduction d’une intéraction avec une fonction de la durée
On a une variable de durée (on prendra \(g(t)=t\)) qui sera croisée avec la variable surgery. Le modèle va s’écrire:
\[h(t | X,t) = h_0(t)e^{b_1age + b_2year + b_3 surgery + b_4 (surgery\times t)}\]
Exemple
for ties
Cox regression with Efron method
= 103 Number of obs = 103
No. of subjects = 75
No. of failures = 31,938
Time at risk chi2(4) = 21.58
LR = -287.32903 Prob > chi2 = 0.0002
Log likelihood
------------------------------------------------------------------------------
| Haz. ratio Std. err. z P>|z| [95% conf. interval]
_t -------------+----------------------------------------------------------------
|
main | 0.884 0.059 -1.84 0.066 0.776 1.008
year | 1.029 0.014 2.15 0.032 1.003 1.057
age surgery(t0+) | 0.173 0.117 -2.60 0.009 0.046 0.649
-------------+----------------------------------------------------------------
|
Rapport de HR*t | 1.002 0.001 2.02 0.043 1.000 1.004
surgery------------------------------------------------------------------------------
On retrouve donc un résultat proche de celui obtenu à partir du test simplifié sur les résidus de Schoenfeld pour la variable surgery (et c’est normal). Avec \(g(t)=t\), il a le mérite de pouvoir être interprété directement. Ce qui ne veut pas dire qu’il s’agit de la meilleure solution.
Donc, malgré une hypothèse plutôt forte sur la forme fonctionnelle de l’intéraction, et dans les fait surement pas pertinente, on peut dire que chaque jour le HR entre personnes opérées et personnes non opérées augmente de 0.2%. L’effet de l’opération sur la survie des individus s’estompe donc avec le temps.
Important:
- Le modèle n’est plus un modèle à risque proportionnel. La variable surgery n’est plus une variable fixe mais une variable tronquée dynamique qui prend la valeur de \(t\) pour les personnes qui ont été opérées d’un pontage avant leur entrée dans le registre de greffe.
- L’altération des rapports de risque dépend de la forme fonctionnelle de l’intéraction choisie. Ici la modification dans le temps du rapport des risque est constante, ce qui est une hypothèse assez forte. On a, en quelques sorte, réintroduit une hypothèse de proportionnalité, ici sur le degré d’altération des écarts de risques dans le temps, qui devient lui même constant.
Que faire
Ne rien faire
On interprète le risque ratio comme un ratio moyen pendant la durée d’observation (P.Allison). Difficilement soutenable pour l’analyse des effets cliniques, elle peut être envisagée dans d’autres domaines. Attention au nombre de variables qui ne respecte pas l’hypothèse, l’estimation de la baseline du risque pourrait être sensiblement affectée. Il convient tout de même lors de l’interprétation, de préciser les variables qui seront analysées sous cette forme « moyenne » sur la période d’observation.
On peut également adapter cette stratégie du « ne rien faire » selon sens de l’altération des rapports de risque. Si aux cours du temps des différences de risque, déjà assez important en début d’observation s’accentuent, à la hausse comme à la baisse, on peut conserver cet estimateur moyen. Mais si l’effet est modéré : \(RR>1\) qui baisse ou \(RR<1\) qui augmente au cours du temps, je suis moins convaincu de la pertinence de cette option.
Il faut tenir compte de l’intérêt portée par les variables qui présentent un problème par rapport à l’hypothèse. Il n’est peut-être pas nécessaire de complexifier le modèle pour des variables introduites comme simples contrôles.
Mais plus problématique… On sait qu’une des causes du non respect de l’hypothèse peut provenir d’effets de sélection liées à des variables omises ou non observables. En analyse de durée ce problème prend le nom de frailty (fragilité) lorsque cette non homogénéité n’est pas observables. Des estimations, plus complexes, sont possibles dans ce cas, et sont en mesure malgré leur interprétation plutôt difficile de régler le problème. Si l’hypothèse est sensible aux problèmes d’omission, il convient donc de bien spécifier le modèle au niveau des variables de contrôle observables et disponibles.
Mais plus problématique [très important]… On sait qu’une des causes du non respect de l’hypothèse peut provenir d’effets de sélection liées à des variables omises ou non observables. En analyse de durée ce problème prend le nom de frailty (fragilité) lorsque cette non homogénéité n’est pas observable. Des estimations, plus complexes, sont possibles dans ce cas, et sont en mesure malgré leur interprétation plutôt difficile de régler le problème. Si l’hypothèse est sensible aux biais d’omission, il convient donc de bien spécifier le modèle au niveau des variables de contrôle observables et disponibles.
Le test de Grambsch-Therneau peut-être également appréhendé comme un test qui donne un élément d’information sur de possibles biais d’omission (endogénéité)dans le modèle.
Modèle de Cox stratifié
Utiliser la méthode dite de « Cox stratifiée » (non traitée). Utile si l’objectif est de présenter des fonctions de survie prédites ajustées, et si une seule covariable (binaire) présente un problème. Les RR ne seront pas estimés pour la variable qui ne respecte pas l’hypothèse.
[Je pense faire un courté entrée dessuis dans la section annexe en 2023].
Intéraction
Introduire une interaction avec la durée, ce qui a été fait juste haut dessus. Cela peut permettre d’enrichir le modèle au niveau de l’interprétation. Valable si peu de covariables présentent des problèmes de stabilité des rapports de risque, dans l’idéal une seule variable. Attention tout de même à la forme de la fonction, dans l’exemple on a contraint l’effet d’interaction à être strictement linéaire, ce qui est une hypothèse plutôt forte…. on introduit de nouveau une contrainte de proportionalité dans le modèle.
Modèles alternatifs
Utiliser un modèle alternatif: modèles paramétriques à risques proportionnels si la distribution du risque s’ajuste bien, le modèle paramétrique « flexible » de Parmar-Royston (ajout prévu pour 2023) ou un modèle à temps discret. Pour la dernière solution, on peut également corriger la non proportionalité avec l’introduction d’une intéraction. Si on ne le fait pas, les risques prédits, par définition sous forme de probabilités conditionnelles, resteront toujours dans les bornes contrairement au modèle de Cox.
Utiliser un modèle non paramétrique additif dit d’Aalen ou une de ses variantes (non traité). Mais ces modèles, dont les résultats sont présentés par des graphiques, se commentent assez difficilement.
Forêt aléatoire
Autre méthode : les forêts aléatoires [à présenter un jour tout de même]. L.Breiman a dès le départ proposé une estimation des modèles de survie par cette méthode. Par définition, pas sensible à l’hypothèse PH. Mais cela reste des méthodes à finalité prédictive, moins riche en interprétation.
Cox et modèle de poisson
Juste une courte remarque.
Le modèle a été estimé par la méthode de la vraisemblance partielle. On peut montrer que le modèle de Cox est estimable à partir d’un simple modèle de Poisson. Cette estimation est appelée «Constant Piecewise Exponential PH model».
= 3,573
Poisson regression Number of obs chi2(90) = 122.42
LR > chi2 = 0.0131
Prob = -344.95318 Pseudo R2 = 0.1507
Log likelihood
------------------------------------------------------------------------------
| Coef. Std. Err. z P>|z| [95% Conf. Interval]
_d -------------+----------------------------------------------------------------
| -.1195204 .067374 -1.77 0.076 -.251571 .0125302
year | .0295531 .013535 2.18 0.029 .003025 .0560811
age | -.98486 .4363162 -2.26 0.024 -1.840024 -.1296961
surgery |
|
stime 2 | .4223592 1.154708 0.37 0.715 -1.840826 2.685544
3 | .0495983 1.154704 0.04 0.966 -2.21358 2.312776
5 | -.828855 1.224781 -0.68 0.499 -3.229383 1.571673
6 | -.9922643 1.224779 -0.81 0.418 -3.392786 1.408258
8 | -1.940546 1.414215 -1.37 0.170 -4.712356 .8312648
9 | -2.03868 1.414233 -1.44 0.149 -4.810526 .7331649
11 | -12.59255 2179.957 -0.01 0.995 -4285.23 4260.045
12 | -2.30438 1.414226 -1.63 0.103 -5.076213 .4674526
16 | -1.481512 1.154713 -1.28 0.199 -3.744708 .7816839
17 | -2.591968 1.41426 -1.83 0.067 -5.363868 .1799312
18 | -2.642535 1.414254 -1.87 0.062 -5.414421 .1293516
21 | -2.095489 1.224819 -1.71 0.087 -4.496091 .3051133
28 | -3.055745 1.414246 -2.16 0.031 -5.827616 -.2838729
30 | -3.103495 1.41426 -2.19 0.028 -5.875395 -.3315961
31 | -13.89462 2179.957 -0.01 0.995 -4286.532 4258.743
32 | -3.144133 1.414253 -2.22 0.026 -5.916018 -.3722474
35 | -3.219157 1.414258 -2.28 0.023 -5.991053 -.447262
36 | -3.227893 1.414267 -2.28 0.022 -5.999806 -.4559796
37 | -3.246139 1.414263 -2.30 0.022 -6.018042 -.4742351
39 | -3.26923 1.414303 -2.31 0.021 -6.041213 -.4972472
40 | -2.581465 1.224839 -2.11 0.035 -4.982106 -.1808239
43 | -3.311454 1.414341 -2.34 0.019 -6.083512 -.5393966
45 | -3.327473 1.414407 -2.35 0.019 -6.099661 -.5552857
50 | -3.421206 1.414399 -2.42 0.016 -6.193377 -.6490357
51 | -3.425081 1.414444 -2.42 0.015 -6.197341 -.6528208
53 | -3.44536 1.414475 -2.44 0.015 -6.21768 -.673039
58 | -3.514664 1.414489 -2.48 0.013 -6.287011 -.7423175
61 | -3.543748 1.414557 -2.51 0.012 -6.316229 -.7712681
66 | -3.602062 1.414546 -2.55 0.011 -6.374522 -.8296028
68 | -2.90779 1.225106 -2.37 0.018 -5.308954 -.5066257
69 | -3.580111 1.414549 -2.53 0.011 -6.352577 -.8076461
72 | -2.914206 1.22505 -2.38 0.017 -5.31526 -.5131524
77 | -3.624716 1.414601 -2.56 0.010 -6.397284 -.8521489
78 | -3.593983 1.414779 -2.54 0.011 -6.366898 -.8210686
80 | -3.597845 1.414765 -2.54 0.011 -6.370734 -.8249558
81 | -3.589639 1.414745 -2.54 0.011 -6.362489 -.8167895
85 | -3.598044 1.414948 -2.54 0.011 -6.371291 -.824798
90 | -3.62163 1.415099 -2.56 0.010 -6.395173 -.8480873
96 | -3.658159 1.415134 -2.59 0.010 -6.43177 -.884548
100 | -3.672641 1.415162 -2.60 0.009 -6.446308 -.8989739
102 | -3.662767 1.415232 -2.59 0.010 -6.436571 -.8889631
109 | -14.65089 2179.957 -0.01 0.995 -4287.288 4257.986
110 | -3.704316 1.415125 -2.62 0.009 -6.47791 -.9307209
131 | -14.68697 2179.957 -0.01 0.995 -4287.324 4257.95
149 | -3.976368 1.415012 -2.81 0.005 -6.749742 -1.202995
153 | -3.97938 1.414995 -2.81 0.005 -6.752718 -1.206041
165 | -4.013449 1.415156 -2.84 0.005 -6.787104 -1.239793
180 | -15.09339 2179.957 -0.01 0.994 -4287.731 4257.544
186 | -4.112806 1.414994 -2.91 0.004 -6.886144 -1.339468
188 | -4.11316 1.414915 -2.91 0.004 -6.886342 -1.339978
207 | -4.178467 1.414929 -2.95 0.003 -6.951678 -1.405256
219 | -4.206547 1.41493 -2.97 0.003 -6.97976 -1.433334
263 | -4.342286 1.415099 -3.07 0.002 -7.11583 -1.568742
265 | -16.10078 2179.957 -0.01 0.994 -4288.738 4256.536
285 | -3.688074 1.225534 -3.01 0.003 -6.090076 -1.286072
308 | -4.409256 1.414925 -3.12 0.002 -7.182459 -1.636054
334 | -4.432237 1.415143 -3.13 0.002 -7.205866 -1.658607
340 | -4.422918 1.415095 -3.13 0.002 -7.196453 -1.649383
342 | -4.365805 1.41511 -3.09 0.002 -7.13937 -1.592239
370 | -16.64142 2179.957 -0.01 0.994 -4289.279 4255.996
397 | -16.53454 2179.957 -0.01 0.994 -4289.172 4256.103
427 | -16.28492 2179.957 -0.01 0.994 -4288.922 4256.352
445 | -16.76689 2179.957 -0.01 0.994 -4289.404 4255.87
482 | -15.8041 2179.957 -0.01 0.994 -4288.441 4256.833
515 | -16.91429 2179.957 -0.01 0.994 -4289.552 4255.723
545 | -16.10426 2179.957 -0.01 0.994 -4288.742 4256.533
583 | -4.641434 1.415524 -3.28 0.001 -7.41581 -1.867057
596 | -16.41019 2179.957 -0.01 0.994 -4289.047 4256.227
620 | -17.07029 2179.957 -0.01 0.994 -4289.708 4255.567
670 | -17.14785 2179.957 -0.01 0.994 -4289.785 4255.489
675 | -4.631958 1.416377 -3.27 0.001 -7.408006 -1.855911
733 | -4.60698 1.416405 -3.25 0.001 -7.383082 -1.830878
841 | -17.05138 2179.957 -0.01 0.994 -4289.689 4255.586
852 | -4.566243 1.417712 -3.22 0.001 -7.344907 -1.787579
915 | -17.40169 2179.957 -0.01 0.994 -4290.039 4255.236
941 | -17.34105 2179.957 -0.01 0.994 -4289.978 4255.296
979 | -4.426862 1.419414 -3.12 0.002 -7.208862 -1.644862
995 | -4.401387 1.418922 -3.10 0.002 -7.182422 -1.620352
1032 | -4.390393 1.418666 -3.09 0.002 -7.170928 -1.609859
1141 | -16.4898 2179.957 -0.01 0.994 -4289.127 4256.148
1321 | -17.02179 2179.957 -0.01 0.994 -4289.659 4255.616
1386 | -4.427898 1.41857 -3.12 0.002 -7.208243 -1.647553
1400 | -17.74095 2179.957 -0.01 0.994 -4290.378 4254.896
1407 | -17.17352 2179.957 -0.01 0.994 -4289.811 4255.464
1571 | -18.15173 2179.957 -0.01 0.993 -4290.789 4254.486
1586 | -18.39765 2179.957 -0.01 0.993 -4291.035 4254.24
1799 | -18.08037 2179.957 -0.01 0.993 -4290.718 4254.557
|
| 2.482922 4.946271 0.50 0.616 -7.211591 12.17744
_cons ln(stime) | 1 (exposure)