J'ai développé un modèle de régression logistique basé sur des données rétrospectives d'une base de données nationale sur les traumatismes des traumatismes crâniens au Royaume-Uni. Le résultat clé est la mortalité à 30 jours (dénommée mesure de «survie»). D'autres mesures avec des preuves publiées d'effet significatif sur les résultats dans les études précédentes comprennent:
Year - Year of procedure = 1994-2013
Age - Age of patient = 16.0-101.5
ISS - Injury Severity Score = 0-75
Sex - Gender of patient = Male or Female
inctoCran - Time from head injury to craniotomy in minutes = 0-2880 (After 2880 minutes is defined as a separate diagnosis)
En utilisant ces modèles, étant donné la variable dépendante dichotomique, j'ai construit une régression logistique en utilisant lrm.
La méthode de sélection des variables du modèle était basée sur la littérature clinique existante modélisant le même diagnostic. Tous ont été modélisés avec un ajustement linéaire à l'exception de l'ISS qui a été modélisé traditionnellement par des polynômes fractionnaires. Aucune publication n'a identifié d'interactions significatives connues entre les variables ci-dessus.
Sur les conseils de Frank Harrell, j'ai procédé à l'utilisation de splines de régression pour modéliser l'ISS (cette approche présente des avantages dans les commentaires ci-dessous). Le modèle a donc été prédéfini comme suit:
rcs.ASDH<-lrm(formula = Survive ~ Age + GCS + rcs(ISS) +
Year + inctoCran + oth, data = ASDH_Paper1.1, x=TRUE, y=TRUE)
Les résultats du modèle étaient:
> rcs.ASDH
Logistic Regression Model
lrm(formula = Survive ~ Age + GCS + rcs(ISS) + Year + inctoCran +
oth, data = ASDH_Paper1.1, x = TRUE, y = TRUE)
Model Likelihood Discrimination Rank Discrim.
Ratio Test Indexes Indexes
Obs 2135 LR chi2 342.48 R2 0.211 C 0.743
0 629 d.f. 8 g 1.195 Dxy 0.486
1 1506 Pr(> chi2) <0.0001 gr 3.303 gamma 0.487
max |deriv| 5e-05 gp 0.202 tau-a 0.202
Brier 0.176
Coef S.E. Wald Z Pr(>|Z|)
Intercept -62.1040 18.8611 -3.29 0.0010
Age -0.0266 0.0030 -8.83 <0.0001
GCS 0.1423 0.0135 10.56 <0.0001
ISS -0.2125 0.0393 -5.40 <0.0001
ISS' 0.3706 0.1948 1.90 0.0572
ISS'' -0.9544 0.7409 -1.29 0.1976
Year 0.0339 0.0094 3.60 0.0003
inctoCran 0.0003 0.0001 2.78 0.0054
oth=1 0.3577 0.2009 1.78 0.0750
J'ai ensuite utilisé la fonction calibrer dans le package rms afin d'évaluer la précision des prédictions du modèle. Les résultats suivants ont été obtenus:
plot(calibrate(rcs.ASDH, B=1000), main="rcs.ASDH")
Après avoir terminé la conception du modèle, j'ai créé le graphique suivant pour démontrer l'effet de l'année d'incident sur la survie, en basant les valeurs de la médiane sur des variables continues et le mode sur des variables catégorielles:
ASDH <- Predict(rcs.ASDH, Year=seq(1994,2013,by=1),Age=48.7,ISS=25,inctoCran=356,Other=0,GCS=8,Sex="Male",neuroYN=1,neuroFirst=1)
Probabilities <- data.frame(cbind(ASDH$yhat,exp(ASDH$yhat)/(1+exp(ASDH$yhat)),exp(ASDH$lower)/(1+exp(ASDH$lower)),exp(ASDH$upper)/(1+exp(ASDH$upper))))
names(Probabilities) <- c("yhat","p.yhat","p.lower","p.upper")
ASDH<-merge(ASDH,Probabilities,by="yhat")
plot(ASDH$Year,ASDH$p.yhat,xlab="Year",ylab="Probability of Survival",main="30 Day Outcome Following Craniotomy for Acute SDH by Year", ylim=range(c(ASDH$p.lower,ASDH$p.upper)),pch=19)
arrows(ASDH$Year,ASDH$p.lower,ASDH$Year,ASDH$p.upper,length=0.05,angle=90,code=3)
Le code ci-dessus a généré la sortie suivante:
Mes questions restantes sont les suivantes:
1. Interprétation des splines - Comment puis-je calculer la valeur de p pour les splines combinées pour la variable globale?
anova(rcs.ASDH)
.
plot(Predict(rcs.ASDH, Year))
. Vous pouvez laisser d'autres variables varier, en créant différentes courbes, en faisant des choses commeplot(Predict(rcs.ASDH, Year, age=c(25, 35)))
.