Email : nicholasandrian6509@gmail.com
RPubs : https://rpubs.com/Nicholas321
instagram : https://www.instagram.com/nicholasandrian/
linkedin : https://www.linkedin.com/in/nicholas-andrian/
Dasar-dasar analisis survival termasuk fungsi survival Kaplan-Meier dan regresi Cox.
Analisis penanda (landmark) dan kovariat yang bergantung pada waktu.
Kejadian kumulatif dan regresi untuk analisis risiko yang bersaing.
Beberapa hal kecil yang mungkin dapat terjadi dan berguna untuk diketahui:
Menilai asumsi hazard proporsional.
Membuat plot survival yang mulus berdasarkan kelangsungan hidup x-tahun menurut kovariat berkelanjutan.
Kelangsungan hidup bersyarat.
Salah satu asumsi dari model regresi hazard proporsional Cox adalah bahwa hazard proporsional pada setiap titik waktu selama masa follow-up. Bagaimana kita dapat memeriksa apakah data kita memenuhi asumsi ini?
Gunakan fungsi cox.zph dari package survival. Ini menghasilkan dua hal utama:
Uji hipotesis tentang 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 hazard proporsional dilanggar.
Plot residu Schoenfeld.
library(survival)
mv_fit <- coxph(Surv(time, status) ~ sex + age, data = lung)
cz <- cox.zph(mv_fit)
print(cz)## rho chisq p
## sex 0.1236 2.452 0.117
## age -0.0275 0.129 0.719
## GLOBAL NA 2.651 0.266
Terkadang anda ingin memvisualisasikan perkiraan kelangsungan hidup menurut variabel kontinu. Fungsi sm.survival dari paket sm memungkinkan anda melakukan ini untuk sejumlah distribusi data survival. Kuantil default adalah p = 0.5 untuk median Survival.
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)
)Tanda x mewakili peristiwa
Huruf o mewakili sensor
Garis adalah perkiraan rata-rata survival menurut usia
Opsi h adalah parameter penghalusan atau smooting parameter. Ini harus terkait dengan standar deviasi kovariat kontinu, x. Disarankan untuk memulai dengan \(\frac{sd(x)}{n^{-1/4}}\) lalu kurangi dengan {1/2}, {1/4}, dll untuk mendapatkan jumlah penghalusan atau smoothing yang baik. Plot sebelumnya terlalu halus jadi mari kita kurangi dengan 1/4
sm.survival(
x = lung$age,
y = lung$time,
status = lung$status,
h = (1/4) * sd(lung$age) / nrow(lung)^(-1/4)
)Kadang-kadang menarik untuk menghasilkan perkiraan kelangsungan hidup di antara sekelompok pasien yang telah bertahan selama beberapa waktu.
\[S(y|x)=\frac{S(x+y)}{S(x)}\]
Referensinya adalah: Zabor, E., Gonen, M., Chapman, P., & Panageas, K. (2013). Dynamic prognostication using conditional survival estimates. Cancer, 119(20), 3589-3592.
Perkiraan mudah dibuat dengan matematika dasar anda sendiri.
Sebagai alternatif, saya memiliki paket sederhana yang sedang dalam tahap pengembangan yang disebut condsurv untuk menghasilkan perkiraan dan plot yang terkait dengan kelangsungan hidup bersyarat. Kita bisa menggunakan fungsi conditional_surv_est untuk mendapatkan perkiraan dan 95% interval kepercayaan. Mari kondisikan kelangsungan hidup sampai 6 bulan!
library(condsurv)
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()) %>%
kable()| months | cs_est | cs_lci | cs_uci |
|---|---|---|---|
| 12 | 0.58 | 0.49 | 0.66 |
| 18 | 0.36 | 0.27 | 0.45 |
| 24 | 0.16 | 0.10 | 0.25 |
| 30 | 0.07 | 0.02 | 0.15 |
Ingatlah bahwa perkiraan kelangsungan hidup 1
tahun awal kami adalah 0.41. Kami melihat bahwa untuk pasien yang sudah bertahan hidup 6 bulan, angknya meningkat menjadi 0.58.
Kami juga dapat memvisualisasikan data kelangsungan hidup bersyarat berdasarkan lama waktu bertahan yang berbeda. Fungsi condsurv::condKMggplot dapat membantu dalam hal ini.
cond_times <- seq(0, 182.625 * 4, 182.625)
gg_conditional_surv(
basekm = fit1,
at = cond_times,
main = "Conditional survival in lung data",
xlab = "Days"
) +
labs(color = "Conditional time")Plot yang dihasilkan memiliki satu kurva kelangsungan hidup untuk setiap waktu yang kami kondisikan. Dalam hal ini, baris pertama adalah kurva kelangsungan hidup secara keseluruhan karena dikondisikan pada waktu 0.