การตีความและการตรวจสอบความถูกต้องของรูปแบบการถดถอยอันตรายตามสัดส่วนของ Cox โดยใช้ R เป็นภาษาอังกฤษแบบธรรมดา


14

มีใครช่วยอธิบายโมเดล Cox ของฉันให้ฉันฟังเป็นภาษาอังกฤษธรรมดาได้ไหม

ฉันติดตั้งโมเดลการถดถอยของ Cox ต่อไปนี้กับข้อมูลทั้งหมดของฉันโดยใช้cphฟังก์ชั่น Dataข้อมูลของฉันจะถูกบันทึกไว้ในวัตถุที่เรียกว่า ตัวแปรw, xและyมีความต่อเนื่อง zเป็นปัจจัยสองระดับ เวลามีหน่วยวัดเป็นเดือน ผู้ป่วยบางรายของฉันขาดข้อมูลสำหรับตัวแปรz( หมายเหตุ : ฉันได้ระบุไว้อย่างชัดเจนว่าคำแนะนำของดร. ฮาร์เรลด้านล่างนี้ว่าฉันใส่ค่าเหล่านี้เพื่อหลีกเลี่ยงการทำให้ลำเอียงแบบของฉันและจะทำในอนาคต)

> fit <- cph(formula = Surv(time, event) ~ w + x + y + z, data = Data, x = T, y = T, surv = T, time.inc = 12)

Cox Proportional Hazards Model
Frequencies of Missing Values Due to Each Variable
Surv(time, event)    w    x    y    z 
                0    0    0    0   14 

                Model Tests          Discrimination 
                                            Indexes        
Obs       152   LR chi2      8.33    R2       0.054    
Events     64   d.f.            4    g        0.437    
Center 0.7261   Pr(> chi2) 0.0803    gr       1.548    
                Score chi2   8.07                      
                Pr(> chi2) 0.0891                      

                   Coef    S.E.   Wald Z   Pr(>|Z|)
         w      -0.0133  0.0503    -0.26     0.7914  
         x      -0.0388  0.0351    -1.11     0.2679  
         y      -0.0363  0.0491    -0.74     0.4600  
         z=1     0.3208  0.2540     1.26     0.2067

ฉันพยายามทดสอบสมมติฐานเกี่ยวกับอันตรายตามสัดส่วนโดยใช้cox.zphคำสั่งด้านล่าง แต่ไม่ทราบวิธีตีความผลลัพธ์ การใส่plot()คำสั่งให้ข้อความแสดงข้อผิดพลาด

 cox.zph(fit, transform="km", global=TRUE)
            rho chisq      p
 w      -0.1125 1.312 0.2520
 x       0.0402 0.179 0.6725
 y       0.2349 4.527 0.0334
 z=1     0.0906 0.512 0.4742
 GLOBAL      NA 5.558 0.2347

ปัญหาแรก

  • ใครสามารถอธิบายผลลัพธ์ของผลลัพธ์ข้างต้นให้ฉันเป็นภาษาอังกฤษธรรมดาได้หรือไม่ ฉันมีพื้นฐานทางการแพทย์และไม่มีการฝึกอบรมอย่างเป็นทางการในสถิติ

ปัญหาที่สอง

  • ตามที่ดร. ฮาร์เรลล์แนะนำฉันต้องการตรวจสอบแบบจำลองของฉันภายในด้วยการตรวจสอบความถูกต้องแบบข้าม 10 ครั้ง 100 ครั้งโดยใช้rmsแพ็คเกจ (จากสิ่งที่ฉันเข้าใจสิ่งนี้จะนำ100 * 10 = 1000ไปสู่ ของผู้ป่วยที่พวกเขาไม่เคยเห็น)

    ฉันลองใช้validateฟังก์ชั่นดังที่แสดง

    > v1 <- validate(fit, method="crossvalidation", B = 10, dxy=T)
    > v1
          index.orig training    test optimism index.corrected  n
    Dxy      -0.2542  -0.2578 -0.1356  -0.1223         -0.1320 10
    R2        0.0543   0.0565  0.1372  -0.0806          0.1350 10
    Slope     1.0000   1.0000  0.9107   0.0893          0.9107 10
    D         0.0122   0.0128  0.0404  -0.0276          0.0397 10
    U        -0.0033  -0.0038  0.0873  -0.0911          0.0878 10
    Q         0.0155   0.0166 -0.0470   0.0636         -0.0481 10
    g         0.4369   0.4424  0.6754  -0.2331          0.6700 10
    

    คุณจะทำการสุ่มตัวอย่าง 100x ใหม่ได้อย่างไร ฉันคิดว่าโค้ดด้านบนของฉันทำการตรวจสอบไขว้เพียงครั้งเดียวเท่านั้น

  • จากนั้นฉันก็อยากรู้ว่าแบบจำลองของฉันดีแค่ไหนที่ทำนายไว้ ฉันพยายามต่อไปนี้:

    > c_index <- abs(v1[1,5])/2 + 0.5
    > c_index
    [1] 0.565984
    

    นี่หมายความว่าแบบจำลองของฉันดีกว่าการพลิกเหรียญเพียงเล็กน้อยเท่านั้นหรือ

