Email                :
Instagram        : elvriana_e
RPubs               : https://rpubs.com/elvriana_e
GitHub             : https://github.com/elvrianae


1 Apa yang Telah Kita Rangkum?

  • Dasar-dasar analisis survival (kelangsungan hidup) termasuk fungsi survival Kaplan-Meier dan regresi Cox
  • Analisis landmark dan kovariat tergantung waktu
  • Insiden kumulatif dan regresi untuk bersaing analisis risiko

2 Apa yang Tersisa?

Berbagai hal kecil yang mungkin muncul dan berguna untuk diketahui:

  • Menilai asumsi bahaya proporsional
  • Membuat plot survival yang mulus berdasarkan kelangsungan hidup \(x\)-tahun menurut kovariat berkelanjutan
  • Survival bersyarat

3 Menilai Bahaya Proporsional

Salah satu asumsi dari model regresi bahaya proporsional Cox adalah bahwa bahaya proporsional pada setiap titik waktu selama tindak lanjut. Bagaimana kita dapat memeriksa apakah data kita memenuhi asumsi ini?

Gunakan fungsi cox.zph dari paket survival. Ini menghasilkan dua hal utama:

  • Uji hipotesis apakah pengaruh setiap kovariat berbeda menurut waktu, dan uji global semua kovariat sekaligus.
    • Ini dilakukan dengan menguji efek interaksi antara kovariat dan log (waktu)
    • Nilai p yang signifikan menunjukkan bahwa asumsi bahaya proporsional dilanggar
  • Plot residu Schoenfeld
    • Penyimpangan dari garis kemiringan nol merupakan bukti bahwa asumsi bahaya proporsional dilanggar
library(survival)
mv_fit <- coxph(Surv(time, status) ~ sex + age, data = lung)
cz <- cox.zph(mv_fit)
print(cz)
##        chisq df    p
## sex    2.608  1 0.11
## age    0.209  1 0.65
## GLOBAL 2.771  2 0.25
plot(cz)

3.1 Plot Survival yang Halus

Terkadang kita ingin memvisualisasikan perkiraan survival menurut variabel kontinu. Fungsi sm.survival dari paket sm memungkinkan kita melakukan ini untuk sejumlah distribusi data survival. Kuantil default adalah p = 0,5 untuk survival median.

library(sm)

sm.options(
  list(
    xlab = "Age (years)",
    ylab = "Time to death (years)")
  )

sm.survival(
  x = lung$age,
  y = lung$time,
  status = lung$status,
  h = sd(lung$age) / nrow(lung)^(-1/4)
  )

  • Simbol X mewakili peristiwa
  • Simbol o mewakili penyensoran
  • Garis lurus adalah perkiraan rata-rata kelangsungan hidup menurut usia
    • Dalam hal ini, hasil garisnya sangat halus!

Opsi h adalah parameter penghalusan. Ini harus terkait dengan deviasi standar kovariat kontinu, \(x\). Disarankan untuk memulai dengan \(\frac{sd(x)}{n^{-1/4}}\) lalu kurangi \(\frac {1}{2}\), \(\frac {1}{4}\), dan seterusnya untuk mendapatkan jumlah penghalusan yang bagus. Plot sebelumnya terlalu halus jadi mari kita kurangi \(\frac {1}{4}\)

sm.survival(
  x = lung$age,
  y = lung$time,
  status = lung$status,
  h = (1/4) * sd(lung$age) / nrow(lung)^(-1/4)
  )

3.2 Survival Bersyarat

Kadang-kadang menarik untuk menghasilkan perkiraan survival di antara sekelompok pasien yang telah bertahan selama beberapa waktu. \[S(y|x) = \frac{S(x + y)}{S(x)}\]

  • \(y\): jumlah tahun survival tambahan yang diinginkan
  • \(x\): jumlah tahun pasien telah bertahan hidup

Referensinya adalah: Zabor, E., Gonen, M., Chapman, P., & Panageas, K. (2013). Dynamic prognostication using conditional survival estimates. Cancer, 119(20), 3589-3592.

3.3 Perkiraan Survival Bersyarat

Perkiraan mudah dibuat dengan dasar matematika kita sendiri.

Sebagai alternatif, saya memiliki paket sederhana dalam pengembangan yang disebut condsurv untuk menghasilkan perkiraan dan plot yang terkait dengan survival bersyarat. Kita bisa menggunakan fungsi conditional_surv_est untuk mendapatkan perkiraan dan 95% interval kepercayaan. Mari kondisi survival sampai 6 bulan

remotes::install_github("zabore/condsurv")
library(condsurv)
library(DT)
library(tidyverse)
library(kableExtra)

fit1 <- survfit(Surv(time, status) ~ 1, data = lung)

prob_times <- seq(365.25, 182.625 * 5, 182.625)

purrr::map_df(
  prob_times,
  ~ conditional_surv_est(
    basekm = fit1,
    t1 = 182.625,
    t2 = .x)
)   %>%
  mutate(months = round(prob_times / 30.4)) %>%
  select(months, everything()) %>%
  datatable()

Ingatlah bahwa perkiraan survival \(1\) tahun awal kita adalah 0,41. Kita melihat bahwa untuk pasien yang sudah bertahan hidup 6 bulan, angka ini meningkat menjadi 0,58.

3.4 Plot Survival Bersyarat

Kita juga dapat memvisualisasikan data survival bersyarat berdasarkan lama waktu bertahan yang berbeda. Fungsi condsurv::condKMggplot dapat membantu.

cond_times <- seq(0, 182.625 * 4, 182.625)

gg_conditional_surv(
  basekm = fit1,
  at = cond_times,
  main = "Survival Bersyarat Pada Data Lung",
  xlab = "Hari"
) +
  labs(color = "Waktu Bersyarat")

Plot yang dihasilkan memiliki satu kurva survival untuk setiap waktu yang kita kondisikan. Dalam hal ini, baris pertama adalah kurva survival secara keseluruhan karena dikondisikan pada waktu 0.

library(knitr)
knit_exit()