Phân tích Sinh tồn: Hướng dẫn cho Người mới bắt đầu

Xin chào, những người đam mê khoa học dữ liệu! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị vào thế giới phân tích sinh tồn bằng R. Đừng lo lắng nếu bạn chưa bao giờ viết một dòng mã trước đây - tôi sẽ là người hướng dẫn thân thiện của bạn trong suốt mỗi bước. Hãy cùng nhau bắt đầu!

R - Survival Analysis

Phân tích Sinh tồn là gì?

Trước khi chúng ta bắt đầu viết mã, hãy hiểu về phân tích sinh tồn là gì. Hãy tưởng tượng bạn là một bác sĩ nghiên cứu thời gian bệnh nhân sống sót sau một phương pháp điều trị nhất định. Hoặc có lẽ bạn là một nhà phân tích kinh doanh xem xét thời gian khách hàng duy trì trước khi hủy bỏ đăng ký. Đó chính là lúc phân tích sinh tồn phát huy tác dụng!

Phân tích sinh tồn giúp chúng ta trả lời các câu hỏi như:

  • Sự kiện sẽ xảy ra trong bao lâu?
  • Những yếu tố nào ảnh hưởng đến thời gian xảy ra sự kiện?
  • Các nhóm khác nhau so sánh như thế nào về thời gian sống sót?

Bây giờ, hãy cùng nhau làm quen với một chút mã R!

Cài đặt và Tải các Gói Cần thiết

Trước hết, chúng ta cần cài đặt và tải các gói cần thiết. Trong R, các gói giống như những hộp công cụ chứa các hàm hữu ích cho các nhiệm vụ cụ thể.

# Cài đặt gói 'survival'
install.packages("survival")

# Tải gói
library(survival)

Đừng lo lắng nếu bạn thấy một số thông báo xuất hiện khi bạn chạy các lệnh này. Chỉ cần không có thông báo lỗi màu đỏ, bạn sẽ ổn!

Tải và Khám phá Dữ liệu

Đối với hướng dẫn này, chúng ta sẽ sử dụng một bộ dữ liệu tích hợp sẵn gọi là 'lung' từ gói survival. Bộ dữ liệu này chứa thông tin về bệnh nhân bị ung thư phổi giai đoạn muộn.

# Tải bộ dữ liệu lung
data(lung)

# Xem một số hàng đầu tiên
head(lung)

# Lấy tóm tắt của bộ dữ liệu
summary(lung)

Khi bạn chạy các lệnh này, bạn sẽ thấy một phần của dữ liệu. Hãy dành một chút thời gian để làm quen với các biến số. Chúng ta sẽ làm việc với:

  • 'time': thời gian sống sót tính bằng ngày
  • 'status': trạng thái kiểm duyệt (1=kiểm duyệt, 2=đã chết)
  • 'age': tuổi của bệnh nhân
  • 'sex': giới tính của bệnh nhân (1=nam, 2=nữ)

Tạo một Đối tượng Sinh tồn

Bây giờ, hãy tạo một đối tượng sinh tồn. Đây là một đối tượng đặc biệt của R kết hợp thời gian sống sót và trạng thái sự kiện.

# Tạo một đối tượng sinh tồn
surv_object <- Surv(time = lung$time, event = lung$status == 2)

# In một số mục đầu tiên
head(surv_object)

Bạn sẽ thấy một loạt số với dấu '+' đi kèm. Dấu '+' chỉ ra các quan sát kiểm duyệt (bệnh nhân vẫn còn sống khi kết thúc nghiên cứu).

Đường Cong Sinh tồn Kaplan-Meier

Một trong những biểu đồ phổ biến nhất trong phân tích sinh tồn là đường cong Kaplan-Meier. Nó cho thấy xác suất sống sót qua thời gian.

# Thích nghi đường cong Kaplan-Meier
km_fit <- survfit(surv_object ~ 1, data = lung)

# Vẽ đường cong
plot(km_fit, main = "Đường Cong Sinh tồn Kaplan-Meier",
xlab = "Thời gian (ngày)", ylab = "Xác suất Sinh tồn")

Voilà! Bạn đã tạo ra đường cong sinh tồn đầu tiên của mình. Trục y cho thấy xác suất sống sót, và trục x cho thấy thời gian tính bằng ngày. Đường cong giảm xuống mỗi khi một sự kiện (chết) xảy ra.

So sánh Nhóm: Nam vs Nữ

Hãy so sánh đường cong sinh tồn cho nam và nữ.

# Thích nghi đường cong Kaplan-Meier theo giới tính
km_sex <- survfit(surv_object ~ sex, data = lung)

# Vẽ đường cong
plot(km_sex, col = c("blue", "red"), main = "Đường Cong Sinh tồn theo Giới tính",
xlab = "Thời gian (ngày)", ylab = "Xác suất Sinh tồn")
legend("topright", c("Nam", "Nữ"), col = c("blue", "red"), lty = 1)

Bây giờ bạn có hai đường cong: xanh lam cho nam và đỏ cho nữ. Bạn có thấy sự khác biệt nào không?

Mô hình Nguy cơ Tương đương Cox

Cuối cùng, hãy cùng nhau tạo một mô hình nguy cơ tương đương Cox. Mô hình này giúp chúng ta hiểu cách các yếu tố khác nhau ảnh hưởng đến sự sống sót.

# Thích nghi mô hình nguy cơ tương đương Cox
cox_model <- coxph(surv_object ~ age + sex, data = lung)

# In tóm tắt
summary(cox_model)

Đừng lo lắng trước kết quả! Dưới đây là những gì bạn cần tìm kiếm:

  • Cột 'coef' cho thấy hiệu ứng của mỗi biến số.
  • Cột 'exp(coef)' dễ hiểu hơn: giá trị > 1 chỉ ra nguy cơ tăng, < 1 chỉ ra nguy cơ giảm.
  • Cột 'Pr(>|z|)' cho thấy giá trị p. Các giá trị nhỏ (< 0.05) chỉ ra ý nghĩa thống kê.

Kết luận

Chúc mừng! Bạn đã hoàn thành phân tích sinh tồn đầu tiên của mình trong R. Chúng ta đã đi qua rất nhiều nội dung, từ việc tạo đối tượng sinh tồn đến việc tạo mô hình phức tạp. Nhớ rằng, thực hành là cách tốt nhất để thành thạo. Thử chơi với mã, thay đổi các biến số, và xem会发生什么.

Dưới đây là tóm tắt các hàm chính chúng ta đã sử dụng:

Hàm Mục đích
Surv() Tạo một đối tượng sinh tồn
survfit() Thích nghi một đường cong sinh tồn
plot() Vẽ đường cong
coxph() Thích nghi mô hình nguy cơ tương đương Cox

Tiếp tục khám phá, học hỏi, và quan trọng nhất, hãy vui vẻ với R và phân tích sinh tồn!

Credits: Image by storyset