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(t∣Xi)={exp⁡(αβ0)if Xi=0,exp⁡(γ+α(β0+β1+β2t))if Xi=1.

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

Λ(t∣Xi)={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 tXiU∼Uniform(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.