ฉันพัฒนารูปแบบการถดถอยโลจิสติกส์โดยใช้ข้อมูลย้อนหลังจากฐานข้อมูลการบาดเจ็บระดับชาติของการบาดเจ็บที่ศีรษะในสหราชอาณาจักร ผลลัพธ์ที่สำคัญคืออัตราการเสียชีวิต 30 วัน (แสดงเป็นมาตรการ "เอาตัวรอด") มาตรการอื่น ๆ ที่มีหลักฐานที่ตีพิมพ์ว่ามีผลกระทบอย่างมีนัยสำคัญต่อผลลัพธ์ในการศึกษาก่อนหน้า ได้แก่
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)
การใช้แบบจำลองเหล่านี้เมื่อได้รับตัวแปรดิโคโดโตมิสฉันได้สร้างการถดถอยโลจิสติกโดยใช้ lrm
วิธีการเลือกตัวแปรแบบจำลองขึ้นอยู่กับการสร้างแบบจำลองวรรณกรรมทางคลินิกที่มีอยู่การวินิจฉัยเดียวกัน ทั้งหมดได้รับการจำลองด้วยแบบเชิงเส้นยกเว้นสถานีอวกาศนานาชาติซึ่งได้รับการสร้างแบบดั้งเดิมผ่านพหุนามเศษส่วน สิ่งพิมพ์ไม่ได้ระบุปฏิสัมพันธ์ที่สำคัญที่รู้จักกันระหว่างตัวแปรข้างต้น
ตามคำแนะนำจาก Frank Harrell ฉันได้ดำเนินการใช้ splines การถดถอยกับโมเดล ISS (มีข้อดีของวิธีนี้ที่เน้นในความคิดเห็นด้านล่าง) โมเดลถูกระบุไว้ล่วงหน้าดังนี้:
rcs.ASDH<-lrm(formula = Survive ~ Age + GCS + rcs(ISS) +
Year + inctoCran + oth, data = ASDH_Paper1.1, x=TRUE, y=TRUE)
ผลลัพธ์ของโมเดลคือ:
> 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
ฉันใช้ฟังก์ชันปรับเทียบในแพ็คเกจ rms เพื่อประเมินความแม่นยำของการทำนายจากแบบจำลอง ผลลัพธ์ต่อไปนี้ได้รับ:
plot(calibrate(rcs.ASDH, B=1000), main="rcs.ASDH")
หลังจากเสร็จสิ้นการออกแบบโมเดลฉันสร้างกราฟต่อไปนี้เพื่อแสดงผลของปีเหตุการณ์ที่เกิดขึ้นต่อการอยู่รอดค่าฐานของค่ามัธยฐานในตัวแปรต่อเนื่องและโหมดในตัวแปรเด็ดขาด:
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)
รหัสด้านบนทำให้เกิดผลลัพธ์ต่อไปนี้:
คำถามที่เหลืออยู่ของฉันมีดังต่อไปนี้:
1. การตีความ Spline - ฉันจะคำนวณ p-value สำหรับ splines รวมกันสำหรับตัวแปรโดยรวมได้อย่างไร
anova(rcs.ASDH)
หลายการทดสอบการใช้งาน
plot(Predict(rcs.ASDH, Year))
เช่น คุณสามารถให้ตัวแปรอื่น ๆplot(Predict(rcs.ASDH, Year, age=c(25, 35)))
ที่แตกต่างกันทำให้เส้นโค้งที่แตกต่างกันโดยการทำสิ่งที่ชอบ