Comment voir à quel age un facteur est létal avec Cox?

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Paméla Lagrange
Messages : 12
Enregistré le : 25 Jan 2012, 04:13

Comment voir à quel age un facteur est létal avec Cox?

Messagepar Paméla Lagrange » 22 Fév 2012, 21:49

Bonjour,

Je cherche à estimer la survie journalière de mes individus de leur naissance à 15 jours en fonction de plusieurs variables. Lorsqu'on fait tourner un modèle de Cox, le summary(modelcox) donne un coefficient pour chaque variable, mais avez-vous une idée de comment avoir le coefficient de chaque variable à chaque temps t, de la naissance à 15 jours?

Mon taux de survie varie pendant ce laps de temps de manière non linéaire et les coefficients estimés sont tous très proches de 0.
Il est fort probable qu'une variable constante sur ce laps de temps n'ait pas le même effet pour un individu de 0 jour que pour un individu de 15 jours. En dehors d'un graphe, je ne vois pas comment montrer cela.

J'espère vos réponses nombreuses (plus qu'à mon dernier message^^)
Bonne soirée :-)

Paméla

matthieu faron
Messages : 586
Enregistré le : 16 Fév 2011, 11:23

Messagepar matthieu faron » 23 Fév 2012, 10:17

Bonjour,

