วิธีการวิเคราะห์ ROC ใน R ด้วยโมเดล Cox


10

ฉันได้สร้างแบบจำลองการถดถอยของ Cox แล้วและฉันต้องการดูว่าแบบจำลองเหล่านี้ทำงานได้ดีเพียงใดและฉันคิดว่าบางที ROC-curve หรือ c-statistic อาจมีประโยชน์เหมือนกับที่บทความนี้ใช้:

JN Armitage และ JH van der Meulen,” การระบุอาการป่วยในผู้ป่วยผ่าตัดโดยใช้ข้อมูลการบริหารกับ Royal College of ศัลยแพทย์ Charlson Score”, วารสาร British Journal of Surgery, Vol. 97, NUM 5, เอสเอส 772-781, Maj 2010

Armitage ใช้การถดถอยแบบโลจิสติกส์ แต่ฉันสงสัยว่าเป็นไปได้หรือไม่ที่จะใช้แบบจำลองจากแพ็กเกจการเอาตัวรอด SurvivalROCให้คำใบ้เกี่ยวกับความเป็นไปได้นี้ แต่ฉันไม่สามารถหาวิธีที่จะทำให้มัน

ฉันจะขอบคุณถ้ามีคนจะแสดงให้ฉันเห็นวิธีการวิเคราะห์ ROC ในตัวอย่างนี้:

library(survival)
data(veteran)

attach(veteran)
surv <- Surv(time, status)
fit <- coxph(surv ~ trt + age + prior, data=veteran)
summary(fit)

ถ้าเป็นไปได้ฉันจะขอบคุณทั้งผลดิบ c-statics และกราฟที่ดี

ขอบคุณ!

ปรับปรุง

ขอบคุณมากสำหรับคำตอบ @Dwin: ฉันแค่ต้องการให้แน่ใจว่าฉันเข้าใจถูกต้องก่อนที่จะเลือกคำตอบของคุณ

การคำนวณที่ฉันเข้าใจตามคำแนะนำของ DWIN:

library(survival)
library(rms)
data(veteran)

fit.cph <- cph(surv ~ trt + age + prior, data=veteran, x=TRUE, y=TRUE, surv=TRUE)

# Summary fails!?
#summary(fit.cph)

# Get the Dxy
v <- validate(fit.cph, dxy=TRUE, B=100)
# Is this the correct value?
Dxy = v[rownames(v)=="Dxy", colnames(v)=="index.corrected"]

# The c-statistic according to the Dxy=2(c-0.5)
Dxy/2+0.5

ฉันไม่คุ้นเคยกับฟังก์ชั่นการตรวจสอบความถูกต้องและการบู๊ต แต่หลังจากดูศาสตราจารย์ คำตอบของ Frank Harrel ที่นี่ใน R-helpฉันคิดว่าอาจเป็นวิธีที่จะได้ Dxy ความช่วยเหลือสำหรับตรวจสอบสถานะ:

... ความสัมพันธ์ของ Dxy ของซอมเมอร์ที่จะคำนวณในแต่ละตัวอย่าง (ซึ่งใช้เวลานานกว่าสถิติตามความน่าจะเป็น) ค่าที่สัมพันธ์กับแถว Dxy เท่ากับ 2 * (C - 0.5) โดยที่ C คือดัชนี C หรือความน่าจะเป็นที่สอดคล้องกัน

ฉันเดาว่าฉันสับสนกับคอลัมน์เป็นส่วนใหญ่ ฉันคิดว่าค่าที่ถูกต้องคือสิ่งที่ฉันควรใช้ แต่ฉันไม่เข้าใจผลลัพธ์ที่ตรวจสอบได้จริง:

      index.orig training    test optimism index.corrected   n
Dxy      -0.0137  -0.0715 -0.0071  -0.0644          0.0507 100
R2        0.0079   0.0278  0.0037   0.0242         -0.0162 100
Slope     1.0000   1.0000  0.2939   0.7061          0.2939 100
...

ในคำถาม R-helpฉันเข้าใจว่าฉันควรจะมี "surv = TRUE" ใน cph ถ้าฉันมีชั้น แต่ฉันไม่แน่ใจว่าวัตถุประสงค์ของพารามิเตอร์ "u = 60" ในฟังก์ชันการตรวจสอบคืออะไร ฉันจะขอบคุณถ้าคุณสามารถช่วยฉันเข้าใจสิ่งเหล่านี้และตรวจสอบว่าฉันไม่ได้ทำผิดพลาดใด ๆ


2
ฉันอาจจะดูแพ็คเกจrmsและcph()คำสั่งของมัน
chl

2
index.correctedเป็นสิ่งที่ควรเน้น สิ่งเหล่านี้เป็นการประเมินประสิทธิภาพในอนาคต u=60ไม่จำเป็นvalidateเพราะคุณไม่มีชั้น หากคุณมีชั้นเส้นโค้งการอยู่รอดสามารถข้ามได้และคุณต้องระบุจุดเวลาเฉพาะสำหรับการรับพื้นที่ ROC ทั่วไป
Frank Harrell

คำตอบ:


2

