ฉันได้สร้างแบบจำลองการถดถอยของ Cox แล้วและฉันต้องการดูว่าแบบจำลองเหล่านี้ทำงานได้ดีเพียงใดและฉันคิดว่าบางที ROC-curve หรือ c-statistic อาจมีประโยชน์เหมือนกับที่บทความนี้ใช้:
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" ในฟังก์ชันการตรวจสอบคืออะไร ฉันจะขอบคุณถ้าคุณสามารถช่วยฉันเข้าใจสิ่งเหล่านี้และตรวจสอบว่าฉันไม่ได้ทำผิดพลาดใด ๆ
index.corrected
เป็นสิ่งที่ควรเน้น สิ่งเหล่านี้เป็นการประเมินประสิทธิภาพในอนาคต u=60
ไม่จำเป็นvalidate
เพราะคุณไม่มีชั้น หากคุณมีชั้นเส้นโค้งการอยู่รอดสามารถข้ามได้และคุณต้องระบุจุดเวลาเฉพาะสำหรับการรับพื้นที่ ROC ทั่วไป
cph()
คำสั่งของมัน