ปัญหาที่สาม

ดร. ฮาร์เรลล์ชี้ให้เห็นว่าฉันสันนิษฐานว่าเป็นเส้นตรงสำหรับเอฟเฟกต์โควาเรียตและจำนวนของเหตุการณ์ในตัวอย่างของฉันมีขนาดใหญ่พอที่จะพอดีกับแบบจำลองที่เชื่อถือได้หากเอฟเฟกต์ covariate ทั้งหมดเป็นเส้นตรง

  • นี่หมายความว่าฉันควรจะรวมคำศัพท์บางอย่างไว้ในแบบจำลองของฉันหรือไม่? ถ้าเป็นเช่นนั้นคำแนะนำใด ๆ เกี่ยวกับสิ่งที่จะนำไป?

2
ฉันได้ทำการแก้ไขที่สำคัญสำหรับคำถามเริ่มต้นของฉันด้านบนประมาณสามชั่วโมงหลังจากที่ฉันถามในตอนแรก ฉันได้ลองทำตามคำแนะนำที่เป็นประโยชน์ของ Dr. Harrell ฉันยังคงซาบซึ้งจริง ๆ ถ้ามีคนพยายามอธิบายcphผลลัพธ์ข้างต้นให้ฉันเป็นภาษาอังกฤษธรรมดาหรือชี้ให้ฉันอ้างอิงที่จะทำ ดร. ฮาร์เรลขอบคุณมากสำหรับความช่วยเหลือของคุณจนถึงตอนนี้!
อเล็กซานเด

คำตอบ:


13

ในการเริ่มต้นพิจารณาบางสิ่ง ก่อนอื่นคุณไม่รวมการสังเกตที่มีข้อมูลขาดหายไปมากเกินไปซึ่งจะทำให้เกิดอคติ พิจารณาการใส่ความหลาย ๆ ประการที่สองมีวิธีการลงจุดสำหรับcox.zphซึ่งมีประโยชน์ในการประเมินอันตรายตามสัดส่วน ประการที่สามคุณสันนิษฐานว่าเป็นเส้นตรงสำหรับเอฟเฟกต์ covariate ประการที่สี่จำนวนเหตุการณ์ในตัวอย่างการฝึกอบรมของคุณมีขนาดใหญ่พอที่จะพอดีกับแบบจำลองที่เชื่อถือได้หากเอฟเฟกต์ covariate ทั้งหมดเป็นเส้นตรง (ซึ่งหายาก) และตัวอย่างทดสอบของคุณอาจต้องมีเหตุการณ์ 400 เหตุการณ์ก่อนที่จะให้การประเมินความถูกต้องแม่นยำของการทำนายที่เชื่อถือได้ ไม่ชัดเจนว่าคุณมีข้อมูลเพียงพอที่จะแยกข้อมูลออกเป็นสองส่วน การตรวจสอบความถูกต้องซ้ำอีกครั้ง (การตรวจสอบความถูกต้องข้าม 10 ครั้ง 100 ครั้งหรือใช้ bootstrap) เป็นวิธีแก้ปัญหาที่ดีกว่า ทั้งสองของการตรวจสอบภายนอก (ฟังก์ชั่นเดิมrcorr.censและval.surv) และ resampling การตรวจสอบภายใน (ฟังก์ชั่นvalidate, calibrate) จะดำเนินการใน R rmsแพคเกจ กรณีศึกษาสำหรับrmsแพคเกจพบได้ในบันทึกหลักสูตรของฉันที่http://biostat.mc.vanderbilt.edu/rms (และฉันมีหลักสูตร 3 วันสำหรับเรื่องนี้ในแนชวิลล์เดือนหน้า) โปรดทราบว่าตารางไม่เหมาะสำหรับใช้กับข้อมูลต่อเนื่อง2×2


