Giải thích và xác nhận mô hình hồi quy mối nguy theo tỷ lệ Cox bằng R bằng tiếng Anh


13

Ai đó có thể giải thích mô hình Cox của tôi cho tôi bằng tiếng Anh không?

Tôi đã trang bị mô hình hồi quy Cox sau cho tất cả dữ liệu của mình bằng cphhàm này. Dữ liệu của tôi được lưu trong một đối tượng được gọi là Data. Các biến w, xylà liên tục; zlà một yếu tố của hai cấp độ. Thời gian được tính bằng tháng. Một số bệnh nhân của tôi đang thiếu dữ liệu cho biến z( NB : Tôi đã lưu ý đúng về đề xuất của Tiến sĩ Mitchell, bên dưới, rằng tôi áp đặt các giá trị này để tránh sai lệch mô hình của tôi và sẽ làm như vậy trong tương lai).

> 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

Tôi cũng đã thử kiểm tra giả định về các mối nguy theo tỷ lệ bằng cách sử dụng cox.zphlệnh bên dưới, nhưng không biết làm thế nào để diễn giải kết quả của nó. Đặt plot()xung quanh lệnh sẽ đưa ra một thông báo lỗi.

 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

Vấn đề đầu tiên

  • Ai đó có thể giải thích kết quả của đầu ra trên cho tôi bằng tiếng Anh không? Tôi có một nền tảng y tế và không được đào tạo chính thức về thống kê.

Vấn đề thứ hai

  • Theo đề xuất của Tiến sĩ Harrell, tôi muốn xác thực nội bộ mô hình của mình bằng cách thực hiện 100 lần lặp xác thực chéo 10 lần bằng cách sử dụng rmsgói (theo những gì tôi hiểu, điều này sẽ đòi hỏi phải xây dựng 100 * 10 = 1000các mô hình khác nhau và sau đó yêu cầu họ dự đoán thời gian tồn tại của những bệnh nhân mà họ chưa từng thấy).

    Tôi đã thử sử dụng validatechức năng, như được hiển thị.

    > 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

    Làm thế nào để bạn thực hiện thay đổi kích thước 100x? Tôi nghĩ rằng mã trên của tôi chỉ thực hiện xác nhận chéo một lần.

  • Sau đó tôi muốn biết mô hình của tôi tốt như thế nào trong dự đoán. Tôi đã thử như sau:

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

    Điều này có nghĩa là mô hình của tôi chỉ tốt hơn một chút so với lật một đồng xu?

Vấn đề thứ ba

Tiến sĩ Harrell chỉ ra rằng tôi đã giả định tính tuyến tính cho các hiệu ứng đồng biến và số lượng sự kiện trong mẫu của tôi chỉ đủ lớn để phù hợp với một mô hình đáng tin cậy nếu tất cả các hiệu ứng đồng biến xảy ra là tuyến tính.

  • Điều này có nghĩa là tôi nên bao gồm một số loại thuật ngữ tương tác trong mô hình của mình? Nếu vậy, lời khuyên nào để đặt?

2
Tôi đã thực hiện một số chỉnh sửa chính cho câu hỏi ban đầu của mình, ở trên, khoảng ba giờ sau khi tôi hỏi nó ban đầu. Tôi đã cố gắng làm theo lời khuyên rất hữu ích của Tiến sĩ. Tôi vẫn sẽ thực sự đánh giá cao nếu ai đó cố gắng giải thích cphđầu ra ở trên cho tôi bằng tiếng Anh đơn giản, hoặc chỉ cho tôi một tài liệu tham khảo sẽ làm như vậy. Tiến sĩ Harrell, cảm ơn rất nhiều vì sự giúp đỡ của bạn cho đến nay!
Alexander

Câu trả lời:


12

