การถดถอยแบบลอจิสติกพร้อมเส้นโค้งการถดถอยใน R


12

ฉันพัฒนารูปแบบการถดถอยโลจิสติกส์โดยใช้ข้อมูลย้อนหลังจากฐานข้อมูลการบาดเจ็บระดับชาติของการบาดเจ็บที่ศีรษะในสหราชอาณาจักร ผลลัพธ์ที่สำคัญคืออัตราการเสียชีวิต 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")

เส้นโค้งการปรับเทียบ Bootstrap ถูกลงโทษสำหรับ overfitting

หลังจากเสร็จสิ้นการออกแบบโมเดลฉันสร้างกราฟต่อไปนี้เพื่อแสดงผลของปีเหตุการณ์ที่เกิดขึ้นต่อการอยู่รอดค่าฐานของค่ามัธยฐานในตัวแปรต่อเนื่องและโหมดในตัวแปรเด็ดขาด:

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 รวมกันสำหรับตัวแปรโดยรวมได้อย่างไร


4
ทำได้ดีมาก สำหรับการแสดงผลของปีผมขอแนะนำให้ปล่อยให้ตัวแปรอื่น ๆ ที่ได้รับการตั้งค่าเริ่มต้น (เฉลี่ยต่ออย่างต่อเนื่อง, โหมดเด็ดขาด) และแตกต่างกันในปีแกน x plot(Predict(rcs.ASDH, Year))เช่น คุณสามารถให้ตัวแปรอื่น ๆ plot(Predict(rcs.ASDH, Year, age=c(25, 35)))ที่แตกต่างกันทำให้เส้นโค้งที่แตกต่างกันโดยการทำสิ่งที่ชอบ
Frank Harrell

1
ฉันไม่รู้ว่าทำไม - แต่ฉันไม่เห็นตัวอย่างของเส้นโค้งการสอบเทียบที่แก้ไขโดยอคติในวรรณกรรม ดูเหมือนว่าเป็นความคิดที่ดี
charles

1
ในการทดสอบการเชื่อมโยงโดยรวมที่มี DF anova(rcs.ASDH)หลายการทดสอบการใช้งาน
Frank Harrell

คำตอบ:


8

มันยากมากที่จะตีความผลลัพธ์ของคุณเมื่อคุณไม่ได้ระบุโมเดลไว้ล่วงหน้า แต่ได้มีส่วนร่วมในการทดสอบที่สำคัญและการแก้ไขโมเดลที่เกิดขึ้น และผมไม่แนะนำให้ความดีทั่วโลกของการทดสอบแบบที่คุณเคยใช้เพราะมันมีการกระจายเลวและไม่กระจายχ2

สองวิธีที่แนะนำในการประเมินความพอดีของโมเดลคือ:

  1. Bootstrap กราฟการปรับเทียบที่ไม่ใช่ overfitting ที่แก้ไขได้อย่างราบรื่น (เช่น * เหลือง) เส้นโค้งการปรับเทียบเพื่อตรวจสอบความถูกต้องแม่นยำของการทำนาย
  2. ตรวจสอบลักษณะทั่วไปของโมเดลการทดสอบว่าข้อกำหนดโมเดลที่ยืดหยุ่นมากขึ้นนั้นทำงานได้ดี ตัวอย่างเช่นทำอัตราส่วนความน่าจะเป็นหรือการทดสอบWaldของคำศัพท์ไม่เชิงเส้นหรือปฏิสัมพันธ์พิเศษχ2