1
ดร. ฮาร์เรลขอบคุณมากสำหรับความคิดเห็นของคุณ ฉันพยายามพิมพ์อย่างไรเช่นนี้ให้ผลplot(cox.zph(fit[[1]], transform="km", global=TRUE)) Error in plot.cox.zph(cox.zph(fit[[1]], transform = "km", global = TRUE)) : Spline fit is singular, try a smaller degrees of freedomฉันเรียกฟังก์ชันนี้ไม่ถูกต้องหรือไม่?
อเล็กซานเด

1
ถ้าฉันรวมข้อมูลการฝึกอบรมและการตรวจสอบความถูกต้องของฉันฉันมีการสังเกต 166 ครั้งกับ 75 เหตุการณ์ ตามที่คุณแนะนำฉันสามารถกำหนดค่าของตัวแปร "z" สำหรับการสังเกต 13 ครั้งของฉันที่หายไปจากข้อมูลขจัดปัญหานั้น ฉันชอบข้อเสนอแนะของคุณในการดำเนินการตรวจสอบความถูกต้องไขว้ 100x 10 เท่า หากคุณมีเวลาฉันจะขอบคุณถ้าคุณสามารถให้คำแนะนำที่เป็นรูปธรรมมากขึ้นเกี่ยวกับวิธีการใช้แพ็คเกจ rms เพื่อทำสิ่งนี้ ในเวลานั้นฉันจะอ่านเว็บไซต์ของคุณต่อไป ฉันชอบที่จะเรียนหลักสูตรของคุณในอนาคต น่าเสียดายที่ฉันอยู่ในยุโรปในเวลานี้ไกลเกินไป!
อเล็กซานเด

2
plot(cox.zph(...), df=2)สำหรับปัญหาภาวะเอกฐานทำ ดูกรณีศึกษาในบันทึกหลักสูตรสำหรับrmsตัวอย่างหรือติดตั้งแพคเกจ (ซึ่งจำเป็นต้องมีHmiscแพ็คเกจ) และพิมพ์คำสั่งเหล่านี้เพื่อแสดงไฟล์ช่วยเหลือ:?cph ?validate.cph ?calibrate.cph
Frank Harrell

2
ขอบคุณอีกครั้งสำหรับความช่วยเหลือของคุณ! สุดสัปดาห์นี้ฉันพิมพ์บันทึกหลักสูตรของคุณและจะใช้เวลาสัปดาห์นี้อ่านและทำงานผ่านทุกกรณีศึกษา
Alexander

4

การส่งออกของฟังก์ชั่น R CPH บนพื้นฐานของตัวอย่างที่เกี่ยวข้องจะมีการอธิบายในที่ง่ายต่อการปฏิบัติตามนี้กระดาษโดยเจฟ็อกซ์

ฉันขอแนะนำอย่างยิ่งให้อ่านบทความนี้หากคุณยังไม่ได้ทำ


1
คุณสามารถอธิบายว่ากระดาษเสนอการตีความcphผลลัพธ์ได้อย่างไร?
smillig

2
+1 ขอบคุณสำหรับการอ้างอิงและยินดีต้อนรับสู่เว็บไซต์นี้! มันจะดีถ้าคุณสามารถให้ภาพรวมคร่าวๆของเนื้อหาของกระดาษในขณะที่เราพยายามหาคำตอบที่สามารถยืนด้วยตนเอง
งานกาลา

ลิงค์นี้ไม่มีอีกต่อไป
Marcin Kosiński

1
ลิงค์socialsciences.mcmaster.ca/jfox/Books/Companion-1E/ขณะนี้ใช้งานได้และดูเหมือนจะเป็นบทความเดียวกันที่อ้างอิงในคำตอบนี้
dnlbrky
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.