Phân tích sự sống sót tương ứng với tập hợp các phương pháp thống kê được sử dụng để điều tra thời gian xảy ra một sự kiện quan tâm.
Phân tích sự sống sót được sử dụng trong nhiều lĩnh vực như:
Trong các bài toán về rủi ro ngân hàng, các câu hỏi nghiên cứu điển hình như:
Mục đích của chương này là mô tả các khái niệm cơ bản của phân tích sự sống còn. Trong các nghiên cứu ung thư, hầu hết các phân tích tỷ lệ sống sót sử dụng các phương pháp sau:
Ở đây, chúng ta sẽ bắt đầu bằng cách giải thích các khái niệm cơ bản về phân tích sự sống còn, bao gồm:
Sau đó, chúng ta sẽ tiếp tục bằng cách mô tả phân tích đa biến sử dụng mô hình nguy cơ tỷ lệ Cox .
Ở đây, chúng ta bắt đầu bằng cách xác định các thuật ngữ cơ bản của phân tích sự sống còn bao gồm:
Có nhiều loại sự kiện khác nhau, bao gồm:
Hai thước đo quan trọng nhất trong nghiên cứu ung thư bao gồm: i) thời gian chết ; và ii) thời gian sống sót không tái phát, tương ứng với thời gian từ khi đáp ứng điều trị đến khi bệnh tái phát. Nó còn được gọi là thời gian sống sót không bệnh tật và thời gian sống sót không biến cố.
Như đã đề cập ở trên, phân tích khả năng sống sót tập trung vào khoảng thời gian dự kiến cho đến khi xảy ra một sự kiện quan tâm (tái phát hoặc tử vong). Tuy nhiên, sự kiện có thể không xảy ra đối với một số cá nhân trong khoảng thời gian nghiên cứu, gọi là quan sát được kiểm chứng.
Nhóm kiểm chứng có thể phát sinh theo những cách sau:
Loại kiểm chứng này, được đặt tên là right censoring, được xử lý trong phân tích Sống sót.
Hai xác suất liên quan được sử dụng để mô tả dữ liệu sống sót: xác suất sống sót và xác suất nguy cơ.
Xác suất sống sót, còn được gọi là hàm sống sót, là xác suất mà một cá nhân sống sót từ thời gian gốc (ví dụ chẩn đoán ung thư) đến một thời điểm cụ thể trong tương lai.S(t)
Nguy cơ, được ký hiệu là h(t), là xác suất mà một cá nhân đang được quan sát tại thời điểm t xảy ra sự kiện trong thời gian quan sát.
Phương pháp Kaplan-Meier (KM) là một phương pháp phi tham số được sử dụng để ước tính xác suất sống sót từ các thời gian sống sót đã được quan sát (Kaplan và Meier, 1958).
Xác suất sống sót tại thời điểm \(t_i\), \(S(t_i)\), được tính như sau:
\[S(t_i) = S(t_{i-1})(1-\frac{d_i}{n_i})\]
Trong đó:
Xác suất ước tính (\(S(t)\)) là một step function chỉ thay đổi giá trị tại thời điểm của mỗi sự kiện. Cũng có thể tính toán khoảng tin cậy cho xác suất sống sót.
Đường cong tỷ lệ sống sót của KM, một biểu đồ về xác suất sống sót của KM theo thời gian, cung cấp một bản tóm tắt hữu ích về dữ liệu có thể được sử dụng để ước tính các biện pháp như thời gian sống sót trung bình.
library("survival")
library("survminer")
## Loading required package: ggplot2
## Loading required package: ggpubr
##
## Attaching package: 'survminer'
## The following object is masked from 'package:survival':
##
## myeloma
Chúng tôi sẽ sử dụng dữ liệu ung thư phổi có sẵn trong gói survival.
head(lung)
## inst time status age sex ph.ecog ph.karno pat.karno meal.cal wt.loss
## 1 3 306 2 74 1 1 90 100 1175 NA
## 2 3 455 2 68 1 0 90 90 1225 15
## 3 3 1010 1 56 1 0 90 90 NA 15
## 4 5 210 2 57 1 1 90 60 1150 11
## 5 1 883 2 60 1 0 100 90 NA 0
## 6 12 1022 1 74 1 1 50 80 513 0
Hàm survfit() (trong gói survival) có thể được sử dụng để tính toán ước lượng sống sót theo Kaplan-Meier. Các đối số chính của nó bao gồm:
Để tính toán các đường cong survival, hãy nhập cái này:
fit <- survfit(Surv(time, status) ~ sex, data = lung)
print(fit)
## Call: survfit(formula = Surv(time, status) ~ sex, data = lung)
##
## n events median 0.95LCL 0.95UCL
## sex=1 138 112 270 212 310
## sex=2 90 53 426 348 550
Nếu bạn muốn hiển thị bản tóm tắt đầy đủ hơn về các đường cong sinh tồn, hãy nhập vào:
# Summary of survival curves
summary(fit)
# Access to the sort summary table
summary(fit)$table
Hàm survfit() trả về danh sách các biến, bao gồm các thành phần sau:
Các thành phần có thể được truy cập như sau:
d <- data.frame(time = fit$time,
n.risk = fit$n.risk,
n.event = fit$n.event,
n.censor = fit$n.censor,
surv = fit$surv,
upper = fit$upper,
lower = fit$lower
)
head(d)
## time n.risk n.event n.censor surv upper lower
## 1 11 138 3 0 0.9782609 1.0000000 0.9542301
## 2 12 135 1 0 0.9710145 0.9994124 0.9434235
## 3 13 134 2 0 0.9565217 0.9911586 0.9230952
## 4 15 132 1 0 0.9492754 0.9866017 0.9133612
## 5 26 131 1 0 0.9420290 0.9818365 0.9038355
## 6 30 130 1 0 0.9347826 0.9768989 0.8944820
Chúng ta sẽ sử dụng hàm ggsurvplot() (trong gói Survminer) để tạo ra các đường cong sinh tồn cho hai nhóm đối tượng.
Nó cũng có thể hiển thị:
giới hạn tin cậy 95% của hàm Survivor bằng cách sử dụng đối số conf.int = TRUE .
số lượng và/hoặc tỷ lệ cá nhân gặp rủi ro theo thời gian sử dụng lựa chọn risk.table. Các giá trị được phép cho rủi ro. Bảng bao gồm:
p-value của Log-Rank test so sánh các nhóm bằng cách sử dụng pval = TRUE .
đường ngang / dọc ở mức tồn tại trung bình bằng cách sử dụng đối số surv.median.line. Các giá trị được phép bao gồm một trong c (“none”, “hv”, “h”, “v”). v: dọc, h: ngang.
# Change color, linetype by strata, risk.table color by strata
ggsurvplot(fit,
pval = TRUE, conf.int = TRUE,
risk.table = TRUE, # Add risk table
risk.table.col = "strata", # Change risk table color by groups
linetype = "strata", # Change line type by groups
surv.median.line = "hv", # Specify median survival
ggtheme = theme_bw(), # Change ggplot2 theme
palette = c("#E7B800", "#2E9FDF"))
Biểu đồ có thể được tùy chỉnh thêm bằng cách sử dụng các đối số sau:
ggsurvplot(
fit, # survfit object with calculated statistics.
pval = TRUE, # show p-value of log-rank test.
conf.int = TRUE, # show confidence intervals for
# point estimaes of survival curves.
conf.int.style = "step", # customize style of confidence intervals
xlab = "Time in days", # customize X axis label.
break.time.by = 200, # break X axis in time intervals by 200.
ggtheme = theme_light(), # customize plot and risk table with a theme.
risk.table = "abs_pct", # absolute number and percentage at risk.
risk.table.y.text.col = T,# colour risk table text annotations.
risk.table.y.text = FALSE,# show bars instead of names in text annotations
# in legend of risk table.
ncensor.plot = TRUE, # plot the number of censored subjects at time t
surv.median.line = "hv", # add the median survival pointer.
legend.labs =
c("Male", "Female"), # change legend labels.
palette =
c("#E7B800", "#2E9FDF") # custom color palettes.
)
Biểu đồ Kaplan-Meier có thể được hiểu như sau:
Trục hoành (trục x) biểu thị thời gian tính bằng ngày và trục tung (trục y) thể hiện xác suất sống sót hoặc tỷ lệ người sống sót. Các đường biểu diễn đường cong sinh tồn của hai nhóm. Sự sụt giảm thẳng đứng trong các đường cong biểu thị một sự kiện. Dấu tick dọc trên các đường cong có nghĩa là bệnh nhân đã được kiểm duyệt vào thời điểm này.
Thời gian sống sót trung bình cho mỗi nhóm có thể được lấy bằng cách sử dụng mã dưới đây:
summary(fit)$table
## records n.max n.start events rmean se(rmean) median 0.95LCL 0.95UCL
## sex=1 138 138 138 112 326.0841 22.91156 270 212 310
## sex=2 90 90 90 53 460.6473 34.68985 426 348 550
Thời gian sống sót trung bình cho giới tính = 1 (Nhóm nam) là 270 ngày, trái ngược với 426 ngày cho giới tính = 2 (Nữ). Có vẻ như có một lợi thế sống sót cho phụ nữ bị ung thư phổi so với nam giới. Tuy nhiên, để đánh giá liệu sự khác biệt này có ý nghĩa về mặt thống kê hay không đòi hỏi một bài kiểm tra thống kê chính thức, một chủ đề sẽ được thảo luận trong các phần tiếp theo.
Lưu ý rằng, các giới hạn tin cậy rất rộng ở phần đuôi của các đường cong, khiến cho việc diễn giải có ý nghĩa trở nên khó khăn. Điều này có thể được giải thích là do trong thực tế, thường có những bệnh nhân mất khả năng theo dõi hoặc còn sống khi kết thúc theo dõi. Do đó, có thể hợp lý để rút ngắn biểu đồ trước khi kết thúc quá trình theo dõi trên trục x (Pocock và cộng sự, 2002).
Các đường cong sự tồn tại có thể được rút ngắn bằng cách sử dụng đối số xlim như sau:
ggsurvplot(fit,
conf.int = TRUE,
risk.table.col = "strata", # Change risk table color by groups
ggtheme = theme_bw(), # Change ggplot2 theme
palette = c("#E7B800", "#2E9FDF"),
xlim = c(0, 600))
Lưu ý rằng, ba phép biến đổi thường được sử dụng có thể được chỉ định bằng cách sử dụng đối số fun : “Log”: log transformation của hàm sống sót, “event”: biểu đồ các sự kiện tích lũy (f (y) = 1-y). Nó còn được gọi là tỷ lệ tích lũy, “Cumhaz”: vẽ biểu đồ của hàm nguy cơ tích lũy (f (y) = -log (y))
Ví dụ: để vẽ các sự kiện tích lũy
ggsurvplot(fit,
conf.int = TRUE,
risk.table.col = "strata", # Change risk table color by groups
ggtheme = theme_bw(), # Change ggplot2 theme
palette = c("#E7B800", "#2E9FDF"),
fun = "event")
Nguy cơ tích lũy thường được sử dụng để ước tính xác suất nguy hiểm. Nó được định nghĩa là \(H(t) = -log(survival function) = -log(S(t))\). Nguy cơ tích lũy H(t) có thể được hiểu là tử vong tích lũy. Nói cách khác, nó tương ứng với số lượng sự kiện sẽ được mong đợi đối với mỗi cá nhân tại thời điểm t nếu sự kiện đó là một quá trình lặp lại.
Để vẽ biểu đồ nguy cơ tích lũy
ggsurvplot(fit,
conf.int = TRUE,
risk.table.col = "strata", # Change risk table color by groups
ggtheme = theme_bw(), # Change ggplot2 theme
palette = c("#E7B800", "#2E9FDF"),
fun = "cumhaz")
Như đã đề cập ở trên, bạn có thể sử dụng hàm summary() để có một bản tóm tắt hoàn chỉnh về các đường cong tồn tại:
summary(fit)
## Call: survfit(formula = Surv(time, status) ~ sex, data = lung)
##
## sex=1
## time n.risk n.event survival std.err lower 95% CI upper 95% CI
## 11 138 3 0.9783 0.0124 0.9542 1.000
## 12 135 1 0.9710 0.0143 0.9434 0.999
## 13 134 2 0.9565 0.0174 0.9231 0.991
## 15 132 1 0.9493 0.0187 0.9134 0.987
## 26 131 1 0.9420 0.0199 0.9038 0.982
## 30 130 1 0.9348 0.0210 0.8945 0.977
## 31 129 1 0.9275 0.0221 0.8853 0.972
## 53 128 2 0.9130 0.0240 0.8672 0.961
## 54 126 1 0.9058 0.0249 0.8583 0.956
## 59 125 1 0.8986 0.0257 0.8496 0.950
## 60 124 1 0.8913 0.0265 0.8409 0.945
## 65 123 2 0.8768 0.0280 0.8237 0.933
## 71 121 1 0.8696 0.0287 0.8152 0.928
## 81 120 1 0.8623 0.0293 0.8067 0.922
## 88 119 2 0.8478 0.0306 0.7900 0.910
## 92 117 1 0.8406 0.0312 0.7817 0.904
## 93 116 1 0.8333 0.0317 0.7734 0.898
## 95 115 1 0.8261 0.0323 0.7652 0.892
## 105 114 1 0.8188 0.0328 0.7570 0.886
## 107 113 1 0.8116 0.0333 0.7489 0.880
## 110 112 1 0.8043 0.0338 0.7408 0.873
## 116 111 1 0.7971 0.0342 0.7328 0.867
## 118 110 1 0.7899 0.0347 0.7247 0.861
## 131 109 1 0.7826 0.0351 0.7167 0.855
## 132 108 2 0.7681 0.0359 0.7008 0.842
## 135 106 1 0.7609 0.0363 0.6929 0.835
## 142 105 1 0.7536 0.0367 0.6851 0.829
## 144 104 1 0.7464 0.0370 0.6772 0.823
## 147 103 1 0.7391 0.0374 0.6694 0.816
## 156 102 2 0.7246 0.0380 0.6538 0.803
## 163 100 3 0.7029 0.0389 0.6306 0.783
## 166 97 1 0.6957 0.0392 0.6230 0.777
## 170 96 1 0.6884 0.0394 0.6153 0.770
## 175 94 1 0.6811 0.0397 0.6076 0.763
## 176 93 1 0.6738 0.0399 0.5999 0.757
## 177 92 1 0.6664 0.0402 0.5922 0.750
## 179 91 2 0.6518 0.0406 0.5769 0.736
## 180 89 1 0.6445 0.0408 0.5693 0.730
## 181 88 2 0.6298 0.0412 0.5541 0.716
## 183 86 1 0.6225 0.0413 0.5466 0.709
## 189 83 1 0.6150 0.0415 0.5388 0.702
## 197 80 1 0.6073 0.0417 0.5309 0.695
## 202 78 1 0.5995 0.0419 0.5228 0.687
## 207 77 1 0.5917 0.0420 0.5148 0.680
## 210 76 1 0.5839 0.0422 0.5068 0.673
## 212 75 1 0.5762 0.0424 0.4988 0.665
## 218 74 1 0.5684 0.0425 0.4909 0.658
## 222 72 1 0.5605 0.0426 0.4829 0.651
## 223 70 1 0.5525 0.0428 0.4747 0.643
## 229 67 1 0.5442 0.0429 0.4663 0.635
## 230 66 1 0.5360 0.0431 0.4579 0.627
## 239 64 1 0.5276 0.0432 0.4494 0.619
## 246 63 1 0.5192 0.0433 0.4409 0.611
## 267 61 1 0.5107 0.0434 0.4323 0.603
## 269 60 1 0.5022 0.0435 0.4238 0.595
## 270 59 1 0.4937 0.0436 0.4152 0.587
## 283 57 1 0.4850 0.0437 0.4065 0.579
## 284 56 1 0.4764 0.0438 0.3979 0.570
## 285 54 1 0.4676 0.0438 0.3891 0.562
## 286 53 1 0.4587 0.0439 0.3803 0.553
## 288 52 1 0.4499 0.0439 0.3716 0.545
## 291 51 1 0.4411 0.0439 0.3629 0.536
## 301 48 1 0.4319 0.0440 0.3538 0.527
## 303 46 1 0.4225 0.0440 0.3445 0.518
## 306 44 1 0.4129 0.0440 0.3350 0.509
## 310 43 1 0.4033 0.0441 0.3256 0.500
## 320 42 1 0.3937 0.0440 0.3162 0.490
## 329 41 1 0.3841 0.0440 0.3069 0.481
## 337 40 1 0.3745 0.0439 0.2976 0.471
## 353 39 2 0.3553 0.0437 0.2791 0.452
## 363 37 1 0.3457 0.0436 0.2700 0.443
## 364 36 1 0.3361 0.0434 0.2609 0.433
## 371 35 1 0.3265 0.0432 0.2519 0.423
## 387 34 1 0.3169 0.0430 0.2429 0.413
## 390 33 1 0.3073 0.0428 0.2339 0.404
## 394 32 1 0.2977 0.0425 0.2250 0.394
## 428 29 1 0.2874 0.0423 0.2155 0.383
## 429 28 1 0.2771 0.0420 0.2060 0.373
## 442 27 1 0.2669 0.0417 0.1965 0.362
## 455 25 1 0.2562 0.0413 0.1868 0.351
## 457 24 1 0.2455 0.0410 0.1770 0.341
## 460 22 1 0.2344 0.0406 0.1669 0.329
## 477 21 1 0.2232 0.0402 0.1569 0.318
## 519 20 1 0.2121 0.0397 0.1469 0.306
## 524 19 1 0.2009 0.0391 0.1371 0.294
## 533 18 1 0.1897 0.0385 0.1275 0.282
## 558 17 1 0.1786 0.0378 0.1179 0.270
## 567 16 1 0.1674 0.0371 0.1085 0.258
## 574 15 1 0.1562 0.0362 0.0992 0.246
## 583 14 1 0.1451 0.0353 0.0900 0.234
## 613 13 1 0.1339 0.0343 0.0810 0.221
## 624 12 1 0.1228 0.0332 0.0722 0.209
## 643 11 1 0.1116 0.0320 0.0636 0.196
## 655 10 1 0.1004 0.0307 0.0552 0.183
## 689 9 1 0.0893 0.0293 0.0470 0.170
## 707 8 1 0.0781 0.0276 0.0390 0.156
## 791 7 1 0.0670 0.0259 0.0314 0.143
## 814 5 1 0.0536 0.0239 0.0223 0.128
## 883 3 1 0.0357 0.0216 0.0109 0.117
##
## sex=2
## time n.risk n.event survival std.err lower 95% CI upper 95% CI
## 5 90 1 0.9889 0.0110 0.9675 1.000
## 60 89 1 0.9778 0.0155 0.9478 1.000
## 61 88 1 0.9667 0.0189 0.9303 1.000
## 62 87 1 0.9556 0.0217 0.9139 0.999
## 79 86 1 0.9444 0.0241 0.8983 0.993
## 81 85 1 0.9333 0.0263 0.8832 0.986
## 95 83 1 0.9221 0.0283 0.8683 0.979
## 107 81 1 0.9107 0.0301 0.8535 0.972
## 122 80 1 0.8993 0.0318 0.8390 0.964
## 145 79 2 0.8766 0.0349 0.8108 0.948
## 153 77 1 0.8652 0.0362 0.7970 0.939
## 166 76 1 0.8538 0.0375 0.7834 0.931
## 167 75 1 0.8424 0.0387 0.7699 0.922
## 182 71 1 0.8305 0.0399 0.7559 0.913
## 186 70 1 0.8187 0.0411 0.7420 0.903
## 194 68 1 0.8066 0.0422 0.7280 0.894
## 199 67 1 0.7946 0.0432 0.7142 0.884
## 201 66 2 0.7705 0.0452 0.6869 0.864
## 208 62 1 0.7581 0.0461 0.6729 0.854
## 226 59 1 0.7452 0.0471 0.6584 0.843
## 239 57 1 0.7322 0.0480 0.6438 0.833
## 245 54 1 0.7186 0.0490 0.6287 0.821
## 268 51 1 0.7045 0.0501 0.6129 0.810
## 285 47 1 0.6895 0.0512 0.5962 0.798
## 293 45 1 0.6742 0.0523 0.5791 0.785
## 305 43 1 0.6585 0.0534 0.5618 0.772
## 310 42 1 0.6428 0.0544 0.5447 0.759
## 340 39 1 0.6264 0.0554 0.5267 0.745
## 345 38 1 0.6099 0.0563 0.5089 0.731
## 348 37 1 0.5934 0.0572 0.4913 0.717
## 350 36 1 0.5769 0.0579 0.4739 0.702
## 351 35 1 0.5604 0.0586 0.4566 0.688
## 361 33 1 0.5434 0.0592 0.4390 0.673
## 363 32 1 0.5265 0.0597 0.4215 0.658
## 371 30 1 0.5089 0.0603 0.4035 0.642
## 426 26 1 0.4893 0.0610 0.3832 0.625
## 433 25 1 0.4698 0.0617 0.3632 0.608
## 444 24 1 0.4502 0.0621 0.3435 0.590
## 450 23 1 0.4306 0.0624 0.3241 0.572
## 473 22 1 0.4110 0.0626 0.3050 0.554
## 520 19 1 0.3894 0.0629 0.2837 0.534
## 524 18 1 0.3678 0.0630 0.2628 0.515
## 550 15 1 0.3433 0.0634 0.2390 0.493
## 641 11 1 0.3121 0.0649 0.2076 0.469
## 654 10 1 0.2808 0.0655 0.1778 0.443
## 687 9 1 0.2496 0.0652 0.1496 0.417
## 705 8 1 0.2184 0.0641 0.1229 0.388
## 728 7 1 0.1872 0.0621 0.0978 0.359
## 731 6 1 0.1560 0.0590 0.0743 0.328
## 735 5 1 0.1248 0.0549 0.0527 0.295
## 765 3 1 0.0832 0.0499 0.0257 0.270
Cũng có thể sử dụng hàm surv_summary() [trong gói survminer ] để nhận tóm tắt về các đường cong sinh tồn. So với hàm summary() mặc định, surv_summary() tạo một khung dữ liệu chứa một bản tóm tắt đẹp từ các kết quả survfit.
res.sum <- surv_summary(fit)
## Warning in .get_data(x, data = data): The `data` argument is not provided. Data
## will be extracted from model fit.
head(res.sum)
## time n.risk n.event n.censor surv std.err upper lower strata
## 1 11 138 3 0 0.9782609 0.01268978 1.0000000 0.9542301 sex=1
## 2 12 135 1 0 0.9710145 0.01470747 0.9994124 0.9434235 sex=1
## 3 13 134 2 0 0.9565217 0.01814885 0.9911586 0.9230952 sex=1
## 4 15 132 1 0 0.9492754 0.01967768 0.9866017 0.9133612 sex=1
## 5 26 131 1 0 0.9420290 0.02111708 0.9818365 0.9038355 sex=1
## 6 30 130 1 0 0.9347826 0.02248469 0.9768989 0.8944820 sex=1
## sex
## 1 1
## 2 1
## 3 1
## 4 1
## 5 1
## 6 1
Hàm surv_summary() trả về một khung dữ liệu với các cột sau:
Trong một tình huống, khi các đường cong tồn tại đã được gắn với một hoặc nhiều biến, đối tượng surv_summary chứa các cột bổ sung đại diện cho các biến. Điều này làm cho nó có thể đối mặt với đầu ra của ggsurvplot theo tầng hoặc theo một số kết hợp của các yếu tố.
Đối tượng surv_summary cũng có một thuộc tính có tên là ‘table’ chứa thông tin về các đường cong sinh tồn, bao gồm các đường trung vị của sự sống sót với khoảng tin cậy, cũng như, tổng số đối tượng và số lượng sự kiện trong mỗi đường cong. Để tiếp cận vào thuộc tính ‘table’, hãy nhập vào:
attr(res.sum, "table")
## records n.max n.start events rmean se(rmean) median 0.95LCL 0.95UCL
## sex=1 138 138 138 112 326.0841 22.91156 270 212 310
## sex=2 90 90 90 53 460.6473 34.68985 426 348 550
Log-Rank test là phương pháp được sử dụng rộng rãi nhất để so sánh hai hoặc nhiều đường cong sống sót. Giả thuyết không (null hypothesis) là không có sự khác biệt về khả năng sống sót giữa hai nhóm. Log-Rank test là kiểm định phi tham số, không đưa ra giả định nào về các phân phối tồn tại. Về cơ bản, Log-Rank test so sánh số lượng sự kiện quan sát được trong mỗi nhóm với những gì sẽ được mong đợi nếu giả thuyết vô hiệu là đúng (tức là, nếu các đường cong sống sót giống hệt nhau). Thống kê thứ hạng Log-Rank được phân phối gần đúng dưới dạng thống kê kiểm định Chi-square.
Hàm survdiff() [trong gói survival] có thể được sử dụng để tính toán Log-Rank test so sánh hai hoặc nhiều đường cong sinh tồn.
survdiff() có thể được sử dụng như sau:
surv_diff <- survdiff(Surv(time, status) ~ sex, data = lung)
surv_diff
## Call:
## survdiff(formula = Surv(time, status) ~ sex, data = lung)
##
## N Observed Expected (O-E)^2/E (O-E)^2/V
## sex=1 138 112 91.6 4.55 10.3
## sex=2 90 53 73.4 5.68 10.3
##
## Chisq= 10.3 on 1 degrees of freedom, p= 0.001
Hàm trả về danh sách các thành phần, bao gồm:
Log-Rank test về sự khác biệt trong khả năng sống sót cho giá trị p là p = 0,0013, cho thấy rằng các nhóm giới tính có sự khác biệt đáng kể về khả năng sống sót.
Trong phần này, chúng tôi sẽ tính toán các đường cong sống sót bằng cách sử dụng kết hợp nhiều yếu tố. Tiếp theo, chúng ta sẽ đối mặt với đầu ra của ggsurvplot() bằng sự kết hợp của các yếu tố
Điều chỉnh các đường cong tồn tại (phức tạp) bằng cách sử dụng tập dữ liệu colon
require("survival")
fit2 <- survfit( Surv(time, status) ~ sex + rx + adhere,
data = colon )
Biểu diễn kết quả đầu ra bằng survminer. Biểu đồ dưới đây cho thấy các đường cong sống sót của biến giới tính được biểu thị theo các giá trị của rx & adhere.
# Plot survival curves by sex and facet by rx and adhere
ggsurv <- ggsurvplot(fit2, fun = "event", conf.int = TRUE,
ggtheme = theme_bw())
ggsurv$plot +theme_bw() +
theme (legend.position = "right")+
facet_grid(rx ~ adhere)
Phân tích tồn tại là một tập hợp các phương pháp tiếp cận thống kê để phân tích dữ liệu trong đó biến kết quả được quan tâm là thời gian cho đến khi một sự kiện xảy ra.
Dữ liệu tồn tại thường được mô tả và mô hình hóa theo hai hàm liên quan:
Hàm sống sót đại diện cho xác suất mà một cá nhân sống sót từ thời điểm xuất phát đến một thời điểm nào đó ngoài thời gian t. Nó thường được ước tính bằng phương pháp Kaplan-Meier. logrank test có thể được sử dụng để kiểm tra sự khác biệt giữa các đường cong sống sót cho các nhóm, chẳng hạn như nhóm điều trị.
Hàm nguy cơ cung cấp khả năng xảy ra tức thời của một sự kiện tại một thời điểm, cho khả năng tồn tại cho đến thời điểm đó. Nó được sử dụng chủ yếu như một công cụ chẩn đoán hoặc xác định một mô hình toán học để phân tích tỷ lệ sống sót.
Trong bài viết này, chúng tôi trình bày cách thực hiện và trực quan hóa các phân tích tỷ lệ sống bằng cách sử dụng kết hợp hai gói R: survival (để phân tích) và survminer (để hiển thị).
Clark TG, Bradburn MJ, Love SB and Altman DG. Survival Analysis Part I: Basic concepts and first analyses. British Journal of Cancer (2003) 89, 232 – 238
Kaplan EL, Meier P (1958) Nonparametric estimation from incomplete observations. J Am Stat Assoc 53: 457–481.
Pocock S, Clayton TC, Altman DG (2002) Survival plots of time-to-event outcomes in clinical trials: good practice and pitfalls. Lancet 359: 1686– 1689.