-
Phân tích sống sót trên R
-
-
Cài đặt và sử dụng 2 packages
-
-- survival cho tính toán các phân tích tồn tại
-- survminer cho để tóm tắt và vẽ hình kết quả phân tích sự sống sót
-
-
library("survival")
-library("survminer")
-
## Loading required package: ggplot2
-
## Loading required package: ggpubr
-
##
-## Attaching package: 'survminer'
-
## The following object is masked from 'package:survival':
-##
-## myeloma
-
-
-
Dữ liệu
-
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
-
-- inst: Mã tổ chức
-- time: Thời gian tồn tại tính bằng ngày
-- status: trạng thái kiểm chứng 1 = kiểm chứng, 2 = chết
-- age: Tuổi tính theo năm
-- sex: Nam = 1, Nữ = 2
-- ph.ecog: Điểm hiệu suất ECOG (0 = tốt 5 = chết)
-- ph.karno: Điểm hiệu suất của Karnofsky (xấu = 0-tốt = 100) do bác sĩ đánh giá
-- pat.karno: Điểm hiệu suất của Karnofsky theo đánh giá của bệnh nhân
-- meal.cal: Lượng calo tiêu thụ trong bữa ăn
-- wt.loss: Giảm cân trong sáu tháng qua
-
-
-
-
Tính toán các đường cong sinh tồn: survfit ()
-
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:
-
-- một đối tượng survival được tạo bằng cách sử dụng hàm Surv()
-- và tập dữ liệu chứa các biến.
-
-
Để 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
-
-
-
Tiếp cận giá trị được trả về bởi survfit()
-
Hàm survfit() trả về danh sách các biến, bao gồm các thành phần sau:
-
-- n: tổng số chủ thể trong mỗi đường cong.
-- time: các điểm thời gian trên đường cong.
-- n.risk: số đối tượng gặp rủi ro tại thời điểm t
-- n.event: số sự kiện xảy ra tại thời điểm t.
-- n.censor: số đối tượng bị kiểm duyệt, thoát khỏi nhóm rủi ro, không có sự kiện, tại thời điểm t.
-- lower,upper: giới hạn tin cậy dưới và trên cho đường cong, tương ứng.
-- strata: chỉ ra sự phân tầng của ước lượng đường cong. Nếu phân tầng is not NULL, có nhiều đường cong trong kết quả. Các mức của phân tầng (factor) là nhãn cho các đường cong.
-
-
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
-
-
-
Vẽ hình các đường cong sinh tồn
-
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:
-
-- TRUE hoặc FALSE xác định có hiển thị hay không bảng rủi ro. Mặc định là FALSE.
-- “absolute” or “percentage”: để hiển thị số tuyệt đối và tỷ lệ phần trăm đối tượng gặp rủi ro tương ứng theo thời gian. Sử dụng “abs_pct” để hiển thị cả số tuyệt đối và tỷ lệ phần tră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:
-
-- conf.int.style = “step” để thay đổi kiểu của dải khoảng tin cậy.
-- xlab để thay đổi nhãn trục x.
-- break.time.by = 200 ngắt trục x trong khoảng thời gian 200.
-- risk.table = “abs_pct” để hiển thị cả số lượng tuyệt đối và tỷ lệ phần trăm các cá nhân có nguy cơ.
-- risk.table.y.text.col = TRUE và risk.table.y.text = FALSE để cung cấp các thanh thay vì tên trong chú thích văn bản của chú giải bảng rủi ro.
-- ncensor.plot = TRUE để vẽ biểu đồ số đối tượng bị kiểm duyệt tại thời điểm t. Theo đề xuất của Marcin - Kosinski, Đây là một phản hồi bổ sung tốt cho các đường cong sinh tồn, để người ta có thể nhận ra: đường cong sinh tồn trông như thế nào, số lượng rủi ro là bao nhiêu VÀ nguyên nhân khiến tập hợp rủi ro trở nên nhỏ hơn: có phải gây ra bởi các sự kiện hoặc bởi các sự kiện được kiểm duyệt?
-- Legend.labs để thay đổi nhãn chú giải.
-
-
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.
-
-- Tại thời điểm 0, xác suất sống sót là 1,0 (hoặc 100% người tham gia còn sống).
-- Tại thời điểm 250, xác suất sống sót là khoảng 0,55 (hoặc 55%) đối với giới tính = 1 và 0,75 (hoặc 75%) đối với giới tính = 2.
-- Thời gian sống sót trung bình là khoảng 270 ngày đối với giới tính = 1 và 426 ngày đối với giới tính = 2, cho thấy thời gian sống sót đối với giới tính = 2 tốt hơn so với giới tính = 1
-
-
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")
-
-
-
-
Kaplan-Meier life table: tóm tắt các đường cong sinh tồn
-
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:
-
-- time: thời điểm mà đường cong có một bước.
-- n.risk: số đối tượng gặp rủi ro tại thời điểm t.
-- n.event: số sự kiện xảy ra tại thời điểm t.
-- n.censor: số lượng sự kiện được kiểm duyệt.
-- surv: ước tính xác suất sống sót.
-- std.err: sai số tiêu chuẩn của xác suất sống sót.
-- upper: cận trên của khoảng tin cậy
-- lower: cận dưới của khoảng tin cậy
-- strata: chỉ ra sự phân tầng của ước lượng đường cong. Các mức của phần tầng (factor) là nhãn cho các đường cong.
-
-
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 so sánh các đường cong sống sót: survdiff()
-
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:
-
-- n: số chủ thể trong mỗi nhóm.
-- obs: số lượng sự kiện được quan sát có trọng số trong mỗi nhóm.
-- exp: số lượng sự kiện dự kiến có trọng số trong mỗi nhóm.
-- chisq: thống kê chisquare để kiểm tra sự bằng nhau.
-- strata: (tùy chọn) số lượng đối tượng có trong mỗi tầng.
-
-
-
-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.
-
-
-
-
-
Fit complex survival curves
-
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)
-
-
-