Cách thực hiện phân tích ROC trong R với mô hình Cox


10

Tôi đã tạo ra một vài mô hình hồi quy Cox và tôi muốn xem các mô hình này hoạt động tốt như thế nào và tôi nghĩ rằng có lẽ đường cong ROC hoặc thống kê c có thể hữu ích tương tự như bài viết này sử dụng:

JN Armitage och JH van der Meulen, xác định tỷ lệ mắc bệnh ở bệnh nhân phẫu thuật sử dụng dữ liệu hành chính với Đại học Phẫu thuật Hoàng gia Charlson Score, Tạp chí Phẫu thuật Anh, tập. 97, số 5, ss. 772-781, Thiếu tá 2010.

Armitage đã sử dụng hồi quy logistic nhưng tôi tự hỏi liệu có thể sử dụng mô hình từ gói sinh tồn hay không, survivalROC đưa ra gợi ý về điều này là có thể nhưng tôi không thể tìm ra cách để nó hoạt động với hồi quy Cox thông thường.

Tôi sẽ biết ơn nếu ai đó chỉ cho tôi cách thực hiện phân tích ROC trong ví dụ này:

library(survival)
data(veteran)

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

Nếu có thể tôi sẽ đánh giá cao cả đầu ra c-statics thô và một biểu đồ đẹp

Cảm ơn!

Cập nhật

Cảm ơn bạn rất nhiều vì câu trả lời. @Dwin: Tôi chỉ muốn chắc chắn rằng tôi đã hiểu nó ngay trước khi chọn câu trả lời của bạn.

Tính toán theo tôi hiểu theo gợi ý của 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

Tôi không quen với chức năng xác nhận và bootstrapping nhưng sau khi xem prof. Câu trả lời của Frank Harrel ở đây trên R-help Tôi đoán rằng có lẽ đó là cách để có được Dxy. Trợ giúp để xác nhận trạng thái:

... Mối tương quan xếp hạng Dxy của Somalia được tính toán ở mỗi mẫu lại (quá trình này mất nhiều thời gian hơn so với thống kê dựa trên khả năng). Các giá trị tương ứng với hàng Dxy bằng 2 * (C - 0,5) trong đó C là chỉ số C hoặc xác suất phù hợp.

Tôi đoán tôi chủ yếu bối rối bởi các cột. Tôi đoán rằng giá trị đã sửa là giá trị tôi nên sử dụng nhưng tôi chưa thực sự hiểu đầu ra xác thự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
...

Trong câu hỏi trợ giúp tôi đã hiểu rằng tôi nên có "Surv = TRUE" trong cph nếu tôi có tầng lớp nhưng tôi không chắc mục đích của tham số "u = 60" trong hàm xác thực là gì. Tôi sẽ biết ơn nếu bạn có thể giúp tôi hiểu những điều này và kiểm tra xem tôi đã không phạm sai lầm nào chưa.


2
Tôi có lẽ sẽ xem xét gói rmscph()lệnh của nó .
chl

2
index.correctedlà những gì cần được nhấn mạnh. Đây là những ước tính về khả năng thực hiện trong tương lai. u=60là không cần thiết validatevì bạn không có tầng lớp. Nếu bạn có địa tầng, các đường cong sinh tồn có thể giao nhau và bạn cần chỉ định một điểm thời gian cụ thể để có được khu vực ROC tổng quát.
Frank Harrell

Câu trả lời:


2

@chl đã chỉ ra một câu trả lời cụ thể cho câu hỏi của bạn. cphChức năng của gói 'rms' sẽ tạo ra một Som-D có thể chuyển đổi tầm thường thành chỉ số c. Tuy nhiên, Harrell (người đã đưa chỉ số c vào thực tiễn thống kê sinh học) cho rằng đây là một chiến lược chung để đánh giá các biện pháp tiên lượng, bởi vì nó có sức mạnh thấp để phân biệt đối xử giữa các phương án. Thay vì dựa vào tài liệu phẫu thuật cho hướng dẫn phương pháp của bạn, sẽ khôn ngoan hơn khi tìm kiếm sự khôn ngoan tích lũy trong văn bản của Gurell, "Chiến lược mô hình hồi quy" hay "Mô hình dự đoán lâm sàng" của Steyerberg.


