J'ai créé quelques modèles de régression de Cox et j'aimerais voir à quel point ces modèles fonctionnent et j'ai pensé qu'une courbe ROC ou une statistique c pourrait être utile de la même manière que ces articles:
Armitage a utilisé la régression logistique, mais je me demande s'il est possible d'utiliser un modèle du package de survie, le survivalROC donne un indice que cela est possible, mais je ne sais pas comment faire fonctionner cela avec une régression de Cox régulière.
Je serais reconnaissant si quelqu'un me montrait comment faire une analyse ROC sur cet exemple:
library(survival)
data(veteran)
attach(veteran)
surv <- Surv(time, status)
fit <- coxph(surv ~ trt + age + prior, data=veteran)
summary(fit)
Si possible, j'apprécierais à la fois la sortie c-statique brute et un joli graphique
Merci!
Mettre à jour
Merci beaucoup pour les réponses. @Dwin: Je voudrais juste être sûr d'avoir bien compris avant de sélectionner votre réponse.
Le calcul tel que je le comprends selon la suggestion de DWin:
library(survival)
library(rms)
data(veteran)
fit.cph <- cph(surv ~ trt + age + prior, data=veteran, x=TRUE, y=TRUE, surv=TRUE)
# Summary fails!?
#summary(fit.cph)
# Get the Dxy
v <- validate(fit.cph, dxy=TRUE, B=100)
# Is this the correct value?
Dxy = v[rownames(v)=="Dxy", colnames(v)=="index.corrected"]
# The c-statistic according to the Dxy=2(c-0.5)
Dxy/2+0.5
Je ne suis pas familier avec la fonction de validation et le bootstrap mais après avoir regardé le prof. La réponse de Frank Harrel ici sur R-help J'ai pensé que c'était probablement le moyen d'obtenir le Dxy. L'aide pour valider les états:
... La corrélation de rang Dxy de Somers à calculer à chaque rééchantillonnage (cela prend un peu plus de temps que les statistiques basées sur la vraisemblance). Les valeurs correspondant à la ligne Dxy sont égales à 2 * (C - 0,5) où C est l'indice C ou la probabilité de concordance.
Je suppose que je suis surtout confus par les colonnes. J'ai pensé que la valeur corrigée était celle que je devais utiliser mais je n'ai pas vraiment compris la sortie de validation:
index.orig training test optimism index.corrected n
Dxy -0.0137 -0.0715 -0.0071 -0.0644 0.0507 100
R2 0.0079 0.0278 0.0037 0.0242 -0.0162 100
Slope 1.0000 1.0000 0.2939 0.7061 0.2939 100
...
Dans la question R-help, j'ai compris que je devrais avoir "surv = TRUE" dans le cph si j'ai des strates mais je ne sais pas quel est le but du paramètre "u = 60" dans la fonction de validation. Je vous serais reconnaissant de bien vouloir m'aider à les comprendre et à vérifier que je n'ai commis aucune erreur.
cph()
commande.index.corrected
c'est ce qu'il faut souligner. Ce sont des estimations des performances futures probables.u=60
n'est pas nécessairevalidate
car vous n'avez pas de strates. Si vous aviez des strates, les courbes de survie peuvent se croiser et vous devez spécifier un moment particulier pour obtenir la zone ROC généralisée.Réponses:
@chl a indiqué une réponse spécifique à votre question. La
cph
fonction du package «rms» produira un Somers-D qui peut être transformé trivialement en un c-index. Cependant, Harrell (qui a introduit le c-index dans la pratique biostatistique) pense que ce n'est pas judicieux comme stratégie générale pour évaluer les mesures pronostiques, car il a un faible pouvoir de discrimination entre les alternatives. Au lieu de compter sur la littérature chirurgicale pour vos conseils méthodologiques, il serait plus sage de rechercher la sagesse accumulée dans le texte de Harrell, "Regression Modeling Strategies" ou Steyerberg's "Clinical Prediction Models".la source
Selon vos besoins, l'intégration d'un modèle dans un modèle plus grand et un test de rapport de vraisemblance "chunk" pour la valeur ajoutée des variables supplémentaires vous donneront un test puissant. Mon livre parle d'un indice issu de cette approche (l '"indice d'adéquation").χ2
la source