Si vous régressez un model de Cox classique l'effet d'une co-variable est constant au cours du temps par définition (c'est la proportionalité des risques).

Si vous voulez permettre à l'effet d'une covariable de varier au cours du temps, il faut introduire une covariable dont l'effet dépend du temps.

Même si vous faites un graphe de votre Cox vous aurez proportionalité car celle ci est imposé par le modèle.

Vous pourriez commencer par rechercher l'écart à la proportionalité avec :

Code : Tout sélectionner

cox.zph(modelcox)
Matthieu FARON

Paméla Lagrange
Messages : 12
Enregistré le : 25 Jan 2012, 04:13

Messagepar Paméla Lagrange » 23 Fév 2012, 14:05

Merci pour votre réponse.

J'ai des variables temps dépendantes et pour cela il m'a fallu ré agencé mon jeu de données comme le suggère John Fox http://www.google.ca/url?sa=t&rct=j&q=cox%20appendix%20fox%202002%20covariates%20time%20dependant&source=web&cd=1&ved=0CCMQFjAA&url=http%3A%2F%2Fcran.r-project.org%2Fdoc%2Fcontrib%2FFox-Companion%2Fappendix-cox-regression.pdf&ei=sUVGT4eQFIXY0QGcr6GdDg&usg=AFQjCNEVt12zRdIswcP_lDEg_C64cfUBmQ&sig2=Y8pSrj8DpGBTeRBkP6DdPA&cad=rja
J'avais regardé la répartition des résidus et c'est vrai que toutes mes variables n'étaient pas proportionnelles, mais je ne savais pas si cela était du au ré agencement du jeu de données ou si c'était réellement du à mes variables.

Y-a-t-il des modèles de survie qui pourraient considérer le risque non proportionnel? Etant donné que j'ai peu de données censurées, j'avais penser à des GLMM suivant un loi binomiale. Qu'en pensez-vous?

matthieu faron
Messages : 586
Enregistré le : 16 Fév 2011, 11:23

Messagepar matthieu faron » 23 Fév 2012, 14:19

Ok,

Généralement j'utilise la fonction survsplit pour "ré-arranger" les données dans ce cadre.

Après effectivement le HR associée à un paramètre avec co-variable dépendante du temps n'est plus constant.

On peut le re-calculer à partir de la sortie assez facilement avec quelques choses du genre (si la fonction du temps et le log) :
paramètre de la covariable + (parametre de la covariable fonction du temps * log(temps d'interets) )

Je dois avoir quelques exemples si ceci n'est pas clair.

Sinon d'autres modèles existe permettant de gérer des risques non proportionnels genre modèle paramètrique. Mais ceci ont souvent d'autres contraintes (pour certains la survie doit suivre une loi exponentielle).

Si vous n'avez aucune censure vous pouvez utiliser un GLMM mais là je passe la main à d'autres car je connais très mal....
Matthieu FARON

Paméla Lagrange
Messages : 12
Enregistré le : 25 Jan 2012, 04:13

Messagepar Paméla Lagrange » 23 Fév 2012, 14:48

Je suis preneuse d'un exemple de code pour tester l'HR avec des covariables temps dépendantes si vous avez ça sous la main.

Sinon je vais regarder ce que les tests paramétriques offrent comme possibilité.

Merci bien de votre aide!

matthieu faron
Messages : 586
Enregistré le : 16 Fév 2011, 11:23

Messagepar matthieu faron » 23 Fév 2012, 15:08

Voici une petite fonction que j'avais utilisé. Elle permet de calculer puis de représenter l'évolution du HR au cours du temps (ici de 1 à 24).

C'est un peu compliqué parceque j'applique sur des résultat d'imputations multiple mais en gros :
- resultat$qbar : sont les coefficients
- résultat$t : la matrice de variance-covariance
- kohne2 et kohne3 les variables classiques
- kohne2_t et kohne3_t les variables dépendante du temps.

La formule du modèle devait du genre :
Survie ~ kohne2 + kohne3 + kohne2_t + kohne3_t

Et kohne2_t et kohne3_t ont été caclulé par une fonction du temps racine carré :
kohne2_t <- kohne2 * sqrt(stop) ## stop étant le temps d'arrêt du pseudo intervalle.

Code : Tout sélectionner

or_time <- function(resultat) {
   Delai <- seq(1,24)
   ft <- ( 1 / sqrt(Delai))
   
        ## recaclul des coef aux different temps
        OR_t3 <- resultat$qbar["kohne3"]+resultat$qbar["kohne3_t"] * ft
   OR_t2 <- resultat$qbar["kohne2"]+resultat$qbar["kohne2_t"] * ft
   
        # calcul des intervalles de confiance correspondant
        ic_t3 <- ic_a1 <- 1.96*(sqrt(resultat$t["kohne3","kohne3"]+ft * resultat$t["kohne3_t","kohne3_t"]+2 * ft * resultat$t["kohne3","kohne3_t"]))
   ic_t2 <- ic_a1 <- 1.96*(sqrt(resultat$t["kohne2","kohne2"]+ft * resultat$t["kohne2_t","kohne2_t"]+2 * ft * resultat$t["kohne2","kohne2_t"]))

         ## affichage des résultats
   plot(exp(OR_t3) ~ Delai, type="b", ylim=c(0,10), lwd=2, col="navyblue", ylab="Hazards ratio", xlab="Délai depuis inclusion (en mois)", main="Evolution du HR pour le Köhne élevé en fonction du temps")
   abline(h=1, lty=2, col = "red")
   lines(x = Delai, y = exp (OR_t3 + ic_t3), lty = 3, col = "navyblue")
   lines(x = Delai, y = exp (OR_t3 - ic_t3), lty = 3, col = "navyblue")
   # lines(x = Delai, y = exp (OR_t2), lty = 1, col = "darkgreen", lwd=2)
   axis(side = 1, at=seq(1,24, by=2))

        ### une matrice des résultats
   or_kohne_t <- round(exp(matrix(c(OR_t2, OR_t2 - ic_t2, OR_t2 + ic_t2, OR_t3, OR_t3 - ic_t3, OR_t3 + ic_t3), ncol = 6, byrow=FALSE)),2)
   colnames(or_kohne_t) <- c("OR Kohne 2", "IC bas", "IC Haut", "OR Kohne 3", "IC bas", "IC Haut")   
   return(or_kohne_t)
}   
Matthieu FARON

Paméla Lagrange
Messages : 12
Enregistré le : 25 Jan 2012, 04:13

Messagepar Paméla Lagrange » 24 Fév 2012, 15:28

Avant de me lancer dans la vérification de l'hypothèse, j'aimerai être sure de bien saisir les différentes méthodes d'analyses de survie:
- modèle de cox: estimation de la survie en fonction du temps en supposant que l'effet des covariables soit constant dans le temps. Utilisable avec des données censurées.
- test de survie paramétrique (avec la distribution à définir): estimation de la survie en fonction du temps sans condition préalable. Les estimateurs sont considérés comme plus précis que ceux des modèles de cox.
- test de survie non paramétrique, Kaplan-Meier: estimation d'un taux de survie conditionnel au temps, je ne sais pas vraiment quand on utilise cette méthode.
- GLMM avec distribution binomiale: je suppose qu'on ne peut qu'estimer l'impact des covariables et la survie à un temps t et non l'évolution au cours du temps.
Je ne sais pas si je suis bien claire, c'est un condensé express en fonction de ce dont j'ai besoin...

Question 1: N'aurai-je pas intérêt à utiliser un test de survie paramétrique plutôt qu'un modèle de Cox pour estimer le taux de survie au cours du temps, puisque je n'ai pas de donnée censurée?
Question 2: Pour extraire les coefficients de mes variables à chaque temps t, ne faudrait-il pas que j'utilise des GLMM?

Merci de votre aide!

matthieu faron
Messages : 586
Enregistré le : 16 Fév 2011, 11:23

Messagepar matthieu faron » 24 Fév 2012, 15:42

Les modèles de survie en général s'utilise en présence de données censurés. Leur intérêts est justement de pouvoir prendre en compte les informations sur les individus censurés.

Si vous n'avez pas de censure vous êtes dans un cadre très favorable car vous pouvez outre les modèles de survie utiliser des modèle glm ou glmm.

Tous ces modèles ont des conditions d'applications précises qui peuvent être respectées... ou pas sur vos données. La violation de celle-ci est grave... ou pas (il est fréquent d'avoir un petit écart à la proportionnalité des risques dans un Cox)

Le Kaplan Meier peut s'utiliser sur des données avec censure comme analyse univariée avant un Cox (d'ailleurs le test du Score du Cox est strictement équivalent à celui du Log-Rank...)

Pour le modèle de survie paramétrique, encore faut-il que la survie que vous observez suive une loi précise (exponentielle par exemple pour le modèle de Weibull).

Dans votre cas j'ai l'impression qu'un GLMM est plus adapté. Mais je ne connais pas suffisament pour vous aider à la réaliser (dans mes données j'ai toujours des censures donc je n'utilise jamais)....j'aimerais bien connaitre la réponse d'ailleurs
Matthieu FARON

Paméla Lagrange
Messages : 12
Enregistré le : 25 Jan 2012, 04:13

Messagepar Paméla Lagrange » 24 Fév 2012, 16:08

Dans le cas des GLMM, je n'ai pas la possibilité d'estimer le taux de survie en fonction du temps, je peux juste voir l'effet des covariables?

Je vous décris mon jeu de données:
Je travaille sur la survie d'oisillons avant leur envol. J'ai 5994 individus suivi quotidiennement de la naissance à leur envol parmi lesquels: 787 morts (j'ai leur age exact de mort), 4848 individus vivants jusqu'à l'envol (je ne m'intéresse pas à la survie après l'envol), 302 individus disparus avant l'envol (donc considérés comme morts car la chance de survivre en dehors du nid chez l'espèce est nulle), et 58 individus disparus à un age avancé (on ne sait pas s'ils sont morts ou envolés, cela correspondrait aux censures).
Je pensais pouvoir m'affranchir des 55 censurés (0,92% de l'échantillon).

En espérant être plus claire!

matthieu faron
Messages : 586
Enregistré le : 16 Fév 2011, 11:23

Messagepar matthieu faron » 24 Fév 2012, 16:17

Mais si vous décidez d'exclure les observations censurés vous n'avez pas de problème pour estimer le taux de survie car dans ce cas particulier :
survie au temps t = nombre d'individu vivant à t / nombre d'individu au depart

Pour des questions de calcul plus pratique vous pourriez même le faire par un simple kaplan meier sous R et avoir direct les taux de survie aux dates d’intérêts !

Après sans être spécialiste des oiseaux : est ce que les oisillons s'envole tous au même age ? (probablement non)
Donc vous avez des "exclus vivants" (je fais plutôt de l'humain) qui sont censuré à droite au moment de l'envol et ce à différents jours certains à 10 d'autres à 12 d'autres à 15 etc.... La technique décrite ci-dessus ne serait valable que pour des temps inférieur à la première censure (d'exclus vivant)...car après vous ne connaissez plus le statut des autres oiseau déjà partis.
Matthieu FARON

Paméla Lagrange
Messages : 12
Enregistré le : 25 Jan 2012, 04:13

Messagepar Paméla Lagrange » 24 Fév 2012, 16:28

En effet, les oisillons ne s'envolent pas tous en même temps mais nous avons la date de dernière observation au nid. Comme le suivi est régulier, pour certains individus, l'envol est constaté, mais pour la grande majorité des cas il est déduit (si l'oisillon est en bonne condition et que l'âge théorique d'envol est passé, on le considère comme envolé, donc vivant). Vaudrait-il mieux que je les considère comme censurés à droite?

matthieu faron
Messages : 586
Enregistré le : 16 Fév 2011, 11:23

Messagepar matthieu faron » 24 Fév 2012, 16:35

Je ne suis peut être pas de bon conseil sur ce genre d'analyse.

Je ne travaille que sur des sujets humains.

Tous les modèles de survie ont pour hypothèse fondamentale que tous les sujets finissent par mourir un jour (ou présenter l'évènement) si on les observe suffisamment longtemps (les modèles avec cure-rate se développe à peine). D'où l'habitude de les censurer quand on ne les observe plus.

Nous avons pour habitude de toujours prendre la date des dernières nouvelles (la dernière fois où le patient a été vu vivant) pour censurer ces observations et de ne pas déduire le survie ou décès.
Comme les patients ne rentrent pas tous le même jour dans l'étude, même si on arrête l'étude à une date fixée le temps de suivi est différent entre le premier patient rentré (toujours vivant) et le dernier et donc nous censurons ces observations pour garder le plus d'info possible.

Peut être qu'un spécialiste de la question pourra vous répondre...
Matthieu FARON

Paméla Lagrange
Messages : 12
Enregistré le : 25 Jan 2012, 04:13

Messagepar Paméla Lagrange » 24 Fév 2012, 16:42

Merci bien de votre aide, vous m'avez éclairé sur certains points.
Il est surement plus prudent de censurer mes oisillons.
Je vais me replonger dans la littérature et voir ce qu'il en est pour le côté méthodo.

Eric Wajnberg
Messages : 776
Enregistré le : 11 Aoû 2008, 15:37
Contact :

Messagepar Eric Wajnberg » 25 Fév 2012, 13:47

Un point de précision qui me semble utile en lisant ce threat. Il est erroné de faire une analyse de survie en omettant les données censurées. Une des raisons est que - ce faisant - on va nécessairement biaiser la durée modélisée vers des valeurs plus faibles (car les plus fortes ont une probabilité plus élevée d'être censurée). C'est même là un des points qui fait toute la puissance de ces outils.

Hope this helps!

Eric.

Lucile Sese
Messages : 3
Enregistré le : 25 Juin 2015, 12:29

Re: Comment voir à quel age un facteur est létal avec Cox?

Messagepar Lucile Sese » 25 Juin 2015, 14:27

Bonjour,

Je débute avec R. je souhaite réaliser un modèle de Cox avec des variables dépendantes du temps à changement multiple.
J'aimerai utiliser la méthode d'Anderson-Gill.
Pour cela il faut bien un ficher avec une ligne par observation et non pas un une ligne par patient n'est ce pas ?
Merci pour vos réponses.


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité