Tôi chưa thể truy cập vào bài báo của Simon và Makuch đã đề cập ở trên, nhưng khi nghiên cứu về chủ đề tôi tìm thấy:
Steven M Snapinn, Qi Jiang & Boris Iglewicz (2005) Minh họa tác động của hiệp phương sai thời gian với Công cụ ước tính Kaplan-Meier mở rộng , Thống kê người Mỹ , 59: 4, 301-307.
Bài báo đó đề xuất một âm mưu Kaplan-Meier (KM) phụ thuộc vào thời gian bằng cách cập nhật các đoàn hệ tại mọi thời điểm sự kiện. Nó cũng trích dẫn bài báo của Simon và Makuch vì đã đề xuất một ý tưởng tương tự. KM thông thường không cho phép điều này, nó chỉ cho phép phân chia cố định thành các nhóm. Phương pháp được đề xuất thực sự phân chia thời gian tồn tại theo trạng thái đồng biến - giống như người ta có thể làm khi ước tính mô hình Cox với các hiệp phương sai liên tục. Đối với mô hình Cox, đây là một ý tưởng khả thi và là một ý tưởng tiêu chuẩn. Tuy nhiên, nó phức tạp hơn khi thực hiện một âm mưu KM. Hãy để tôi minh họa nó với một ví dụ mô phỏng.
Giả sử rằng chúng tôi không kiểm duyệt, nhưng một số sự kiện (ví dụ: sinh con) có thể xảy ra hoặc không xảy ra trước thời điểm chết. Chúng ta cũng giả sử các mối nguy hiểm liên tục vì đơn giản. Chúng tôi cũng sẽ cho rằng sinh con không làm thay đổi nguy cơ tử vong. Bây giờ chúng tôi sẽ làm theo các thủ tục quy định trong bài viết trên. Bài viết nêu rõ cách thức này được thực hiện trong R, chỉ cần phân chia các đối tượng của bạn theo thời gian sinh sao cho chúng không đổi trong biến nhóm của bạn. Sau đó sử dụng công thức quá trình đếm trong Surv
hàm. Trong mã
library(survival)
library(ggplot2)
n <- 10000
data <- data.frame(id = seq(n),
preg = rexp(n, 1),
death = rexp(n, .5),
enter = 0,
per = NA,
event = 1)
data$exit <- data$death
data0 <- data
data0$exit <- with(data, pmin(preg, death))
data0$per <- 0
data0$event[with(data0, preg < death)] <- 0
data1 <- subset(data, preg < death)
data1$enter <- data1$preg
data1$per <- 1
data <- rbind(data0, data1)
data <- data[order(data$id), ]
Sfit <- survfit(Surv(time = enter, time2 = exit, event = event) ~ per, data = data)
autoplot(Sfit, censSize = 0)$plot
Tôi ít nhiều chia tách nó "bằng tay". Chúng tôi có thể sử dụng survSplit
là tốt. Các thủ tục thực sự cho tôi một ước tính rất tốt đẹp.
Chúng tôi nhận được ước tính gần như giống hệt nhau cho hai nhóm như chúng ta nên làm. Nhưng thật ra, mô phỏng của tôi có lẽ hơi phi thực tế. Giả sử một người phụ nữ không thể sinh con trong hai đơn vị thời gian đầu tiên vì một số lý do. Điều này ít nhất là hợp lý trong ví dụ của bạn: sẽ có một khoảng thời gian giữa hai lần mang thai tương ứng với cùng một người phụ nữ. Thực hiện một bổ sung nhỏ vào mã
data <- data.frame(id = seq(n),
preg = rexp(n, 1) + 2,
death = rexp(n, .5),
enter = 0,
preg = NA,
event = 1)
chúng ta có được cốt truyện sau:
Điều tương tự sẽ xảy ra với dữ liệu của bạn. Bạn sẽ không thấy bất kỳ lần mang thai thứ 3 nào trong ít nhất một khoảng thời gian ban đầu, nghĩa là ước tính của bạn sẽ là 1 cho nhóm đó và khoảng thời gian đó. Đây là ý kiến của tôi về việc trình bày sai dữ liệu của bạn. Hãy xem xét mô phỏng của tôi. Các mối nguy hiểm là giống hệt nhau, nhưng cứ sau mỗi thời điểm per1
ước tính lại lớn hơn per0
ước tính.
Bạn có thể xem xét các biện pháp khác nhau cho vấn đề này. Bạn đề nghị dán chúng cùng nhau tại một số điểm (hãy để per1
-curve bắt đầu từ một điểm nhất định trên per0
-curve). Tôi thích ý tưởng này. Nếu tôi làm điều đó trên dữ liệu mô phỏng, chúng tôi sẽ nhận được:
Trong trường hợp cụ thể của chúng tôi, tôi nghĩ rằng điều này thể hiện cách dữ liệu tốt hơn, nhưng tôi không biết bất kỳ kết quả được công bố nào hỗ trợ phương pháp này. Theo kinh nghiệm, người ta có thể sử dụng lập luận mà tôi đã trình bày trong một câu trả lời khác:
Biểu đồ KM với hệ số thay đổi theo thời gian