มีข้อดีบางประการของการถดถอย splines มากกว่าชื่อพหุนามเศษส่วน ได้แก่ :

  1. ตัวทำนายสามารถมีค่า ; คุณไม่สามารถบันทึกค่าดังกล่าวได้ตามที่ FPs กำหนด0
  2. คุณไม่จำเป็นต้องกังวลเกี่ยวกับที่มาของผู้ทำนาย FPs คิดว่าศูนย์เป็นต้นกำเนิด "เวทย์มนตร์" สำหรับผู้ทำนายในขณะที่เส้นโค้งการถดถอยจะคงที่เพื่อเปลี่ยนการทำนายโดยค่าคงที่

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเส้นโค้งการถดถอยและเชิงเส้นและการประเมิน additivity ดูเอกสารประกอบคำบรรยายของฉันที่http://biostat.mc.vanderbilt.edu/CourseBios330เช่นเดียวกับ R rmsแพคเกจrcsฟังก์ชั่น สำหรับเส้นโค้งการปรับเทียบ bootstrap ถูกลงโทษสำหรับ overfitting ดูrms calibrateฟังก์ชั่น


ฉันได้พยายามระบุแบบจำลองล่วงหน้าในการสร้างแบบจำลองเต็มรูปแบบพร้อมกับตัวแปรทั้งหมดที่มีในทางการแพทย์รวมถึงในตอนแรกและที่เกี่ยวข้องกับการวินิจฉัยและตัวแปรผลลัพธ์ พวกมันทั้งหมดเป็นตัวแปรเชิงเส้นเชิงเส้นหรือต่อเนื่องแบบแยกกันยกเว้นสถานีอวกาศนานาชาติซึ่งการศึกษาก่อนหน้านี้ได้ระบุว่าสามารถจำลองด้วยพหุนามเศษส่วนได้ วิธีที่ฉันใช้ในการพัฒนาแบบจำลองที่ฉันเชื่อว่าสอดคล้องกับ "การสร้างแบบจำลองหลายตัวแปรของ Willi Sauerbrei" บางทีฉันอาจใช้แพ็คเกจ rms ของคุณใน R เพื่อประเมินความดีที่เหมาะสมของโลก? ถ้าเป็นเช่นนั้นคุณจะแนะนำสูตรอะไร
Dan Fountain

ฉันขยายคำตอบของฉันไปยังที่อยู่บางส่วน
Frank Harrell

คุณสามารถแนะนำแพ็คเกจสำหรับการดำเนินการที่ 1 และ 2 เพื่อประเมินโมเดลได้หรือไม่? ฉันสามารถใช้ฟังก์ชันตรวจสอบความถูกต้องเป็น rms ได้หรือไม่? ในแง่ของเส้นโค้งการถดถอยฉันอ่านบันทึกการบรรยายของคุณและกำลังพยายามหาสำเนาหนังสือของคุณ (ฉันจะซื้อถ้าฉันทำได้!) คุณจะสามารถแนะนำแพ็คเกจ / ฟังก์ชั่น R เพิ่มเติมสำหรับการสร้างเส้นโค้งการถดถอย สำหรับตัวแปรต่อเนื่องที่ไม่ใช่เชิงเส้นในรุ่นนี้ ขอบคุณมากสำหรับความช่วยเหลือทั้งหมดของคุณ
Dan Fountain

บางทีโลกแพคเกจที่ยึดตามการถดถอยแบบปรับหลายตัวแปรของฟรีดแมน
Dan Fountain

หนึ่งคำถามสุดท้าย สูตรสำหรับคะแนนความรุนแรงของการบาดเจ็บ (ISS) คือ A ^ 2 + B ^ 2 + C ^ 2 โดยที่ A, B และ C เป็นส่วนต่าง ๆ ของร่างกายที่มีคะแนนความรุนแรงจากการบาดเจ็บที่ 1-5 ดังนั้นค่าสูงสุดคือ 75 และต่ำสุด 1 ภายในชุดข้อมูลนี้ จากสูตรนี้พหุนามเศษส่วนจะเป็นตัวแทนที่ใกล้เคียงกับการคำนวณคะแนนจริง ๆ เมื่อเปรียบเทียบกับเส้นโค้งการถดถอยหรือไม่
Dan Fountain
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.