Làm thế nào để mô phỏng kết quả đa biến trong R?


10

Hầu hết các tình huống, chúng tôi chỉ xử lý một biến kết quả / phản hồi, chẳng hạn như . Tuy nhiên, trong một số tình huống, đặc biệt là trong dữ liệu lâm sàng, các biến kết cục có thể là đa chiều / đa biến. Chẳng hạn như , trong đó \ mathsf {Y} chứa các biến Y_1 , Y_2Y_3 và các kết quả này đều tương quan với nhau. Nếu x đại diện cho việc điều trị (có / không), làm thế nào tôi có thể mô phỏng loại dữ liệu này trong R?Y = β x + ϵ Yy=a+bx+ϵY=βx+ϵYY 2 Y 3 xY1Y2Y3x

Một ví dụ thực tế, mỗi bệnh nhân nhận được một trong 2 loại phẫu thuật bắc cầu và các nhà nghiên cứu đo từng bệnh nhân về đau, sưng, mệt mỏi ... vv sau phẫu thuật bắc cầu (mỗi tỷ lệ triệu chứng từ 0 đến 10). Tôi "giả sử" kết quả (mức độ nghiêm trọng của triệu chứng) là đa biến bình thường. Hy vọng ví dụ thực tế này có thể làm rõ câu hỏi của tôi. Rất cám ơn trước.


Y có phân phối gì ? Nếu nó đa biến bình thường, hãy xem thư viện mnormt trong R.
Macro

Câu hỏi này khá rộng vì "dữ liệu đa biến" bao gồm rất nhiều nền tảng. Bạn có ứng dụng cụ thể nào trong đầu?
whuber

Tôi chỉ thêm một ví dụ thực tế, sẽ hữu ích. cảm ơn
Tu.2

Câu trả lời:


9

Mô phỏng các giá trị thông thường đa biến với mvtnorm::rmvnorm. Nó dường như không hoạt động khá giống như các trình tạo số ngẫu nhiên đơn biến, cho phép bạn chỉ định các vectơ tham số, nhưng giới hạn này rất đơn giản để làm việc xung quanh.

Ví dụ, hãy xem xét mô hình

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

trong đó có phân phối chuẩn nhiều biến và , và . Hãy xác định ma trận hiệp phương sai này trong R: Var ( y i ) = 1 Cov ( y 1 , y 2 ) = Cov ( y 2 , y 3 ) = 0,5 Cov ( y 1 , y 3 ) = 0yVar(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)

Để thử nghiệm, hãy tạo một số dữ liệu cho mô hình này bằng cách cho thay đổi từ đến , với ba lần lặp lại mỗi lần. Chúng tôi cũng phải bao gồm các điều khoản không đổi:1 10x110

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

Mô hình xác định các phương tiện:

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

Cách giải quyết để tạo nhiều kết quả đa biến là sử dụng apply:

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

2

Mạng Bayes (BN) thường được sử dụng trong bối cảnh bạn mô tả. Là một mô hình tổng quát, BN sẽ cho phép bạn biểu thị các phụ thuộc thống kê giữa các biến miền của bạn, trong trường hợp của bạn có thể được phân nhóm thành 1) tiền xử lý, 2) điều trị và 3) biến sau xử lý. Bạn có thể huấn luyện mô hình của mình trên dữ liệu bệnh nhân hiện có và sau đó nhập bằng chứng (điền vào các giá trị quan sát) cho một bệnh nhân cụ thể để điều tra làm thế nào các giá trị quan sát ảnh hưởng đến các biến khác (bao gồm cả các biến bạn dán nhãn là kết quả, tức là sau điều trị).

Một mẹo nhỏ là bạn thực sự có thể khẳng định hiệu quả của các loại điều trị khác nhau đối với các biến số kết quả của bạn. Điều này được gọi là can thiệp . Nếu quan tâm, chúng tôi có một bài báo liên quan ở đây .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.