Emails \(\hspace{0.6cm}:\) 1. hodawya125@gmail.com
\(\hspace{1.9cm}\) 2. juenzy.hodawya@matanauniversity.ac.id
Instagram \(\hspace{0.03cm}:\) https://www.instagram.com/j.hodawya/
Linked In \(\hspace{0.2cm}:\) https://www.linkedin.com/in/juenzy-hodawya-a310ab1a3/
RPubs \(\hspace{0.67cm}:\) https://rpubs.com/JHodawya
Kaggle \(\hspace{0.6cm}:\) https://www.kaggle.com/juenzyhodawya
GitHub \(\hspace{0.52cm}:\) https://github.com/JuenzyHodawya
Beberapa hal kecil yang mungkin dapat terjadi dan berguna untuk diketahui:
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:
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
Terkadang Anda ingin memvisualisasikan perkiraan survival menurut variabel kontinu. Fungsi sm.survival
dari package sm
memungkinkan Anda melakukan ini untuk sebuah kuantil 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)
)
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 dengan 1/2, 1/4, dll untuk mendapatkan jumlah penghalusan yang baik. Plot sebelumnya terlalu halus jadi mari kita kurangi 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)}\]
Referensi: 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 package sederhana dalam pengembangan yang disebut condsurv
untuk menghasilkan perkiraan dan plot yang terkait dengan kelangsungan hidup bersyarat. Kita dapat menggunakan fungsi conditional_surv_est
untuk mendapatkan taksiran dan 95% interval keyakinan. Mari kita 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 kita adalah 0.41. Kita melihat bahwa untuk pasien yang sudah bertahan hidup 6 bulan, angka ini meningkat menjadi 0.58.
Kita juga dapat memvisualisasikan data kelangsungan hidup bersyarat berdasarkan lama waktu bertahan yang berbeda. Fungsi condsurv::condKMggplot
bisa membantu dengan 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 kita kondisikan. Dalam hal ini, baris pertama adalah kurva survival secara keseluruhan karena dikondisikan pada waktu 0.