Bagaimana cara mensimulasikan hasil multivariat dalam R?

10

Sebagian besar situasi, kami hanya berurusan dengan satu variabel hasil / respons seperti . Namun, dalam beberapa skenario, terutama dalam data klinis, variabel hasil dapat berupa dimensi tinggi / multivariat. Seperti Y = β x + ϵ , di mana Y berisi variabel Y 1 , Y 2 dan Y 3 dan hasil ini semuanya berkorelasi. Jika x menunjukkan menerima pengobatan (ya / tidak), bagaimana saya bisa mensimulasikan data tipe ini dalam R?y=a+bx+ϵY=βx+ϵYY1Y2Y3x

Contoh kehidupan nyata, setiap pasien menerima satu dari 2 jenis operasi bypass dan peneliti mengukur setiap pasien pada rasa sakit, bengkak, kelelahan ... dll setelah operasi bypass (setiap tingkat gejala dari 0 hingga 10). Saya "berasumsi" hasil (keparahan gejala) adalah multivariat normal. Semoga contoh nyata ini dapat menjelaskan pertanyaan saya. Banyak terima kasih sebelumnya.

Tu.2
sumber
Apa distribusi yang memiliki? Jika multivariannya normal, lihatlah pustaka mnormt di R.Y
Macro
Pertanyaan ini agak luas karena "data multivarian" mencakup banyak landasan. Aplikasi spesifik apa yang Anda pikirkan?
whuber
Saya hanya menambahkan contoh nyata, yang seharusnya membantu. terima kasih
Tu.2

Jawaban:

9

Mensimulasikan nilai normal multivarian dengan mvtnorm::rmvnorm. Tampaknya tidak bekerja seperti generator angka acak univariat, yang memungkinkan Anda menentukan vektor parameter, tetapi batasan ini mudah untuk dikerjakan.

Sebagai contoh, perhatikan modelnya

E(y1,y2,y3)=(1+x,2x,13x)

yVar(yi)=1Cov(y1,y2)=Cov(y2,y3)=0.5Cov(y1,y3)=0

sigma <- matrix(c(1,   0.5, 0,  
                  0.5, 1,   0.5,
                  0,   0.5, 1  ), 3, 3)

x110

data <- cbind(rep(1,10*3), rep(1:10,3))

Model menentukan sarana:

beta <- matrix(c(-1,1,  0,2,  1,-3), 2, 3)
means <- data %*% beta

Solusi untuk menghasilkan beberapa hasil multivarian adalah dengan menggunakan apply:

library(mvtnorm) # Contains rmvnorm
sample <- t(apply(means, 1, function(m) rmvnorm(1, mean=m, sigma=sigma)))
whuber
sumber
2

Jaringan Bayesian (BNs) umumnya digunakan dalam konteks yang Anda gambarkan. Sebagai model generatif , BN akan memungkinkan Anda untuk mewakili dependensi statistik antara variabel domain Anda, yang dalam kasus Anda dapat dikelompokkan menjadi 1) pra-perawatan, 2) perawatan, dan 3) variabel pasca-perawatan. Anda dapat melatih model Anda pada data pasien yang ada, dan kemudian memasukkan bukti (mengisi nilai yang diamati) untuk pasien tertentu untuk menyelidiki bagaimana nilai yang diamati mempengaruhi variabel lain (termasuk yang Anda beri label sebagai hasil, yaitu pasca perawatan.)

Salah satu trik yang rapi adalah Anda dapat benar-benar menilai efek dari berbagai jenis perawatan pada variabel hasil Anda. Ini disebut intervensi . Jika tertarik, kami memiliki makalah yang relevan di sini .

Zhubarb
sumber