library(dplyr)      #data manipulation
library(ggplot2)    #data visualization
library(DT)         #beautify the data table
library(plotly)     #make a pie chart
library(Metrics)    #find error value
library(yardstick)
library(data.table)
library(paletti)
library(GGally)
library(plotly)
library(rsample)      # Initial Split
library(partykit) 
library(rpart)        # Decision Tree
library(rpart.plot)   # Decision Tree
library(caret)        # Confussion Matrix
library(randomForest) # random forest

library(devtools)
#devtools::install_github('skinner927/reprtree')
#library(reprtree)

library(e1071)        # naive bayes
library(nnet)         # multinomial logistic regression
library(gridExtra)
library(grid)
library(knitr)
library(kableExtra)
library(cowplot)
library(formattable)

#COLORS
library(ggthemes)
library(paletti)
# WARNA
mycolorfill = c(
  
  light_blue="#2f4b7c", 
  smooth_blue ="#4B87CB",
  light_purple ="#665191",
  dark_pink="#a05195", 
  light_pink="#d45087", 
  light_red="#f95d6a", 
  dark_orange="#ff6347",
  semi_orange="#e79658",
  orange="#dda15a",
  cream="#b59378",
  dark_cream="#A57F5F",
  choc="#85664B",
  dark_choc="#6b5340",
  light_orange="#ff7c43"
)

#viz_palette(mycolorfill)
mycolor_fill  <- get_scale_fill(get_pal(mycolorfill))
mycolor_color <- get_scale_color(get_pal(mycolorfill))
mycolor_hex <- get_hex(mycolorfill)

1 Apa itu Analisis Survival?

Analisis Survival merupakan suatu analisis yang sesuai dengan pendekatan statistik yang digunakan untuk menyelidiki waktu yang digunakan dalam sautu kejadian yang terjadi. Analisis Survival juga disebut sebagai data waktu suatu kejadian yang terdiri dari waktu mulai dan waktu akhir yang berbeda.

Analisis Survival biasanya digunakan dalam beberapa variasi di lapangan, seperti:

Studi tentang kanker untuk para pasien analisis survival

~ Sosiologi untuk “peristiwa sejarah analisis”

~ Didalam teknik digunakan untuk menghitung “analisis waktu gagal”

Di studi kanker, tipe pertanyaan penelitian berbentuk seperti:

Apa yang menjadi dampak dari karakteristik klinikal dalam peluang hidup pasien?

Berapa besarnya probabilitas seseorang untuk bertahan hidup selama 3 tahun?

Apakah ada suatu perbedaan di dalam peluang hidup kelompok pasien?

1.1 Contoh didalam lapangan yang lain

Data waktu kejadian sering digunakan dalam lapangan, tapi tidak terhitung untuk:

Waktu untuk infeksi HIV untuk perkembangan dari AIDS

~ Waktu dari serangan jantung

~ Waktu penyalahgunaan zat

~ Waktu memulai aktivitas seksual

~ Waktu kerusakan dari suatu mesin

1.2 Alias dalam Analisis Survival

Karena analisis survival sering digunakan di lapangan, itu juga digunakan dengan beberapa nama lain, seperti:

Analisis Reabilitas

~ Analisis Durasi

~ Analisis kejadian masa lalu

~ Analisis waktu suatu kejadian

~ Model Survival

1.3 Objektif Analisis Survival

Target dari pembelajaran ini adalah menjelaskan konsep awal dari analisis survival. Didalam studi kanker, banyak dari analisis survival digunakan dengan mengikuti metode:

Plot Kaplan-Meier untuk memvisualisasikan kurva survival

~ Uji Log-rank untuk membanding

kan kurva survival dari dua atau tiga kelompok

~ Regresi proporsional Cox Hazard untuk menggambarkan efek dari suatu variabel peluang hidup. Model Cox akan dibahas di pembelajaran selanjutnya.

Sekarang, kita akan memulai dari menjelaskan bagian dari konsep analisis survival, termasuk:

Bagaimana untuk meregenerasi dan intervasi kurva survival, dan

~ Bagaimana utuk menghitung dan memastikan perbedaan uji survival diantara dua atau tiga kelompok dari suatu pasien.

Lalu kita akan melanjutkan dengan menggambarkan analisis multivariat dengan menggunakan model hazard proporsi Cox.

2 Komponen dalam Survival

Untuk subjek \(i\):

  1. Waktu kejadian \(T_i\)

  2. Waktu sensor \(C_i\)

  3. Waktu indikator \(δ_i\):
    1 jika kejadian berobservasi (i.e. \(T_i ≤ C_i\))

~ 0 jika sensor (i.e. $T_i, C_i)

  1. Waktu observasi \(Y_i = min(T_i,C_i)\)
Waktu observasi dan indikator kejadian berdasarkan dengan data lung

Waktu: waktu survival dalam hari \((Y_i)\)

Status: status sensor 1 = ada sensor, 2 = meninggal (\(δ_i\))
Dataset lung ada di package survival didalam R. Data subjek berhubungan dengan kanker paru-paru yang sudah di advans dari Grup Perawatan Kanker Pusat Utara. Bebrapa variabel akan kita gunakan untuk mendemonstrasi dalam metode hari ini, termasuk:

Waktu: Waktu survival dalam hari

Status: status sensor, 1 = ada sensor, 2 = meninggal
Jenis Kelamin: Laki-laki = 1, Perempuan = 2
knitr::include_graphics("D:/Sem 6/Survival Model/Week 2/Gambar1.jpg")

3 Apa itu Sensor?

knitr::include_graphics("D:/Sem 6/Survival Model/Week 2/gambar2.png")

3.1 Tipe dari Sensor

Subjek dari sensor bisa berbentuk:

Kerugian dari tindak lanjut

Penarikan dari studi tersebut
Tidak ada peristiwa sampai akhir periode studi

Secara spesifik, ini merupakan contoh dari sensor yang benar.

Sensor kiri dan interval dari sensor juga sangat memungkinkan, dan metode yang ada digunakan untuk menganaisis tipe dari data ini, tapi pelatihan ini akan menjadi terbatas untuk sensor kanan.

3.2 Sensor Data Survival

knitr::include_graphics("D:/Sem 6/Survival Model/Week 2/gambar3.jpg")

Di contoh ini, bagaimana kita bisa menghitung proporsi dari siapa yang bebas dari kejadian tersebut dalam 10 tahun?

Subjek 6 dan 7 yang bebas dari kejadian tersebut dalam 10 tahun. SUbjek 2, 9 dan 10 yang ada sebelum kejadian 10 tahun tersebut. SUnjek 1, 3, 4, 5 dan 8 yang tersensor didalam sevelum 10 tahun, jadi kita tidak tahu bagaimana mereka ada di dalam kejadian atau tidak selama 10 tahun - bagaimana kita akan berkoorporasi dari subjek ini didalam estimasi kita?

3.3 Distribusi dari Tindak Lanjut

Subjek yang disensor masih menunjukkan informasi, jadi harus dimasukkan kedalam analisisnya. Distribusi dari waktu tindak lanjutannya tidak tepat, dan dapat membuat perbedaan diantara pasien sensor dan yang dengan kejadian. Waktu tindak lanjut selalu positif.

knitr::include_graphics("D:/Sem 6/Survival Model/Week 2/gambar4.jpg")

3.4 Berurusan dengan Tanggal didalam R

Data akan sering datang dengan permulaan dan pengakhiran data dibandinglan dengan perhitungan sebelum waktu survival. Langkah pertama adalah untuk memastikan bahwa ini akan terformat menjadi tanggal di R.

Ayo membuat contoh kecil dengan variabel sx_date untuk tanggal operasi dan last_fup_date untuk tindak lanjutan tanggal yang terakhir.

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 melihat karakter variabel tersebut, dimana akan sering menjadi kasusnya, tapi kita membutuhkan mereka untuk memformat tanggalnya. Jalan lain untuk memformat tanggal menggunakan R adalah:

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

Ketahuilah bahwa tidak seperti opsi R, perpisahannya tidak harus spesifik, dan lembar pertolonmgan untuk ?dmy akan menunjukkan semua format opsi.

4 Menghitung Waktu Survival