4
Cảm ơn đã lưu ý. Tôi nghĩ rằng và không tệ khi mô tả sự phân biệt dự đoán của một mô hình được chỉ định trước. Nhưng như bạn đã nói, họ thiếu sức mạnh để làm nhiều hơn thế. DxyC
Frank Harrell

Cảm ơn câu trả lời của bạn, tình huống của tôi là tôi có ba điểm khác nhau mà tôi muốn so sánh và xem cách họ thực hiện. Tôi đã không có thời gian để xem xét phần Som-D và tôi sẽ quay lại một khi tôi đã có thời gian (tôi đã xem nhanh và không tìm thấy bất cứ điều gì hữu ích). Tôi cũng đã đặt mua cuốn sách @FrankHarrell, "Chiến lược mô hình hồi quy", ISBN 13: 978-0387952321 và hy vọng nó sẽ hướng dẫn tôi trong các lựa chọn của mình.
Tối đa

2
Vì Dxy = 2 * (c- 0,5) nên việc tính c cho Dxy nên không đáng kể.
DWin

3

Tùy thuộc vào nhu cầu của bạn, việc nhúng một mô hình bên trong một mô hình lớn hơn và thực hiện tỷ lệ khả năng "chunk" cho giá trị gia tăng của các biến bổ sung sẽ cho bạn một bài kiểm tra mạnh mẽ. Cuốn sách của tôi nói về một chỉ số phát sinh từ phương pháp này ("chỉ số đầy đủ").χ2


+1 để hướng dẫn tôi đi đúng hướng. Tôi vừa hoàn thành thống kê C và số điểm chi tiết hơn mà tôi đang xem có thống kê C là 0,4365081 trong khi số còn lại có 0,44464625 (tôi đoán rằng tôi nên đếm 0,5-Dxy / 2 trong trường hợp của mình). Tôi mất khá nhiều thời gian để thực hiện phép tính trên mẫu 140 000 của mình; Tôi đã phải hạ bootstraps xuống 10 và tôi không chắc tác động của việc đó là gì. Tôi mong được đọc cuốn sách của bạn (trong thư) và hy vọng nó sẽ giúp tôi hiểu phương pháp tốt hơn và so sánh thống kê C với chỉ số đầy đủ.
Max Gordon

Tốt Thật không dễ dàng để biết liệu .44 so với .43 có nghĩa là nhiều mà không cần nhìn vào phân phối của các giá trị dự đoán.
Frank Harrell

Tôi hiểu rằng thật khó để bình luận về những con số như vậy. Tôi sẽ cố gắng xem xét phân phối. Giải thích chính của tôi về kết quả là rất ít được giải thích bởi mô hình của tôi và mặc dù có một sự khác biệt nhỏ nhưng có lẽ nó không quan trọng lắm. Thật thú vị với những gì mong đợi trong một thiết lập sinh tồn - đạt đến giá trị .8 như họ đã làm trong phân tích mà tôi đã tham khảo trong câu hỏi của mình có vẻ khá xa ... nhưng một lần nữa sự sống sót của tôi là sự sống sót của một bộ phận giả được cấy ghép và không kiên nhẫn sống sót. Họ cũng sử dụng hồi quy logistic có lẽ thay đổi ước tính.
Max Gordon

Hồi quy logistic sẽ không hoạt động nếu thời gian là quan trọng hoặc thời gian theo dõi khác nhau giữa các đối tượng. Quay lại câu hỏi ban đầu, các rủi ro dự đoán sẽ có phân phối hẹp nếu mô hình được giải thích rất ít.
Frank Harrell

Chỉ cần có cuốn sách của bạn ... Tôi đã có một khóa nhanh chóng ở phần sinh tồn nhưng khi tôi thử Nghiên cứu điển hình của bạn ở chương 20 nhưng tôi gặp lỗi về phần không hợp lệ (w, sz): 'biến sz không có một thuộc tính name () '. Tôi theo đuổi. 8: đã tải khung dữ liệu với getHdata (tuyến tiền liệt) (không thể tìm thấy trang web trong sách), đã thực hiện w <- transcan (~ sz + sg + ap + sbp + dbp + age + wt + hg + ekg + pf + bm + hx, imputed = T, Transform = T, imcat = "cây", dữ liệu = tuyến tiền liệt) nhưng tôi không tìm thấy bất cứ điều gì về cách đặt tên ...
Max Gordon
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.