Brève introduction:Quelle est la valeur par défaut de la fonction de transformation temporelle dans la commande coxph?
modèle des risques proportionnels de Cox A (PH) peut être estimée avec la fonction coxph
du paquet survival
. Une exigence évidente pour obtenir des résultats raisonnables à partir de ce type de modèle est que les risques sont proportionnels, c'est-à-dire qu'ils sont constants dans le temps. Si ce n'est pas le cas pour une certaine variable, elle peut être résolue en faisant varier le coefficient de cette variable temps. (Maintenant c'est techniquement un modèle Cox étendu.) Ceci est fait en ajoutant le tt()
à cette variable et en spécifiant une fonction au fil du temps (voir vignette("timedep", package = "survival")
page 19+).
Question:
Quelle fonction est utilisée si tt()
est utilisé sans spécifier une fonction?
Voici un exemple:
library(survival)
data(lung)
cox_model <- coxph(Surv(time, status) ~ age + sex + ph.karno, data = lung)
cox_model_ph <- cox.zph(cox_model)
# rho chisq p
# age 0.00701 0.00871 0.92566
# sex 0.12249 2.42336 0.11954
# ph.karno 0.23135 8.24167 0.00409
# GLOBAL NA 11.54750 0.00911
Nous voyons que ph.karno
constitue une violation de l'hypothèse de PH (petite valeur p), il faut donc ajouter tt()
:
cox_model_tt <- coxph(Surv(time, status) ~ age + sex + tt(ph.karno), data = lung)
cox_model_tt_ph <- cox.zph(cox_model_tt)
# rho chisq p
# age -0.00907 0.0142 0.9052
# sex 0.12844 2.7270 0.0987
# tt(ph.karno) 0.11643 2.3846 0.1225
# GLOBAL NA 5.0220 0.1702
maintenant l'hypothèse de PH est satisfaite, mais Je n'ai aucune idée de ce que la fonction tt()
a réellement fait. J'ai essayé une fonction utilisée commune telle que tt = function(x, t, ...) x*t
, tt = function(x, t, ...) x + t
, tt = function(x, t, ...) x*log(t)
. Mais tous ont donné des résultats différents (et ont été incapables de réparer la violation de PH).
Toute aide est appréciée.
dans sa vignette (https://cran.r-project.org/web/packages/survival/vignettes/timedep.pdf, pg.19), Terry montre la différence entre une transformation temporelle incorrecte (par exemple en utilisant ' I() ') et une transformation temporelle correcte (par exemple en utilisant le paramètre' tt'). En regardant à travers le code source 'coxph' (https://github.com/cran/survival/blob/master/R/coxph.R), je peux voir d'un point de vue mathématique ce qui se passe avec' tt'. Mais pouvez-vous élaborer sur la raison conceptuelle pour laquelle 'tt' est requis pour une vraie transformation temporelle? Je vous remercie. – NickBraunagel
Je pense que votre commentaire/question serait plus approprié pour CrossValidated.com. Je ne pense pas que ce soit vraiment une question de codage. –
Gotcha. Transfert sur – NickBraunagel