Cara menghasilkan data survival dengan kovariat bergantung waktu menggunakan R


9

Saya ingin menghasilkan waktu bertahan hidup dari model bahaya proporsional Cox yang mengandung kovariat tergantung waktu. Modelnya adalah

h(t|Xi)=h0(t)exp(γXi+αmi(t))

di mana dihasilkan dari Binomial (1,0.5) dan .m i ( t ) = β 0 + β 1 X i + β 2 X i tXimi(t)=β0+β1Xi+β2Xit

Nilai parameter sebenarnya digunakan sebagaiγ=1.5,β0=0,β1=1,β2=1.5,h0(t)=1

Untuk kovariat independen waktu (yaitu saya membuat sebagai berikuth(t|Xi)=h0(t)exp(γXi)

#For time independent case
# h_0(t) = 1
gamma <- -1
u <- runif(n=100,min=0,max=1)
Xi <- rbinom(n=100,size=1,prob=0.5)
T <- -log(u)/exp(gamma*Xi)

Adakah yang bisa membantu saya menghasilkan data survival dengan kovariat yang bervariasi waktu.


Fungsi macam apa itu ? Apakah ini berkelanjutan? Terus-menerus konstan? Algoritma yang berbeda mungkin akan diperlukan sesuai. mi(t)
tristan

mi(t) adalah kovariat bergantung waktu, untuk kesederhanaan Anda dapat mempertimbangkan hubungan proporsional dengan waktu.
Sheikh

Saya telah mengedit pertanyaan saya, mengingat fungsimi(t)
Sheikh

bagaimana Anda melakukan kode R dari persamaan di atas? berarti bahwa Pada setiap waktu kematian dalam id yang sama program perlu mencari tahu apa kovariat untuk semua orang yang x sama dengan 1 atau 0. jika semua sama dengan 1 cumsum bahaya. setelah itu hitung fungsi survival. memungkinkannya memilih garis yang tepat untuk setiap subjek.
Qas Amell

Seperti yang ditunjukkan Z. Zhang, lihat artikel ini . Lebih lanjut, Anda dapat melihat jawaban saya untuk pertanyaannya di mana saya menunjukkan bagaimana mensimulasikan untuk mereka yang berada dalam kelompok dalam R.Xi=1
Benjamin Christoffersen

Jawaban:


9

OK dari kode R Anda mengasumsikan distribusi eksponensial (bahaya konstan) untuk bahaya baseline Anda. Karena itu fungsi bahaya Anda:

h(tXi)={exp(αβ0)if Xi=0,exp(γ+α(β0+β1+β2t))if Xi=1.

Kami kemudian mengintegrasikan ini sehubungan dengan untuk mendapatkan fungsi bahaya kumulatif:t

Λ(tXi)={texp(αβ0)if Xi=0,0texp(γ+α(β0+β1+β2τ))dτif Xi=1.={texp(αβ0)if Xi=0,exp(γ+α(β0+β1))1αβ2(exp(αβ2t)1)if Xi=1.

Ini kemudian memberi kita fungsi bertahan hidup:

S(t)=exp(Λ(t))={exp(texp(αβ0))if Xi=0,exp(exp(γ+α(β0+β1))1αβ2(exp(αβ2t)1))if Xi=1.

Anda kemudian menghasilkan dengan mengambil sampel dan , menggantikan untuk dan menyusun ulang rumus yang sesuai (berdasarkan ) untuk mensimulasikan . Aljabar ini harus langsung Anda dapat kode di R tetapi tolong beri tahu saya dengan komentar jika Anda memerlukan bantuan lebih lanjut. U U n i f o r m ( 0 , 1 ) U S ( t ) X i tXiUUniform(0,1)US(t)Xit


1
Terima kasih banyak untuk aljabarnya. Saya akan membuat kode dalam R dan akan menghubungi Anda untuk bantuan lebih lanjut.
Sheikh

jawaban yang sempurna, @tristan. Saya punya pertanyaan serupa dan menemukan jawaban Anda. Menakjubkan.
Sam

@tristan Saya agak bingung tentang arti alfa dalam persamaan pertama yang Anda berikan di mana Xi = 0. Bisakah Anda sedikit memperluas tentang itu? Terima kasih.
Statwonk

1
@Statwonk mengikuti persamaan tingkat bahaya yang disediakan oleh poster asli
tristan

Maaf, tapi saya tidak yakin bagaimana menggunakan fungsi S (t) untuk mensimulasikan waktu. Saya pikir Anda harus menghitung S ^ {- 1} dan fungsi ini tidak sepele untuk kasus X_i = 1.
Pmc
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.