Ho sviluppato un modello di regressione logistica basato su dati retrospettivi di un database nazionale sui traumi di trauma cranico nel Regno Unito. Il risultato chiave è la mortalità a 30 giorni (indicata come misura "Sopravvivere"). Altre misure con prove pubblicate di effetti significativi sugli esiti in studi precedenti includono:
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)
Usando questi modelli, data la variabile dipendente dicotomica, ho costruito una regressione logistica usando lrm.
Il metodo di selezione delle variabili del modello era basato sulla letteratura clinica esistente che modella la stessa diagnosi. Tutti sono stati modellati con un adattamento lineare ad eccezione della ISS che è stata modellata tradizionalmente attraverso polinomi frazionari. Nessuna pubblicazione ha identificato interazioni significative note tra le variabili di cui sopra.
Su consiglio di Frank Harrell, ho proceduto all'uso delle spline di regressione per modellare la ISS (ci sono vantaggi di questo approccio evidenziato nei commenti seguenti). Il modello è stato quindi pre-specificato come segue:
rcs.ASDH<-lrm(formula = Survive ~ Age + GCS + rcs(ISS) +
Year + inctoCran + oth, data = ASDH_Paper1.1, x=TRUE, y=TRUE)
I risultati del modello sono stati:
> 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
Ho quindi usato la funzione di calibrazione nel pacchetto rms per valutare l'accuratezza delle previsioni dal modello. Sono stati ottenuti i seguenti risultati:
plot(calibrate(rcs.ASDH, B=1000), main="rcs.ASDH")
Dopo il completamento della progettazione del modello, ho creato il seguente grafico per dimostrare l'effetto dell'Anno dell'incidente sulla sopravvivenza, basando i valori della mediana in variabili continue e la modalità in variabili categoriali:
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)
Il codice sopra riportato ha prodotto il seguente output:
Le mie restanti domande sono le seguenti:
1. Interpretazione spline - Come posso calcolare il valore p per le spline combinate per la variabile complessiva?
anova(rcs.ASDH)
.
plot(Predict(rcs.ASDH, Year))
. Puoi far variare le altre variabili, creando curve diverse, facendo cose comeplot(Predict(rcs.ASDH, Year, age=c(25, 35)))
.