Để bắt đầu, hãy xem xét một vài điều. Đầu tiên, bạn đang loại trừ quá nhiều quan sát với dữ liệu bị thiếu và điều này sẽ gây ra sai lệch. Xem xét nhiều lần cắt cụt. Thứ hai, có một phương pháp cốt truyện chocox.zphrất hữu ích trong việc đánh giá các mối nguy theo tỷ lệ. Thứ ba, bạn đã giả định tuyến tính cho các hiệu ứng hiệp biến. Thứ tư, số lượng sự kiện trong mẫu đào tạo của bạn chỉ đủ lớn để phù hợp với một mô hình đáng tin cậy nếu tất cả các hiệu ứng đồng biến xảy ra là tuyến tính (rất hiếm). Và mẫu thử nghiệm của bạn sẽ phải có 400 sự kiện trước khi đưa ra đánh giá đáng tin cậy về độ chính xác dự đoán. Không rõ ràng rằng bạn có đủ dữ liệu để chia dữ liệu thành hai phần. Xác thực lại xác nhận (100 lần lặp lại xác thực chéo 10 lần hoặc sử dụng bootstrap) là một giải pháp tốt hơn. Cả hai ban đầu xác nhận bên ngoài của bạn (chức năng rcorr.censval.surv) và resampling xác nhận nội (chức năng validate, calibrate) đều được thực hiện trong R rmsgói. Nghiên cứu trường hợp chorms2×2


1
Tiến sĩ Harrell, cảm ơn rất nhiều ý kiến ​​của bạn. Tôi đã thử gõ plot(cox.zph(fit[[1]], transform="km", global=TRUE)), tuy nhiên, điều này mang lại Error in plot.cox.zph(cox.zph(fit[[1]], transform = "km", global = TRUE)) : Spline fit is singular, try a smaller degrees of freedom. Tôi gọi chức năng này không chính xác?
Alexander

1
Nếu tôi kết hợp dữ liệu đào tạo và xác nhận của mình, tôi có 166 quan sát với 75 sự kiện. Như bạn đề xuất, tôi có thể áp đặt các giá trị của biến "z" cho 13 quan sát của tôi đang thiếu dữ liệu đó, loại bỏ vấn đề đó. Tôi thích đề xuất của bạn về việc thực hiện xác nhận chéo 100 lần 10 lần. Nếu bạn có thời gian, tôi thực sự sẽ đánh giá cao nếu bạn có thể cung cấp thêm một gợi ý cụ thể về cách sử dụng các gói rms để làm điều này. Trong lúc này, tôi sẽ tiếp tục đọc qua trang web của bạn. Tôi rất thích tham gia khóa học của bạn trong tương lai. Thật không may, tôi đang ở châu Âu vào lúc này, hơi quá xa!
Alexander

2
Đối với các vấn đề đơn lẻ, làm plot(cox.zph(...), df=2). Xem các nghiên cứu trường hợp trong ghi chú khóa học để biết rmsví dụ hoặc cài đặt gói (cũng cần Hmiscgói) và nhập các lệnh này để hiển thị các tệp trợ giúp:?cph ?validate.cph ?calibrate.cph
Frank Harrell

2
Cảm ơn một lần nữa vì sự giúp đỡ của bạn! Cuối tuần này tôi đã in ra các ghi chú khóa học của bạn và sẽ dành tuần này để đọc chúng và làm việc thông qua tất cả các nghiên cứu trường hợp.
Alexander

4

Đầu ra của hàm R cph, dựa trên một ví dụ có liên quan, được giải thích trong bài báo dễ làm này của J. Fox.

Tôi thực sự khuyên bạn nên đọc bài viết này nếu bạn chưa có.


1
Bạn có thể mô tả làm thế nào bài báo đề nghị giải thích cphđầu ra?
smillig

2
+1 Cảm ơn bạn đã tham khảo và chào mừng đến với trang web này! Sẽ thật tuyệt nếu bạn cũng có thể đưa ra một cái nhìn tổng quan ngắn gọn về nội dung của bài báo khi chúng tôi cố gắng tìm ra câu trả lời có thể tự đứng vững.
Gala

Liên kết này không còn nữa
Marcin Kosiński

1
Liên kết xã hội khoa học.mcmaster.ca / jfox / Sách / Đồng hành-EE / hiện đang làm việc và có vẻ là cùng một bài viết được tham chiếu trong câu trả lời này.
dnlbrky 26/03/19
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.