Sekarang tanggalnya sudah terformat, kita harus menghitung perbedaan diantara pengawalan dan akhiran waktu di beberapa unit, biasanya bulanan atau tahunan. Didalam R, gunakan difftime untuk menghitung jumlah dari hari diantara dua tanggal dan mengkonversikannya menjadi nilai numerik menggunakan as.numeric. Lalu konversikannya menjadi tahunan dengan dibagi menjadi 365,25, rata-rata jumlah dari hari dalam 1 tahun.

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

Menggunakan package lubridate, operasi %--% didesain untuk interval waktu, dimana akan dikonversikan menjadi nomor untuk elaps kedua menggunakan as.duration dan akhirnya konversikan menjadi tahunan dengan dibagikan dengan dyears(1), dimana akan memberikan kita nomor kedua dari tahunnya.

Kita perlu untuk memanggil package lubridate didalam library agar dapat mengakses operator spesialnya (mirop dengan situasi dengan pipa)

4.1 Indikator Peristiwa

Untuk komponen dari data survival, saya menyadari bahwa indikator peristiwanya:

Indikator peristiwa \(δ_i\):
1 jika peristiwa observasi (\(i.e. T_i ≤ C_i\))
0 jika sensor (\(i.e. T_i > C_i\))

Bagaimanapun juga, didalam R, fungsi Surv juga akan menerima BENAR/SALAH (BENAR = Peristiwa) atau 1/2 (2=Peristiwa).

Didalam data lung, kita memiliki:
status: sensor status 1 = sensor. 2 = meninggal.

4.2 Fungsi Survival

Probabilitas yang menjadi subjek akan survive diatas waktu spesifik manapun

\[S(t) = Pr(T>t) = 1-F(t)\]

S(t): fungsi survival F(t) = Pr(T ≤ t): fungsi distribusi kumulatif.

Fifalam teori fungsi survival yang halus, di latihan kita mengobservasi peristiwa didalam kurun waktu diskrit.

4.3 Probabilitas Survival

~ Probabilitas survival didalam waktu yang ditentukan, S(t), adalah kondisi probabilitas dari bertahan hidup diatas waktu itu, diberikan bahwa individu yang bertahan hidup hanya memprioritaskan ke waktunya.

Bisa menjadi estimasi nomor dari pasien yang hidup tanpa kerugian satupun di waktu tersebut, dibagi dengan nomor pasien yang hidup dengan memprioritaskan waktunya.

Estimasi Kaplan-Meier dari probabilita survival merupakan produk dari kondisi probabilitas ini, sampai dengan waktu tersebut.

Di waktu ke 0, probabilitas survivalnya adalah 1, \(i.e. S(t_0)=1\)

4.4 Membuat Objek Survival

Metode Kaplan-Meier merupakan cara yang paling sering digunakan untuk mengestimasikan waktu survial dan probabilitasnya. Ini merupakan non-parametrik yang muncul didalam langkah fungsi,dimana disana ada langkah penurunan di setiap waktu peristiwa.

Fungsi Surv dari package survival membuat objek survival untuk digunakan menjadi respon didalam model formulanya. Ini akan menjadi satu pemasukan dari masing-masing subjek yang merupakan waktu survival, dimana jika kita mengikutinya dari 1 + jika subjeknya tersensor. Ayo kita lihat di 10 observasi pertama:

library(survival)
## 
## Attaching package: 'survival'
## The following object is masked from 'package:caret':
## 
##     cluster
Surv(lung$time, lung$status)[1:10]
##  [1]  306   455  1010+  210   883  1022+  310   361   218   166

4.5 Estimasi Kurva Survival

Fungsi surfit membuat kurva survival yang didasari dengan suatu formula. Ayo meregenerasi kurva survivalnya untuk seluruh kelompoknya, dengan ditetapkan ke objek f1, dan melihat nama-nama dari objek tersebut:

f1 <- survfit(Surv(time, status) ~ 1, data = lung)
names(f1)
##  [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 komponen kata kunci dari onjek survfit akan digunakan untuk membuat kurva survival, termasuk:

time, yang berisikan titik awal dan akhir dari setiap interval waktunya

surv, yang berisikan probabilitas korespon untuk setiap time

4.6 Plot Survival Kaplan-Meier

Sekarang kita membuat plot Kaplan-Meier dengan objek survfit yang didasari dari R.

