Quelqu'un peut-il m'expliquer mon modèle Cox en anglais simple?
J'ai ajusté le modèle de régression de Cox suivant à toutes mes données en utilisant la cph
fonction. Mes données sont enregistrées dans un objet appelé Data
. Les variables w
, x
et y
sont continues; z
est un facteur de deux niveaux. Le temps est mesuré en mois. Certains de mes patients n'ont pas de données pour la variable z
( NB : j'ai dûment noté la suggestion du Dr Harrell, ci-dessous, que j'impute ces valeurs afin d'éviter de biaiser mon modèle, et que je le ferai à l'avenir).
> fit <- cph(formula = Surv(time, event) ~ w + x + y + z, data = Data, x = T, y = T, surv = T, time.inc = 12)
Cox Proportional Hazards Model
Frequencies of Missing Values Due to Each Variable
Surv(time, event) w x y z
0 0 0 0 14
Model Tests Discrimination
Indexes
Obs 152 LR chi2 8.33 R2 0.054
Events 64 d.f. 4 g 0.437
Center 0.7261 Pr(> chi2) 0.0803 gr 1.548
Score chi2 8.07
Pr(> chi2) 0.0891
Coef S.E. Wald Z Pr(>|Z|)
w -0.0133 0.0503 -0.26 0.7914
x -0.0388 0.0351 -1.11 0.2679
y -0.0363 0.0491 -0.74 0.4600
z=1 0.3208 0.2540 1.26 0.2067
J'ai également essayé de tester l'hypothèse de risques proportionnels en utilisant la cox.zph
commande ci-dessous, mais je ne sais pas comment interpréter ses résultats. Contourner plot()
la commande donne un message d'erreur.
cox.zph(fit, transform="km", global=TRUE)
rho chisq p
w -0.1125 1.312 0.2520
x 0.0402 0.179 0.6725
y 0.2349 4.527 0.0334
z=1 0.0906 0.512 0.4742
GLOBAL NA 5.558 0.2347
Premier problème
- Quelqu'un peut-il m'expliquer les résultats de la sortie ci-dessus en anglais simple? J'ai une formation médicale et aucune formation officielle en statistique.
Deuxième problème
Comme suggéré par le Dr Harrell, je voudrais valider en interne mon modèle en effectuant 100 itérations de validation croisée 10 fois en utilisant le
rms
package (d'après ce que je comprends, cela impliquerait de construire100 * 10 = 1000
différents modèles et de leur demander de prédire les temps de survie patients qu'ils n'avaient jamais vus).J'ai essayé d'utiliser la
validate
fonction, comme indiqué.> v1 <- validate(fit, method="crossvalidation", B = 10, dxy=T) > v1 index.orig training test optimism index.corrected n Dxy -0.2542 -0.2578 -0.1356 -0.1223 -0.1320 10 R2 0.0543 0.0565 0.1372 -0.0806 0.1350 10 Slope 1.0000 1.0000 0.9107 0.0893 0.9107 10 D 0.0122 0.0128 0.0404 -0.0276 0.0397 10 U -0.0033 -0.0038 0.0873 -0.0911 0.0878 10 Q 0.0155 0.0166 -0.0470 0.0636 -0.0481 10 g 0.4369 0.4424 0.6754 -0.2331 0.6700 10
Comment effectuez-vous le rééchantillonnage 100x? Je pense que mon code ci-dessus n'effectue la validation croisée qu'une seule fois.
J'ai ensuite voulu savoir à quel point mon modèle était bon en prédiction. J'ai essayé ce qui suit:
> c_index <- abs(v1[1,5])/2 + 0.5 > c_index [1] 0.565984
Est-ce à dire que mon modèle n'est que très légèrement meilleur que de lancer une pièce?
Troisième problème
Le Dr Harrell souligne que j'ai supposé la linéarité pour les effets de covariable et que le nombre d'événements dans mon échantillon est à peine assez grand pour correspondre à un modèle fiable si tous les effets de covariable se trouvent être linéaires.
- Est-ce à dire que je devrais inclure une sorte de terme d'interaction dans mon modèle? Si oui, des conseils sur quoi mettre?
cph
sortie ci-dessus dans un anglais simple, ou me pointait vers une référence qui le ferait. Dr Harrell, merci beaucoup pour votre aide jusqu'à présent!