Email: abigaylerachman2009@gmail.com
RPubs: https://rpubs.com/abgylrchmn/
Survival analysis merupakan suatu pendekatan statistik yang dapat kita gunakan untuk menganalisis suatu peristiwa yg merupakan akibat dari data yang kita analisis dan bisa juga kita sebut time to event data (data dari waktu mulai peristiwa ke data waktu akhir peristiwa yang terjadi), seperti angka kematian, timbulnya penyakit cancer,dll.
Survival Analysis banyak digunakan oleh berbagai bidang, karena itu banyak juga yang menyebut Survival Analysis dengan nama lain seperti : - Analisis reliabilitas - Analisis durasi - Analisis riwayat peristiwa - Analisis waktu-ke-peristiwa - Model Bertahan Hidup
Tujuan dari bab ini adalah untuk mendeskripsikan konsep dasar dari analisis kelangsungan hidup. Dalam studi kanker, sebagian besar analisis kelangsungan hidup menggunakan metode berikut:
Bab ini akan dimulai dengan menjelaskan konsep penting dari analisis kelangsungan hidup, termasuk:
Bagaimana menghasilkan dan menafsirkan kurva kelangsungan hidup, dan Bagaimana mengukur dan menguji perbedaan kelangsungan hidup antara dua atau lebih kelompok pasien. Kemudian, akan dilanjutkan dengan mendeskripsikan analisis multivariat menggunakan model proporsional hazard Cox.
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
## Loading required package: ggpubr
##
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
##
## group_rows
Untuk subjek i Waktu acara (T_i) Menyensor waktu (C_i) Indikator acara (_i) 1 jika peristiwa diamati (yaitu T_i C_i) 0 jika disensor (yaitu T_i > C_i) Waktu pengamatan Y_i = (T_i, C_i) Waktu yang diamati dan indikator kejadian disediakan dalam data ‘lung’ waktu: Waktu bertahan dalam beberapa hari (Y_i) status: menyensor status 1 = disensor, 2 = mati (_i)
Kumpulan data ‘paru-paru’ tersedia dari paket bertahan hidup di R. Data tersebut mengandung subjek dengan kanker paru-paru stadium lanjut dari North Central Cancer Treatment Group. Beberapa variabel yang akan kami gunakan untuk menunjukkan metode hari ini termasuk
waktu: Waktu bertahan hidup dalam beberapa hari status: status penyensoran 1=disensor, 2=mati jenis kelamin: Male=1 Perempuan=2
## 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
## 7 7 310 2 68 2 2 70 60 384 10
## 8 11 361 2 71 2 2 60 80 538 1
## 9 1 218 2 53 1 1 70 80 825 16
## 10 7 166 2 61 1 2 70 70 271 34
## 11 6 170 2 57 1 1 80 80 1025 27
## 12 16 654 2 68 2 2 70 70 NA 23
## 13 11 728 2 68 2 1 90 90 NA 5
## 14 21 71 2 60 1 NA 60 70 1225 32
## 15 12 567 2 57 1 1 80 70 2600 60
## 16 1 144 2 67 1 1 80 90 NA 15
## 17 22 613 2 70 1 1 90 100 1150 -5
## 18 16 707 2 63 1 2 50 70 1025 22
## 19 1 61 2 56 2 2 60 60 238 10
## 20 21 88 2 57 1 1 90 80 1175 NA
## 21 11 301 2 67 1 1 80 80 1025 17
## 22 6 81 2 49 2 0 100 70 1175 -8
## 23 11 624 2 50 1 1 70 80 NA 16
## 24 15 371 2 58 1 0 90 100 975 13
## 25 12 394 2 72 1 0 90 80 NA 0
## 26 12 520 2 70 2 1 90 80 825 6
## 27 4 574 2 60 1 0 100 100 1025 -13
## 28 13 118 2 70 1 3 60 70 1075 20
## 29 13 390 2 53 1 1 80 70 875 -7
## 30 1 12 2 74 1 2 70 50 305 20
## 31 12 473 2 69 2 1 90 90 1025 -1
## 32 1 26 2 73 1 2 60 70 388 20
## 33 7 533 2 48 1 2 60 80 NA -11
## 34 16 107 2 60 2 2 50 60 925 -15
## 35 12 53 2 61 1 2 70 100 1075 10
## 36 1 122 2 62 2 2 50 50 1025 NA
## 37 22 814 2 65 1 2 70 60 513 28
## 38 15 965 1 66 2 1 70 90 875 4
## 39 1 93 2 74 1 2 50 40 1225 24
## 40 1 731 2 64 2 1 80 100 1175 15
## 41 5 460 2 70 1 1 80 60 975 10
## 42 11 153 2 73 2 2 60 70 1075 11
## 43 10 433 2 59 2 0 90 90 363 27
## 44 12 145 2 60 2 2 70 60 NA NA
## 45 7 583 2 68 1 1 60 70 1025 7
## 46 7 95 2 76 2 2 60 60 625 -24
## 47 1 303 2 74 1 0 90 70 463 30
## 48 3 519 2 63 1 1 80 70 1025 10
## 49 13 643 2 74 1 0 90 90 1425 2
## 50 22 765 2 50 2 1 90 100 1175 4
## 51 3 735 2 72 2 1 90 90 NA 9
## 52 12 189 2 63 1 0 80 70 NA 0
## 53 21 53 2 68 1 0 90 100 1025 0
## 54 1 246 2 58 1 0 100 90 1175 7
## 55 6 689 2 59 1 1 90 80 1300 15
## 56 1 65 2 62 1 0 90 80 725 NA
## 57 5 5 2 65 2 0 100 80 338 5
## 58 22 132 2 57 1 2 70 60 NA 18
## 59 3 687 2 58 2 1 80 80 1225 10
## 60 1 345 2 64 2 1 90 80 1075 -3
## 61 22 444 2 75 2 2 70 70 438 8
## 62 12 223 2 48 1 1 90 80 1300 68
## 63 21 175 2 73 1 1 80 100 1025 NA
## 64 11 60 2 65 2 1 90 80 1025 0
## 65 3 163 2 69 1 1 80 60 1125 0
## 66 3 65 2 68 1 2 70 50 825 8
## 67 16 208 2 67 2 2 70 NA 538 2
## 68 5 821 1 64 2 0 90 70 1025 3
## 69 22 428 2 68 1 0 100 80 1039 0
## 70 6 230 2 67 1 1 80 100 488 23
## 71 13 840 1 63 1 0 90 90 1175 -1
## 72 3 305 2 48 2 1 80 90 538 29
## 73 5 11 2 74 1 2 70 100 1175 0
## 74 2 132 2 40 1 1 80 80 NA 3
## 75 21 226 2 53 2 1 90 80 825 3
## 76 12 426 2 71 2 1 90 90 1075 19
## 77 1 705 2 51 2 0 100 80 1300 0
## 78 6 363 2 56 2 1 80 70 1225 -2
## 79 3 11 2 81 1 0 90 NA 731 15
## 80 1 176 2 73 1 0 90 70 169 30
## 81 4 791 2 59 1 0 100 80 768 5
## 82 13 95 2 55 1 1 70 90 1500 15
## 83 11 196 1 42 1 1 80 80 1425 8
## 84 21 167 2 44 2 1 80 90 588 -1
## 85 16 806 1 44 1 1 80 80 1025 1
## 86 6 284 2 71 1 1 80 90 1100 14
## 87 22 641 2 62 2 1 80 80 1150 1
## 88 21 147 2 61 1 0 100 90 1175 4
## 89 13 740 1 44 2 1 90 80 588 39
## 90 1 163 2 72 1 2 70 70 910 2
## 91 11 655 2 63 1 0 100 90 975 -1
## 92 22 239 2 70 1 1 80 100 NA 23
## 93 5 88 2 66 1 1 90 80 875 8
## 94 10 245 2 57 2 1 80 60 280 14
## 95 1 588 1 69 2 0 100 90 NA 13
## 96 12 30 2 72 1 2 80 60 288 7
## 97 3 179 2 69 1 1 80 80 NA 25
## 98 12 310 2 71 1 1 90 100 NA 0
## 99 11 477 2 64 1 1 90 100 910 0
## 100 3 166 2 70 2 0 90 70 NA 10
## 101 1 559 1 58 2 0 100 100 710 15
## 102 6 450 2 69 2 1 80 90 1175 3
## 103 13 364 2 56 1 1 70 80 NA 4
## 104 6 107 2 63 1 1 90 70 NA 0
## 105 13 177 2 59 1 2 50 NA NA 32
## 106 12 156 2 66 1 1 80 90 875 14
## 107 26 529 1 54 2 1 80 100 975 -3
## 108 1 11 2 67 1 1 90 90 925 NA
## 109 21 429 2 55 1 1 100 80 975 5
## 110 3 351 2 75 2 2 60 50 925 11
## 111 13 15 2 69 1 0 90 70 575 10
## 112 1 181 2 44 1 1 80 90 1175 5
## 113 10 283 2 80 1 1 80 100 1030 6
## 114 3 201 2 75 2 0 90 100 NA 1
## 115 6 524 2 54 2 1 80 100 NA 15
## 116 1 13 2 76 1 2 70 70 413 20
## 117 3 212 2 49 1 2 70 60 675 20
## 118 1 524 2 68 1 2 60 70 1300 30
## 119 16 288 2 66 1 2 70 60 613 24
## 120 15 363 2 80 1 1 80 90 346 11
## 121 22 442 2 75 1 0 90 90 NA 0
## 122 26 199 2 60 2 2 70 80 675 10
## 123 3 550 2 69 2 1 70 80 910 0
## 124 11 54 2 72 1 2 60 60 768 -3
## 125 1 558 2 70 1 0 90 90 1025 17
## 126 22 207 2 66 1 1 80 80 925 20
## 127 7 92 2 50 1 1 80 60 1075 13
## 128 12 60 2 64 1 1 80 90 993 0
## 129 16 551 1 77 2 2 80 60 750 28
## 130 12 543 1 48 2 0 90 60 NA 4
## 131 4 293 2 59 2 1 80 80 925 52
## 132 16 202 2 53 1 1 80 80 NA 20
## 133 6 353 2 47 1 0 100 90 1225 5
## 134 13 511 1 55 2 1 80 70 NA 49
## 135 1 267 2 67 1 0 90 70 313 6
## 136 22 511 1 74 2 2 60 40 96 37
## 137 12 371 2 58 2 1 80 70 NA 0
## 138 13 387 2 56 1 2 80 60 1075 NA
## 139 1 457 2 54 1 1 90 90 975 -5
## 140 5 337 2 56 1 0 100 100 1500 15
## 141 21 201 2 73 2 2 70 60 1225 -16
## 142 3 404 1 74 1 1 80 70 413 38
## 143 26 222 2 76 1 2 70 70 1500 8
## 144 1 62 2 65 2 1 80 90 1075 0
## 145 11 458 1 57 1 1 80 100 513 30
## 146 26 356 1 53 2 1 90 90 NA 2
## 147 16 353 2 71 1 0 100 80 775 2
## 148 16 163 2 54 1 1 90 80 1225 13
## 149 12 31 2 82 1 0 100 90 413 27
## 150 13 340 2 59 2 0 100 90 NA 0
## 151 13 229 2 70 1 1 70 60 1175 -2
## 152 22 444 1 60 1 0 90 100 NA 7
## 153 5 315 1 62 2 0 90 90 NA 0
## 154 16 182 2 53 2 1 80 60 NA 4
## 155 32 156 2 55 1 2 70 30 1025 10
## 156 NA 329 2 69 1 2 70 80 713 20
## 157 26 364 1 68 2 1 90 90 NA 7
## 158 4 291 2 62 1 2 70 60 475 27
## 159 12 179 2 63 1 1 80 70 538 -2
## 160 1 376 1 56 2 1 80 90 825 17
## 161 32 384 1 62 2 0 90 90 588 8
## 162 10 268 2 44 2 1 90 100 2450 2
## 163 11 292 1 69 1 2 60 70 2450 36
## 164 6 142 2 63 1 1 90 80 875 2
## 165 7 413 1 64 1 1 80 70 413 16
## 166 16 266 1 57 2 0 90 90 1075 3
## 167 11 194 2 60 2 1 80 60 NA 33
## 168 21 320 2 46 1 0 100 100 860 4
## 169 6 181 2 61 1 1 90 90 730 0
## 170 12 285 2 65 1 0 100 90 1025 0
## 171 13 301 1 61 1 1 90 100 825 2
## 172 2 348 2 58 2 0 90 80 1225 10
## 173 2 197 2 56 1 1 90 60 768 37
## 174 16 382 1 43 2 0 100 90 338 6
## 175 1 303 1 53 1 1 90 80 1225 12
## 176 13 296 1 59 2 1 80 100 1025 0
## 177 1 180 2 56 1 2 60 80 1225 -2
## 178 13 186 2 55 2 1 80 70 NA NA
## 179 1 145 2 53 2 1 80 90 588 13
## 180 7 269 1 74 2 0 100 100 588 0
## 181 13 300 1 60 1 0 100 100 975 5
## 182 1 284 1 39 1 0 100 90 1225 -5
## 183 16 350 2 66 2 0 90 100 1025 NA
## 184 32 272 1 65 2 1 80 90 NA -1
## 185 12 292 1 51 2 0 90 80 1225 0
## 186 12 332 1 45 2 0 90 100 975 5
## 187 2 285 2 72 2 2 70 90 463 20
## 188 3 259 1 58 1 0 90 80 1300 8
## 189 15 110 2 64 1 1 80 60 1025 12
## 190 22 286 2 53 1 0 90 90 1225 8
## 191 16 270 2 72 1 1 80 90 488 14
## 192 16 81 2 52 1 2 60 70 1075 NA
## 193 12 131 2 50 1 1 90 80 513 NA
## 194 1 225 1 64 1 1 90 80 825 33
## 195 22 269 2 71 1 1 90 90 1300 -2
## 196 12 225 1 70 1 0 100 100 1175 6
## 197 32 243 1 63 2 1 80 90 825 0
## 198 21 279 1 64 1 1 90 90 NA 4
## 199 1 276 1 52 2 0 100 80 975 0
## 200 32 135 2 60 1 1 90 70 1275 0
## 201 15 79 2 64 2 1 90 90 488 37
## 202 22 59 2 73 1 1 60 60 2200 5
## 203 32 240 1 63 2 0 90 100 1025 0
## 204 3 202 1 50 2 0 100 100 635 1
## 205 26 235 1 63 2 0 100 90 413 0
## 206 33 105 2 62 1 2 NA 70 NA NA
## 207 5 224 1 55 2 0 80 90 NA 23
## 208 13 239 2 50 2 2 60 60 1025 -3
## 209 21 237 1 69 1 1 80 70 NA NA
## 210 33 173 1 59 2 1 90 80 NA 10
## 211 1 252 1 60 2 0 100 90 488 -2
## 212 6 221 1 67 1 1 80 70 413 23
## 213 15 185 1 69 1 1 90 70 1075 0
## 214 11 92 1 64 2 2 70 100 NA 31
## 215 11 13 2 65 1 1 80 90 NA 10
## 216 11 222 1 65 1 1 90 70 1025 18
## 217 13 192 1 41 2 1 90 80 NA -10
## 218 21 183 2 76 1 2 80 60 825 7
## 219 11 211 1 70 2 2 70 30 131 3
## 220 2 175 1 57 2 0 80 80 725 11
## 221 22 197 1 67 1 1 80 90 1500 2
## 222 11 203 1 71 2 1 80 90 1025 0
## 223 1 116 2 76 1 1 80 80 NA 0
## 224 1 188 1 77 1 1 80 60 NA 3
## 225 13 191 1 39 1 0 90 90 2350 -5
## 226 32 105 1 75 2 2 60 70 1025 5
## 227 6 174 1 66 1 1 90 100 1075 1
## 228 22 177 1 58 2 1 80 90 1060 0
Penyensoran terjadi jika subjek belum mengalami kejadian yang menarik pada akhir pengumpulan data.
Berdasarkan referensi dari RICH JT, NEELY JG, PANIELLO RC, VOELKER CCJ, NUSSENBAUM B, WANG EW. A PRACTICAL GUIDE TO UNDERSTANDING KAPLAN-MEIER CURVES. Otolaryngology head and neck surgery: official journal of American Academy of Otolaryngology Head and Neck Surgery.
Penyensoran terdiri dari beberapa tahapan :
Subjek dapat disensor karena:
Secara khusus ini adalah contoh penyensoran yang tepat.
Penyensoran kiri dan sensor interval juga dimungkinkan, dan metode ada untuk menganalisis jenis data ini, tetapi pelatihan ini akan terbatas pada sensor kanan.
Dalam contoh ini, bagaimana kita menghitung proporsi siapa yang bebas acara pada 10 tahun?
Subyek 6 dan 7 bebas acara pada usia 10 tahun. Subyek 2, 9, dan 10 memiliki acara sebelum 10 tahun. Subjek 1, 3, 4, 5, dan 8 disensor sebelum 10 tahun, jadi kita tidak tahu apakah mereka memiliki acara atau tidak dengan 10 tahun - bagaimana kita memasukkan subjek ini ke dalam perkiraan kita?
Data akan sering datang dengan tanggal mulai dan berakhir daripada waktu bertahan hidup yang telah dihitung sebelumnya. Langkah pertama adalah memastikan ini diformat sebagai tanggal dalam R.
Mari kita buat contoh set data dengan variabel sx_date untuk tanggal operasi last_fup_date untuk tanggal terupdate menggunakan library tibble.
date_ex <- tibble(
sx_date = c("2007-06-22", "2004-02-13", "2010-10-27"),
last_fup_date = c("2017-04-15", "2018-07-04", "2016-10-31")
)
date_ex## # A tibble: 3 x 2
## sx_date last_fup_date
## <chr> <chr>
## 1 2007-06-22 2017-04-15
## 2 2004-02-13 2018-07-04
## 3 2010-10-27 2016-10-31
Kita dapat melihat bahwa kedua variabel diatas merupakan variabel karakter sedangkan kita mau variabel tersebut berformat sebagai tanggal. Cara lain untuk memformat karakter tersebut menjadi tanggal menggunakan R adalah sbb :
date_ex %>%
mutate(
sx_date = as.Date(sx_date, format = "%Y-%m-%d"),
last_fup_date = as.Date(last_fup_date, format = "%Y-%m-%d")
)## # A tibble: 3 x 2
## sx_date last_fup_date
## <date> <date>
## 1 2007-06-22 2017-04-15
## 2 2004-02-13 2018-07-04
## 3 2010-10-27 2016-10-31
Kita juga dapat menggunakan paket Lubridate untuk memformat tanggal. Dalam kasus ini, gunakan fungsi ymd
## # A tibble: 3 x 2
## sx_date last_fup_date
## <date> <date>
## 1 2007-06-22 2017-04-15
## 2 2004-02-13 2018-07-04
## 3 2010-10-27 2016-10-31
Setelah tanggalnya sudah berformat tanggal, kita perlu mengkalkulasi bedanya awal dan akhir waktu pada beberapa unit, biasanya dalam periode bulanan atau tahunan. Dalam R, kita dapat menggunakan difftime untuk mengkalkulasi berapa hari antara dua tanggal yang kita miliki dan kita konversi kedalam nilai numeric dengan koding as.numeric lalu. Lalu di konversi per tahunan dengan koding 362.25, rata-rata jumlah hari dalam setahun.
date_ex %>%
mutate(
os_yrs =
as.numeric(
difftime(last_fup_date,
sx_date,
units = "days")) / 365.25
)## # A tibble: 3 x 3
## sx_date last_fup_date os_yrs
## <chr> <chr> <dbl>
## 1 2007-06-22 2017-04-15 9.82
## 2 2004-02-13 2018-07-04 14.4
## 3 2010-10-27 2016-10-31 6.01
kita gunakan package lubridate, dengan operator %–% sebagai interval waktu yang kemudian di konversi kedalam angka dari detik yang berlalu menggunakan koding as.duration dan akhirnya di konversi ke tahunan dengan koding dyears(1) membagi per 1 tahun, yang memberikan detik dalam setahun.
## # A tibble: 3 x 3
## sx_date last_fup_date os_yrs
## <chr> <chr> <dbl>
## 1 2007-06-22 2017-04-15 9.82
## 2 2004-02-13 2018-07-04 14.4
## 3 2010-10-27 2016-10-31 6.01
Untuk komponen-komponen survival data, dapat di sebutkan indikator dari suatu kejadian (_i) :
1 jika peristiwa diamati (yaitu T_i C_i) 0 jika disensor (yaitu T_i > C_i)
Bagaimanapun, dalam R, fungsi Surv dapat di terima TRUE/FALSE (TRUE = event) atau 1/2 dimana (2 = event).
Dalam data lung, kita mempunyai status : status penyensoran dimana 1=tersensor, 2=mati
Probabilitas dari suatu subjek akan bertahan pada waktu yang diberikan dapat dihitung dengan rumus berikut :
S(t) = Pr(T>t) = 1 - F(t)
Dimana S(t) merupakan fungsi survival F(t) = Pr(T>t) : merupakan fungsi distribusi kumulatif
Dalam teori, survival fungsi sangatlah mulus namun dalam latihan kita dapat melihat bahwa suatu kejadian terjadi pada skala waktu diskrit.
Probabilitas kelangsungan hidup pada waktu tertentu, S (t), adalah probabilitas bersyarat untuk bertahan hidup setelah waktu tersebut, mengingat bahwa seseorang telah bertahan sebelum waktu itu. Dapat diperkirakan sebagai jumlah pasien yang hidup tanpa mangkir pada saat itu, dibagi dengan jumlah pasien yang hidup sebelum waktu itu Estimasi Kaplan-Meier dari probabilitas kelangsungan hidup adalah produk dari probabilitas bersyarat hingga saat itu Pada waktu 0, probabilitas kelangsungan hidup adalah 1, yaitu S (t0) = 1
Metode Kaplan-Meier adalah cara paling umum untuk memperkirakan waktu kelangsungan hidup dan probabilitas. Ini adalah pendekatan non-parametrik yang menghasilkan fungsi langkah, di mana ada penurunan setiap kali suatu peristiwa terjadi.
Fungsi Surv dari paket survival membuat objek survival untuk digunakan sebagai respons dalam rumus model. Akan ada satu entri untuk setiap subjek yaitu survival time, yang diikuti dengan + jika subjek disensor. Mari kita lihat 10 observasi pertama:
## [1] 306 455 1010+ 210 883 1022+ 310 361 218 166
Fungsi survfit menciptakan kurva kelangsungan hidup berdasarkan rumus. Mari buat kurva kelangsungan hidup keseluruhan untuk seluruh kelompok, tetapkan ke objek f1, dan lihat nama objek itu:
## [1] "n" "time" "n.risk" "n.event" "n.censor" "surv"
## [7] "std.err" "cumhaz" "std.chaz" "type" "logse" "conf.int"
## [13] "conf.type" "lower" "upper" "call"
Beberapa kunci komponen dari survfit objek ini dapat digunakan untuk membuat kurva survival yang terdiri dari : time, yang berisikan titik awal dan akhir dari setiap interval waktu surv, berisikan probabilitas survival koresponden untuk setiap time
Sekarang kita plot kan objek survfit di R untuk mendapatkan plot Kaplan-Meiernya.
plot(survfit(Surv(time, status) ~ 1, data = lung),
xlab = "Days",
ylab = "Overall survival probability")Plot default di basis R menunjukkan fungsi langkah (garis penuh) dengan interval kepercayaan terkait (garis putus-putus) Garis horizontal mewakili durasi kelangsungan hidup untuk interval tersebut Interval diakhiri oleh suatu peristiwa Ketinggian garis vertikal menunjukkan perubahan probabilitas kumulatif Pengamatan yang disensor, ditunjukkan dengan tanda centang, mengurangi kelangsungan hidup kumulatif di antara interval. (Perhatikan tanda centang untuk pasien yang disensor tidak ditampilkan secara default, tetapi dapat ditambahkan menggunakan opsi mark.time = TRUE)
Sebagai alternatif, fungsi ggsurvplot dari paket survminer dibangun di atas ggplot2, dan dapat digunakan untuk membuat plot Kaplan-Meier. Lihat lembar contekan untuk paket survminer.
ggsurvplot(
fit = survfit(Surv(time, status) ~ 1, data = lung),
xlab = "Days",
ylab = "Overall survival probability") Plot default menggunakan ggsurvplot menunjukkan fungsi langkah (garis solid) dengan pita kepercayaan terkait (area berbayang). Tanda centang untuk pasien yang disensor ditampilkan secara default, agak mengaburkan garis itu sendiri dalam contoh ini, dan dapat ditekan menggunakan opsi censor = FALSE
Satu kuantitas yang sering menjadi perhatian dalam analisis kelangsungan hidup adalah probabilitas untuk bertahan hidup melebihi jumlah (x) tahun tertentu.
Misalnya, untuk mengestimasi probabilitas bertahan hingga 1 tahun, gunakan ringkasan dengan argumen waktu (Perhatikan variabel waktu di data paru-paru sebenarnya dalam hari, jadi kita perlu menggunakan times = 365.25)
## Call: survfit(formula = Surv(time, status) ~ 1, data = lung)
##
## time n.risk n.event survival std.err lower 95% CI upper 95% CI
## 365 65 121 0.409 0.0358 0.345 0.486
Kami menemukan bahwa probabilitas kelangsungan hidup 1 tahun dalam penelitian ini adalah 41%.
Batas bawah dan atas yang terkait dari interval kepercayaan 95% juga ditampilkan.
Probabilitas kelangsungan hidup 1 tahun adalah titik pada sumbu y yang sesuai dengan 1 tahun pada sumbu x untuk kurva kelangsungan hidup.
Apa yang terjadi jika Anda menggunakan perkiraan “naif”?
121 dari 228 pasien meninggal dalam 1 tahun jadi:
\Big(1 - \frac{121}{228}\Big) \times 100 = 47\%
Anda mendapatkan perkiraan yang salah tentang kemungkinan bertahan hidup 1 tahun ketika Anda mengabaikan fakta bahwa 42 pasien disensor sebelum 1 tahun.
Ingat perkiraan yang benar dari kemungkinan 1 tahun untuk bertahan hidup adalah 41%.
Bayangkan dua studi, masing-masing dengan 228 subjek. Ada 165 kematian di setiap penelitian. Tidak ada sensor di satu (garis oranye), 63 pasien disensor di satu (garis biru) Mengabaikan penyensoran mengarah pada perkiraan yang terlalu tinggi dari probabilitas kelangsungan hidup secara keseluruhan, karena subjek yang disensor hanya menyumbangkan informasi untuk sebagian dari waktu tindak lanjut, dan kemudian keluar dari set risiko, sehingga menurunkan probabilitas kumulatif untuk bertahan hidup
Kuantitas lain yang sering menarik dalam analisis kelangsungan hidup adalah waktu bertahan hidup rata-rata, yang kami ukur menggunakan median. Waktu bertahan tidak diharapkan terdistribusi secara normal sehingga meannya bukan ringkasan yang tepat.
Kami dapat memperoleh ini langsung dari objek survfit kami
## Call: survfit(formula = Surv(time, status) ~ 1, data = lung)
##
## n events median 0.95LCL 0.95UCL
## 228 165 310 285 363
Kami melihat median waktu bertahan hidup adalah 310 hari Batas bawah dan atas dari interval kepercayaan 95% juga ditampilkan.
Kelangsungan hidup median adalah waktu yang sesuai dengan probabilitas kelangsungan hidup 0,5:
Apa yang terjadi jika anda menggunakan sebuah estimasi “naive”? Simpulkan median dari survival waktu saat dalam 165 pasien yang meninggal.
## median_surv
## 1 226
Anda mendapatkan perkiraan waktu kelangsungan hidup rata-rata yang salah yaitu 226 hari ketika Anda mengabaikan fakta bahwa pasien yang disensor juga berkontribusi pada waktu tindak lanjut.
Ingat perkiraan yang benar dari waktu bertahan hidup rata-rata adalah 310 hari.
Mengabaikan penyensoran menciptakan kurva kelangsungan hidup yang diturunkan secara artifisial karena waktu tindak lanjut yang berkontribusi pada pasien yang disensor tidak termasuk (garis ungu)
Kurva kelangsungan hidup sebenarnya untuk data paru-paru ditampilkan dengan warna biru untuk perbandingan
Kita dapat melakukan uji signifikansi antarkelompok menggunakan uji log-rank Tes log-rank sama-sama membobotkan pengamatan selama seluruh waktu tindak lanjut dan merupakan cara paling umum untuk membandingkan waktu bertahan hidup antar kelompok Ada versi yang lebih membebani tindak lanjut awal atau akhir yang bisa lebih sesuai tergantung pada pertanyaan penelitian (lihat? Survdiff untuk opsi tes yang berbeda)
Kami mendapatkan nilai p log-rank menggunakan fungsi survdiff. Misalnya, kami dapat menguji apakah ada perbedaan waktu bertahan hidup menurut jenis kelamin di data lung
## 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
Sebenarnya agak rumit untuk mengekstrak nilai-p dari hasil survdiff. Berikut adalah baris kode untuk melakukannya
## [1] 0.001311165
Atau ada fungsi sdp di paket ezfun, yang dapat Anda instal menggunakan devtools :: install_github (“zabore / ezfun”) atau githubinstall :: githubinstall(“zabore / ezfun”). Ini mengembalikan nilai p yang diformat
## [1] 0.001
Kami mungkin ingin mengukur ukuran efek untuk satu variabel, atau menyertakan lebih dari satu variabel ke dalam model regresi untuk memperhitungkan efek beberapa variabel.
Model regresi Cox merupakan model semi parametrik yang dapat digunakan untuk menyesuaikan model regresi univariabel dan multivariabel yang memiliki hasil survival. h(t|X_i) = h_0(t) (1 X{i1} + + p X{ip})
h (t): bahaya, atau kecepatan sesaat di mana peristiwa terjadi h0 (t): bahaya dasar yang mendasari
Beberapa asumsi utama model:
sensor non-informatif bahaya proporsional
Catatan: model regresi parametrik untuk hasil kelangsungan hidup juga tersedia, tetapi model tersebut tidak akan dibahas dalam pelatihan ini
Kita dapat menyesuaikan model regresi untuk data survival menggunakan fungsi coxph, yang mengambil objek Surv di sisi kiri dan memiliki sintaks standar untuk rumus regresi di R di sisi kanan.
## Call:
## coxph(formula = Surv(time, status) ~ sex, data = lung)
##
## coef exp(coef) se(coef) z p
## sex -0.5310 0.5880 0.1672 -3.176 0.00149
##
## Likelihood ratio test=10.63 on 1 df, p=0.001111
## n= 228, number of events= 165
Kita dapat melihat versi keluaran yang rapi menggunakan fungsi rapi dari paket sapu:
| term | estimate | std.error | statistic | p.value |
|---|---|---|---|---|
| sex | 0.5880028 | 0.1671786 | -3.176385 | 0.0014912 |
Or use tbl_regression from the gtsummary package
Kuantitas yang menarik dari model regresi Cox adalah rasio bahaya (HR). HR mewakili rasio bahaya antara dua kelompok pada titik waktu tertentu.
HR diartikan sebagai tingkat kejadian sesaat dari kejadian yang menarik bagi mereka yang masih berisiko untuk acara tersebut. Ini bukan risiko, meskipun secara umum ditafsirkan seperti itu.
Jika Anda memiliki parameter regresi β (dari estimasi kolom di coxph kami) maka HR = exp (β).
HR <1 menunjukkan pengurangan bahaya kematian sedangkan HR> 1 menunjukkan peningkatan bahaya kematian.
Jadi HR kami = 0,59 menyiratkan bahwa sekitar 0,6 kali lebih banyak wanita yang meninggal daripada pria, pada waktu tertentu.