Saya mencoba membandingkan kurva kelangsungan hidup untuk tiga kelompok pada data pada gambar berikut: masukkan deskripsi gambar di sini

Pertama-tama, saya menjalankan kode berikut untuk mendefinisikan data:

time_Untreated<- c(20, 21, 23, 24, 24, 26, 26, 27, 28, 30)

censor_Untreated<- c(rep(1,10), rep(0,0)) censor_Untreated

time_Radiated<- c(26,28, 29, 29, 30, 30, 31, 31, 32, 35) censor_Radiated<- c(rep(1,9), rep(0,1)) censor_Radiated

time_Radiated_BPA<- c(31, 32, 34, 35, 36, 38, 38, 39, 42, 42) censor_Radiated_BPA<- c(rep(1,8), rep(0,2)) censor_Radiated_BPA

Kemudian, saya mencoba menggabungkan 3 grup dalam satu kode sehingga saya dapat membandingkan kurva kelangsungan hidup dari 3 grup. Saya menggunakan kode berikut:

library(KMsurv)

library(survival) library(coin)

KM.fit.Untreated<-survfit(Surv(time_Untreated,censor_Untreated)~1, conf.type="none") plot(KM.fit.Untreated,lty =1:3, lwd=c(3,3,3), col=c(1,4,10), xlab="U", ylab = "Survival") legend(1500, 0.95, c("g = 1, Untreated", "g = 2, Radiated", "g=3, BPA"), lty=1:3, lwd=c(3,3,3),col = c(1,4,10))

KM.fit.Radiated<-survfit(Surv(time_Radiated,censor_Radiated)~1, conf.type="none") plot(KM.fit.Radiated,lty =1:3, lwd=c(3,3,3), col=c(1,4,10), xlab="R", ylab = "Survival") legend(1500, 0.95, c("g = 1, Untreated", "g = 2, Radiated", "g=3, BPA"), lty=1:3, lwd=c(3,3,3),col = c(1,4,10))

KM.fit.Radiated_BPA<-survfit(Surv(time_Radiated_BPA,censor_Radiated_BPA)~1, conf.type="none") plot(KM.fit.Radiated_BPA,lty =1:3, lwd=c(3,3,3), col=c(1,4,10), xlab="B", ylab = "Survival") legend(1500, 0.95, c("g = 1, Untreated", "g = 2, Radiated", "g=3, BPA"), lty=1:3, lwd=c(3,3,3),col = c(1,4,10))

##logrank using the formulas## test.Untreated<-survdiff(Surv(time_Untreated,censor_Untreated)~1) test.Untreated

test.Radiated<-survdiff(Surv(time_Radiated,censor_Radiated)~1) test.Radiated

test.Radiated_BPA<-survdiff(Surv(time_Radiated_BPA,censor_Radiated_BPA)~1) test.Radiated_BPA

Masalahnya adalah saya mendapatkan pesan kesalahan ketika saya menjalankan kode terakhir (logrank menggunakan rumus), yaitu Error in survdiff(Surv(time_Untreated, censor_Untreated) ~ 1) : Tidak ada grup untuk diuji

Apa cara yang tepat untuk melakukan ini?

r
1
Heidi 15 Maret 2020, 06:38

1 menjawab

Jawaban Terbaik

Anda perlu mengatur data dalam format panjang, seperti ini:

myData <- data.frame(time=c(time_Untreated, time_Radiated, time_Radiated_BPA),
                     status=c(censor_Untreated, censor_Radiated, censor_Radiated_BPA),
                     group= rep(1:3, each=10))
str(myData)
'data.frame':   30 obs. of  3 variables:
 $ time  : num  20 21 23 24 24 26 26 27 28 30 ...
 $ status: num  1 1 1 1 1 1 1 1 1 1 ...
 $ group : int  1 1 1 1 1 1 1 1 1 1 ...

survdiff(Surv(time, status)~group, data=myData)

Call:
survdiff(formula = Surv(time, status) ~ group, data = myData)

         N Observed Expected (O-E)^2/E (O-E)^2/V
group=1 10       10     2.66    20.300    27.365
group=2 10        9     7.60     0.258     0.431
group=3 10        8    16.74     4.566    16.587

 Chisq= 33.4  on 2 degrees of freedom, p= 6e-08

KM.fit <- survfit(Surv(time,status)~group, data=myData, conf.type="none")

cols <- c(1,4,10)
plot(KM.fit, lty=1:3, lwd=3, col=cols, xlab="U", ylab = "Survival")
legend('bottomleft', c("g = 1, Untreated", "g = 2, Radiated", "g=3, BPA"), lty=1:3, lwd=3, col = cols, bty="n")

Jika saya telah mengganti nilai status, ubah saja saat Anda membuat vektor. Sebagai contoh,

censor_Untreated <- c(rep(0,10), rep(1,0))

Karena biasanya hasil dalam analisis kelangsungan hidup adalah peristiwa yang dikodekan sebagai 1. 0 berarti disensor. R memungkinkan tiga versi berbeda. 0/1, 1/2, atau SALAH/BENAR. Lihat halaman bantuan Surv.

1
Edward 15 Maret 2020, 07:13