plot(survfit(Surv(time, status) ~ 1, data = lung), 
     xlab = "Days", 
     ylab = "Overall survival probability")

Secara alternatif, fungsi ggsurvplot dari package survminer dibuat di ggplot2, dan dapat digunakan untuk membuat plot Kaplan-Meier. Cek lagi cheatsheet di package survminer

library(survminer)
## Loading required package: ggpubr
## 
## Attaching package: 'ggpubr'
## The following object is masked from 'package:cowplot':
## 
##     get_legend
ggsurvplot(
    fit = survfit(Surv(time, status) ~ 1, data = lung), 
    xlab = "Days", 
    ylab = "Overall survival probability")

Plot ini menggunakan penunjuk dari ggsurvplot didalam langkah fungsi (garis solid) yang berasosiasi dengan band kepercayaan (area teduh)

~ Tanda tebal dari sensor pasien ditunjukkan secara default, sedikit kabur dalam contoh ini, dan dapat ditekan dengan mengunakan opsi sensor = SALAH.

4.7 Estimasi Survival tahun-x

Satu kuantitas yang sering dari analisis survival adalah probabilitas dari bertahan hidup diatas nomor x yg ada dari suatu tahun.

Sebagai contoh, untuk mengestimasi perobabilitas bertahan hidup untuk 1 tahun, gunakan summary dengan argumen times (ketahukah bahwa variabel time di data lung ada di harian, jadi kita perlu untuk menggunakan times = 365.25)

summary(survfit(Surv(time, status) ~ 1, data = lung), 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

Kita menemukan bahwa dalam probabilitas dari bertahan hdup dalam 1 tahun dalam studi ini sebesar 41%.

Asosiasi rendah dan atas diikat dengan 95% interval kepercayaan yang juga di tampilkan.

4.8 Probabilitas Survival tahun-x

1 tahun probabilitas survival di poin axis-y mengkoresponkan 1 tahun di axis-x dari kurva survivalnya.

knitr::include_graphics("D:/Sem 6/Survival Model/Week 2/gambar5.jpg")

Apa yang terjadi jika kamu menggunakan estimasi “naif”?

121 dari 228 pasien meninggal dalam 1 tahun, sehingga:

\[(1 - \frac {100}{228}) × 100 = 47\]

Anda mendapatkan estimasi yang tidak benar dalam probabilitas survival selama 1 tahun jika anda melewati fakta bahwa 42 pasien telah tersensor sebelum 1 tahun.

Panggil kembali estimasi yang benar dari probabilitas survival 1 tahun sebesar 41%.

4.9 Mengecek Pelewatan Sensor

Bayangkan jika dua studi, masing-masing dengan 228 subjek. Ada 165 kematian di masing" studi. Tidak ada sensor di satu gatis oranye, 63 pasien tersensor di garis biru.

Abaikan sensor yang memimpin ke estimasi over dari probabilitas survival, karena subjek yang tersensor hanya berkonstrinusi informasi untuk bagian dalam tindak lanjutan, lalu akan jatuh ke set resiku, ditarik kebawah ke probabilitas survival kumulatif

knitr::include_graphics("D:/Sem 6/Survival Model/Week 2/gambar6.jpg")

5 Mengestimasi Nilai Median Survival

Nilai lainnya yang sering dicari di pendekatan analisis survival adalah rata-rata waktu surival, dimana kita mencarinya menggunakan median. Waktu survival tidak diinginkan menjadi distribusi yang normal, jadi nilai mean tidak menggambarkan ringkasan datanya.

Kita dapat mendapatkan ini dari objek surfit kita

survfit(Surv(time, status) ~ 1, data = lung)
## Call: survfit(formula = Surv(time, status) ~ 1, data = lung)
## 
##       n  events  median 0.95LCL 0.95UCL 
##     228     165     310     285     363

Kita melihat bahwa median dari waktu survival adalah 310 hari. Batas atas dan bawah dari 95% interval kepercayaan juga ditampikan.

5.1 Waktu dan Probabilitas

Nilai median survival adalah waktu korespon ke probabilitas survival sebesar 0.5:

knitr::include_graphics("D:/Sem 6/Survival Model/Week 2/gambar7.jpg")

5.2 Akibat dari Menghindari Sensor

Apa yang terjadi jika kamu menggunakan estimasi yang “naif”? Rangkum waktu median survivalnya diantara 165 pasien yang meninggal

lung %>% 
  filter(status == 2) %>% 
  summarize(median_surv = median(time))
##   median_surv
## 1         226

Anda dapat mendapatkan estimasi yang tidak benar dengan median survival di 226 hari disaat anda menghiraukan sebuah fakta bahwa menyensorkan pasien merupakan kontribusi waktu tindak lanjut.

Ingat kembali tentang estimasi yang benar dari waktu 310 hari survival median.

Menghiraukan sensor membuat artifikal kurva survival kebawah karena mengulang kembali waktu yang mensensorkan pasien tidak berkontribusi apa-apa.

Kurva survival untuk data lung ditunjukan dengan perbandingan warna biru.

knitr::include_graphics("D:/Sem 6/Survival Model/Week 2/gambar8.jpg")

6 Membandingkan Waktu Survival

Kita dapat melakukan uji signifikansi antar kelompok menggunakan uji log-rank.

Tes log-rank sama dengan 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).

