R - Phân tích sinh tồn

Phân tích sự sống còn liên quan đến việc dự đoán thời gian khi một sự kiện cụ thể sẽ xảy ra. Nó còn được gọi là phân tích thời gian thất bại hoặc phân tích thời gian chết. Ví dụ dự đoán số ngày một người mắc bệnh ung thư sẽ sống sót hoặc dự đoán thời gian khi một hệ thống máy móc sắp hỏng hóc.

Gói R có tên survivalđược sử dụng để thực hiện phân tích tỷ lệ sống sót. Gói này chứa hàmSurv()lấy dữ liệu đầu vào làm công thức R và tạo đối tượng tồn tại trong số các biến được chọn để phân tích. Sau đó, chúng tôi sử dụng hàmsurvfit() để tạo ra một cốt truyện cho phân tích.

Cài đặt gói

install.packages("survival")

Cú pháp

Cú pháp cơ bản để tạo phân tích tỷ lệ sống sót trong R là:

Surv(time,event)
survfit(formula)

Sau đây là mô tả về các tham số được sử dụng:

  • time là thời gian theo dõi cho đến khi sự kiện xảy ra.

  • event cho biết trạng thái xuất hiện của sự kiện dự kiến.

  • formula là mối quan hệ giữa các biến dự báo.

Thí dụ

Chúng tôi sẽ xem xét tập dữ liệu có tên "pbc" có trong các gói tồn tại được cài đặt ở trên. Nó mô tả các điểm dữ liệu sống sót về những người bị ảnh hưởng bởi bệnh xơ gan mật nguyên phát (PBC) của gan. Trong số nhiều cột có trong tập dữ liệu, chúng tôi chủ yếu quan tâm đến các trường "thời gian" và "trạng thái". Thời gian thể hiện số ngày từ khi bệnh nhân đăng ký đến trước khi diễn ra sự kiện giữa bệnh nhân được ghép gan hoặc bệnh nhân tử vong.

# Load the library.
library("survival")

# Print first few rows.
print(head(pbc))

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả và biểu đồ sau:

id time status trt      age sex ascites hepato spiders edema bili chol
1  1  400      2   1 58.76523   f       1      1       1   1.0 14.5  261
2  2 4500      0   1 56.44627   f       0      1       1   0.0  1.1  302
3  3 1012      2   1 70.07255   m       0      0       0   0.5  1.4  176
4  4 1925      2   1 54.74059   f       0      1       1   0.5  1.8  244
5  5 1504      1   2 38.10541   f       0      1       1   0.0  3.4  279
6  6 2503      2   2 66.25873   f       0      1       0   0.0  0.8  248
  albumin copper alk.phos    ast trig platelet protime stage
1    2.60    156   1718.0 137.95  172      190    12.2     4
2    4.14     54   7394.8 113.52   88      221    10.6     3
3    3.48    210    516.0  96.10   55      151    12.0     4
4    2.54     64   6121.8  60.63   92      183    10.3     4
5    3.53    143    671.0 113.15   72      136    10.9     3
6    3.98     50    944.0  93.00   63       NA    11.0     3

Từ dữ liệu trên, chúng tôi đang xem xét thời gian và trạng thái để phân tích.

Áp dụng hàm Surv () và survfit ()

Bây giờ chúng tôi tiến hành áp dụng Surv() chức năng của tập dữ liệu trên và tạo một biểu đồ sẽ hiển thị xu hướng.

# Load the library.
library("survival")

# Create the survival object. 
survfit(Surv(pbc$time,pbc$status == 2)~1)

# Give the chart file a name.
png(file = "survival.png")

# Plot the graph. 
plot(survfit(Surv(pbc$time,pbc$status == 2)~1))

# Save the file.
dev.off()

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả và biểu đồ sau:

Call: survfit(formula = Surv(pbc$time, pbc$status == 2) ~ 1)

      n  events  median 0.95LCL 0.95UCL 
    418     161    3395    3090    3853

Xu hướng trong biểu đồ trên giúp chúng ta dự đoán xác suất sống sót vào cuối một số ngày nhất định.