@chl ได้ชี้ไปที่คำตอบเฉพาะสำหรับคำถามของคุณ cphฟังก์ชั่นแพคเกจ 'rms' จะสร้างซอเมอร์เซ็ต -D ซึ่งสามารถแปลงเป็นดัชนี c ได้เล็กน้อย อย่างไรก็ตาม Harrell (ผู้แนะนำดัชนี c ให้กับการปฏิบัติด้านชีวสถิติ) คิดว่านี่ไม่ฉลาดในฐานะกลยุทธ์ทั่วไปสำหรับการประเมินมาตรการการพยากรณ์โรคเพราะมีพลังงานต่ำสำหรับการเลือกปฏิบัติในหมู่ทางเลือก แทนที่จะใช้วรรณกรรมการผ่าตัดเพื่อเป็นแนวทางในการดำเนินการของคุณมันจะฉลาดกว่าที่จะค้นหาภูมิปัญญาที่สะสมในข้อความของ Harrell, "กลยุทธ์การสร้างแบบจำลองการถดถอย" หรือ "แบบจำลองทำนายทางคลินิก" ของ Steyerberg


4
DxY

ขอบคุณสำหรับคำตอบสถานการณ์ของฉันคือฉันมีคะแนนแตกต่างกันสามคะแนนที่ฉันต้องการเปรียบเทียบและดูว่าพวกเขาปฏิบัติอย่างไร ฉันไม่ได้มีเวลาที่จะมองเข้าไปในส่วนซอมเมอร์ - ดีและฉันจะกลับมาอีกครั้งเมื่อฉันมีเวลา (ฉันได้ดูอย่างรวดเร็วและไม่พบสิ่งที่มีประโยชน์) ฉันยังสั่งหนังสือ @FrankHarrell, "กลยุทธ์การสร้างแบบจำลองการถดถอย", ไอ 13: 978-0387952321 และหวังว่ามันจะแนะนำฉันในการเลือกของฉัน
Max Gordon

2
ตั้งแต่ Dxy = 2 * (c- 0.5) การคำนวณของ c ที่ให้ Dxy ควรไม่สำคัญ
DWIN

3

χ2


+1 เพื่อนำทางฉันในทิศทางที่ถูกต้อง ฉันเพิ่งทำ C-statistic และคะแนนละเอียดมากขึ้นที่ฉันดูมี C-statistic ที่ 0.4365081 ในขณะที่อีกคนมี 0.4414625 (ฉันเดาว่าฉันควรนับ 0.5-Dxy / 2 ในกรณีของฉัน) ฉันใช้เวลาสักครู่ทำการคำนวณกับตัวอย่างของฉัน 140,000 ฉันต้องลดขนาดบู๊ตเป็น 10 และฉันไม่แน่ใจว่าผลกระทบของมันคืออะไร ฉันรอคอยที่จะอ่านหนังสือของคุณ (อยู่ในอีเมล) และหวังว่ามันจะช่วยให้ฉันเข้าใจวิธีการได้ดีขึ้นและเปรียบเทียบสถิติ C กับดัชนีความเพียงพอ
Max Gordon

ดี. มันไม่ง่ายเลยที่จะบอกว่า. 44 กับ. 43 มีความหมายมากน้อยแค่ไหนโดยไม่ได้ดูการแจกแจงของค่าที่ทำนายไว้
Frank Harrell

ฉันเข้าใจว่ามันยากที่จะแสดงความคิดเห็นกับตัวเลขเช่นนั้น ฉันจะลองดูการกระจายตัว การตีความหลักของฉันเกี่ยวกับผลที่ได้คือแบบจำลองของฉันมีน้อยมากและแม้ว่าจะมีความแตกต่างเล็ก ๆ น้อย ๆ แต่ก็อาจจะไม่สำคัญนัก มันจะน่าสนใจว่าสิ่งที่คาดหวังในการตั้งค่าการอยู่รอด - ถึงค่าเป็น 0.8 ในขณะที่พวกเขาทำในการวิเคราะห์ที่ฉันอ้างถึงในคำถามของฉันดูเหมือนว่าอยู่ไกล ... แต่แล้วอีกครั้งการอยู่รอดของฉันคือการอยู่รอด ไม่รอดของผู้ป่วย พวกเขายังใช้การถดถอยโลจิสติกที่อาจเปลี่ยนแปลงประมาณการ
Max Gordon

การถดถอยโลจิสติกจะไม่ทำงานหากเวลาเป็นสิ่งสำคัญหรือเวลาติดตามจะแตกต่างกันไปในแต่ละวิชา กลับไปที่คำถามเดิมความเสี่ยงที่คาดการณ์จะมีการแจกแจงแบบแคบหากแบบจำลองมีการอธิบายน้อยมาก
Frank Harrell

เพิ่งได้รับหนังสือของคุณ ... ฉันได้ล็อคอย่างรวดเร็วที่ส่วนการเอาชีวิตรอด แต่เมื่อฉันลองศึกษากรณีของคุณในบทที่ 20 แต่ฉันได้รับข้อผิดพลาดในส่วน impute (w, sz): 'variable sz ไม่มี แอตทริบิวต์ names () ' ฉันตามล่า 8: โหลด dataframe ด้วย getHdata (ต่อมลูกหมาก) (ไม่พบเว็บไซต์ในหนังสือ) ทำ w <- transcan (~ sz + sg + ap + sbp + dbp + อายุ + wt + hg + ekg + pf + bm + hx, imputed = T, transformed = T, imcat = "tree", data = prostate) แต่ฉันไม่พบสิ่งใดในการตั้งชื่อ ...
Max Gordon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.