Kita mendapatkan nilai p-value dari log-rank menggunakan fungsi survdiff. Sebagai contoh, kita dapat menguji apakah ada perbedaan waktu bertahan hidup menurut jenis kelamin didalam data lung.

survdiff(Surv(time, status) ~ sex, 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

7 Mengekstrak Informasi

Ini agak merepotkan untuk mengekstrak nilai p dari hasil survdiff. Ini adlaah garis kode untuk melakukannya

sd <- survdiff(Surv(time, status) ~ sex, data = lung)
1 - pchisq(sd$chisq, length(sd$n) - 1)
## [1] 0.001311165
ezfun::sdp(sd)
## [1] 0.001

8 Model Regresi Cox

Kita mungkin ingin untuk menghitung efek ukuran untuk satu variabel, atau memasukkan lebih dari satu variabel kedalam model regresi untuk mengakunkan efek dari beberapa variabel.

Model regresi Cox adalah model semi parametrik yang dapt digunakan untuk menyesuaikan regresi multivariabel dan regresi tidak variabel yang memiliki hasil survival.

\[h(t|X_i) = h_o(t)exp(β_1X_{i1} + ... + B_pX_{ip})\]

h(t):hazard, atau tingkat sesaat disuatu peristiwa sedang terjadi \(h_0 (t)\): menggaris bawahi garis utama hazard

Beberapa kunci asumsi dari modelnya:
Sensor yang tidak informatif

~ Proporsional hazard

Ingat: model parameter regresi untuk survival keluar juga luang, tapi mereka tidak di catat di pelatihan ini

Kita dapat memuatkan model data survival menggunakan fungsi coxph, yang mengambil objek Surv di sebelah kiri dan memiliki standar syntaks untuk formula regresi di R di sisi sebelah kanan.

coxph(Surv(time, status) ~ sex, data = lung)
## 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

9 Memformat Regresi Cox

Kita dapat melihat versi tidy dari data yg keluar menggunakan fungsi tidy dari package broom

library(kableExtra)
broom::tidy(
  coxph(Surv(time, status) ~ sex, data = lung), 
  exp = TRUE
  ) %>% 
  kable()
term estimate std.error statistic p.value
sex 0.5880028 0.1671786 -3.176385 0.0014912

Atau mengunakan tbl_regression dari package gtsummary

knitr::include_graphics("D:/Sem 6/Survival Model/Week 2/gambar9.jpg")

10 Rasio Hazard

Kuantitas dari suatu ketertarikan model regresi Cox adalah rasio hazard (HR). HR mewakili rasio hazard diantara dua kelompok di titik waktu apapun.

HR diartikan sebagai kejadian sesaat dari suatu kejadian yang menarik bagi mereka yang masih beresiko untuk suatu kejadian tersebut, meskipun secara umum ditafsirkan seperti itu.

Jika anda memioliki regreso parameter \(β\) (dari estimasi kolom di coxph kita) lalu \(HR = exp(β)\).

HR < 1 mengidikasi pengurangan hazard kematian sedangkan HR > 1 mengidikasi peningkatan hazard kematian.

Jadi HR = 0,59 menyimpulkan bahwa sekitar 0,6 kali lebih banyak wanita yang sekarat sampai meninggal dibanding laki-laki pada waktu apapun.

WEEK 2

Analisis Landmarj dan Kovariat Waktu Dependen

11 Kata Pengantar

Di bagian pertama, kita melindungi dengan menggunakan uji log-rank dan regresi Cox untuk menemukan hasil asosiasinya diantara kovariasi dari ketertarikannya dan hasil survival. Tapi analisis ini hanya bergantung kepada kovariasi yang dihitung dari garis utamanya, itu dia, sebelum mengikuti kembali waktu dari kejadian dimulai atau terjadi. Apa yang terjadi jika anda tertarik kedalam kovariasi yang dihitung setelah waktu tindak lanjutannya dimulai?

12 Contoh: Respon Tumor

Contoh: Bagaimanapun juga, besarnya survival dihitung sejak pengobatan dimulai, dan ketertarikan kedalam asosiasi diantara respon lengkap untuk pengobatan dan survival.

Anderson et al(JCO, 1983) menjelaskan kenapa metode tradisional seperti uji log-rank atau regresi Cox dibias dengan tujuan dari responder di skenario ini dan ditujukan ke pendekatan landmark.

Hipotesis nol di pendekatan landmark merupakan survival dari landmark yang tidak bergantung kepada status respon dari landmark tersebut.

Referensi: Anderson, J., Cain, K., & Gelber, R. (1983). Analysis of survival by tumor response. Journal of Clinical Oncology : Official Journal of the American Society of Clinical Oncology, 1(11), 710-9.

13 Contoh Lainnya

Beberapa kovariasi lain yang mungkin menarik dalam penelitian kanker yang mungkin tidak dihitung dari garis utama termasuk:

Kegagalan Transplantasi

~ Penyakit Graft yang Melawan Pengidapnya

~ Reseksi kedua

~ Terapi Adjuvan

~ Pemenuhan Peristiwa Buruk

14 Contoh Dataset BMT

Data dari 137 pasien transplantasi sumsung tulang belakang (dari package SemiCompRisk). Variabel ketertarikanya termasuk:

T1 waktu (dalam hari) kematian atau terakhir dilakukannya tindak lanjut.

delta1 indikator kematian, 1-Meninggal, 0-Hidup

TA waktu (dalam hari) untuk penyakit graft akut yang melawan pengidap

deltaA indikator penyakit graft akut yang melawan pengidap, 1- Pengembangan penyakit graft akut yang melawan pengidap, 0- tidak ada pengembangan penyakit graft akut yang melawan pengidap

Mari kita memanggil lagi datanya untuk digunakan sebagai contoh:

library(SemiCompRisks)                               # library for data set
## Loading required package: MASS
## 
## Attaching package: 'MASS'
## The following object is masked from 'package:formattable':
## 
##     area
## The following object is masked from 'package:plotly':
## 
##     select
## The following object is masked from 'package:dplyr':
## 
##     select
## Loading required package: Formula
library(DT)                                          # use for datatable fuction 
data(BMT, package = "SemiCompRisks")
datatable(BMT)

15 Metode Landmark

  1. Pilih waktu yang pasti setelah garis utama yang ada adi waktu landmark anda, Perhatikan: ini harus terselesaikan yang didasari dengan informasi klinik, inspeksi data diutamakan

  2. Subset populasi dari keterangan tersebut setidaknya sampai waktu landmark. Perhatikan: selalu melaporlan nomor diluar kejadian atau mensensor waktu landmark diutamakan.

  3. Hitung kejadian tindak lanjut dari waktu landmark dan cantumkan uji tradisional log-rank atau regresi Cox

Didalam data BMT ketertarikan ada didalam asosiasi diantara penyakit graft akut yang melawan pengidap (aGVHD) dan survival. Tapi aGVHD di asisi setelah transplantasi dilakukan, dimana di garis utama kita, atau pemulaian tindak lanjut, waktu.

Langkah 1 Pemilihan waktu landmark

Biasanya aGVHD terjadi dalam 90 hari pertama setelah transplantasi, jadi kita menggunakan penanda 90 hari.

Ketertarikan adalah pada hubungan antara penyakit graft akut yang melawan pengidap (aGVHD) dan survival. Tapi aGVHD dinilai setelah transplantasi, yang merupakan waktu dasar kami, atau dimulainya tindak lanjut.

Langkah 2 Subset popilasi ntuk mereka yang mengikuti setidaknya sampai waktu landmark

lm_dat <- 
  BMT %>% 
  filter(T1 >= 90) 

Ini mengurasngi besarnya sampel kita dari 137 ke 122.

Semua 15 pasien yang dikeluarkan sebelum 90 hari landmark

Keterkatikan adalah asosiasi diantara penyakit graft akut melawan pengidapnya (aGVHD) dan survival.

Tapi aGVHD dinilai setelah terlakukannya transplantasi, yang merupakan garis utama kita atau permulaian tindak lanjut.

Langkah 3 Hitung waktu tindak lanjut dari landmark dan tetapkan metode tradisional.

lm_dat <- 
  lm_dat %>% 
  mutate(lm_T1 = T1 - 90)

lm_fit <- survfit(Surv(lm_T1, delta1) ~ deltaA, data = lm_dat)
require(survminer)
ggsurvplot(
  fit = lm_fit, 
  data = lm_dat,
  xlab = "Days from 90-day landmark",
  risk.table = T,
  risk.table.y.text = T,
  pval = TRUE
)
## Warning: Vectorized input to `element_text()` is not officially supported.
## Results may be unexpected or may change in future versions of ggplot2.

16 Regresi Cox

Dalam tujuan untuk menetapkan regresi Cox yang menggunakan data BMT, anda dapat menggunakan opsi subset didalam coxph untuk pengeluaran pasien tersebut yang tidak mengikuti waktu landmark.

knitr::include_graphics("D:/Sem 6/Survival Model/Week 2/gambar10.jpg")

17 Waktu dependen Cov

Cara alternatif untuk analisis landmark adalah penggabungan dari waktu dependen kovariat. Ini mungkin akan menjadi lebih tepat disaat:

Nilai kovariat berubah seiring waktu

~ Tidak ada waktu landmark yang jelas

~ Penggunaan landmark akan menyebabkan banyak pengecualian terjadi

18 Pengaturan Waktu Dependen Cov

Analisi dari waktu dependen covariat di dalam R memerlukan pengaturan dari dataset yang spesial. Lihat jika detail dari kertas ini dari penulis package survival https://cran.r-project.org/web/packages/survival/vignettes/timedep.pdf

Tidak ada ID yang tersedia didalam data BMT, dimana diperlukan untuk membuat dataset yang spesial, jadi buatlah satu yng dinamakan my_id.

bmt <- rowid_to_column(BMT, "my_id")

Gunakan fungsi tmerge dengan opsi fungsi event dan tdc untuk membuat dataset yang spesial.

tmerge membuat dataset yang panjang dengan banyak interval waktu dari kovariat yang berbeda nilainya untuk masing-masing pasien

event membuat kejadian baru dengan indikator terbaru yang dibuat interval waktu

tdc membuat indikator kovariat independen waktu yang akan digunakan dengan waktu interval yang terbaru

19 Contoh Satu Pasien

Untuk melihat bagaimana ini dilakukan, mari melihat kearah data untuk 5 orang pasien pertama.

20 Waktu Dependen dan Reg Cox

Sekarang kita dapat menganalisis kovariat waktu dependen ini seperti yang biasa dilakukan regresi Cox dengan coxph dan perubahan yang kita gunakan dari Surv untuk memasukkan argumen ke kedua time dan time2

knitr::include_graphics("D:/Sem 6/Survival Model/Week 2/gambar11.jpg")

21 Kesimpulan

Kita menemukan bahwa penyakit graft akut yang melawan pengidapnya tidak signifikan berasosiasi dengan kematian yang mengunakan analisis landmark atau kovariat waktu dependen.

Sering sekali satu akan mau untuk menggunakan analisis landmark untuk memvisualisasikan covariat tungal, dan regresi Cox dengan kovariat waktu dependen untuk pemodelan univariabel dan multivariabel.