He estado desarrollando un modelo de regresión logística basado en datos retrospectivos de una base de datos nacional de traumatismos de lesiones en la cabeza en el Reino Unido. El resultado clave es la mortalidad a los 30 días (denotada como medida "Sobrevivir"). Otras medidas con evidencia publicada de efecto significativo sobre el resultado en estudios previos incluyen:
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 estos modelos, dada la variable dependiente dicotómica, he construido una regresión logística usando lrm.
El método de selección de variables modelo se basó en la literatura clínica existente que modela el mismo diagnóstico. Todos han sido modelados con un ajuste lineal con la excepción de ISS, que se ha modelado tradicionalmente a través de polinomios fraccionales. Ninguna publicación ha identificado interacciones significativas conocidas entre las variables anteriores.
Siguiendo el consejo de Frank Harrell, he procedido con el uso de splines de regresión para modelar ISS (hay ventajas en este enfoque resaltado en los comentarios a continuación). Por lo tanto, el modelo se especificó previamente de la siguiente manera:
rcs.ASDH<-lrm(formula = Survive ~ Age + GCS + rcs(ISS) +
Year + inctoCran + oth, data = ASDH_Paper1.1, x=TRUE, y=TRUE)
Los resultados del modelo fueron:
> 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
Luego utilicé la función de calibración en el paquete rms para evaluar la precisión de las predicciones del modelo. Los siguientes resultados fueron obtenidos:
plot(calibrate(rcs.ASDH, B=1000), main="rcs.ASDH")
Después de completar el diseño del modelo, creé el siguiente gráfico para demostrar el efecto del Año del incidente en la supervivencia, basando los valores de la mediana en variables continuas y el modo en variables categóricas:
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)
El código anterior dio como resultado el siguiente resultado:
Mis preguntas restantes son las siguientes:
1. Interpretación de splines : ¿cómo puedo calcular el valor p de las splines combinadas para la variable general?
plot(Predict(rcs.ASDH, Year))
. Puede dejar que otras variables varíen, formando diferentes curvas, haciendo cosas comoplot(Predict(rcs.ASDH, Year, age=c(25, 35)))
.anova(rcs.ASDH)
.Respuestas:
Dos formas recomendadas para evaluar el ajuste del modelo son:
Hay algunas ventajas de las splines de regresión sobre los polinomios fraccionales, que incluyen:
Para obtener más información sobre las splines de regresión y la evaluación de linealidad y aditividad, consulte mis folletos en http://biostat.mc.vanderbilt.edu/CourseBios330 , así como la función del
rms
paquete R.rcs
Para las curvas de calibración de bootstrap penalizadas por sobreajuste, vea larms
calibrate
función.fuente