Як моделювати багатоваріантні результати в R?


10

У більшості ситуацій ми маємо справу лише з однією змінною результату / відповіді, такою як . Однак у деяких сценаріях, особливо у клінічних даних, змінні результату можуть бути високомірними / багатоваріантними. Такі , як , де містить , і змінних і ці результати все корельовані. Якщо являє собою лікування (так / ні), як я змоделював цей тип даних у R?у=а+бх+ϵY=βх+ϵYY1Y2Y3х

Приклад із реального життя: кожен пацієнт отримує один з двох типів шунтування та дослідники вимірюють кожного пацієнта щодо болю, набряку, втоми ... тощо після обхідної операції (кожен симптом становить від 0 до 10). Я припускаю, що результати (вираженість симптомів) є багатоваріантними нормальними. Сподіваюся, цей реальний приклад може прояснити моє питання. Заздалегідь дякую.


Який розподіл має ? Якщо це нормально багатоваріантно, погляньте на бібліотеку mnormt в Р.Y
Макрос

Це питання досить широке, оскільки "багатовимірні дані" охоплюють багато підстав. Яку конкретну програму ви маєте на увазі?
whuber

Я просто додаю реальний приклад, який повинен бути корисним. дякую
вт.2,

Відповіді:


9

Моделюйте багатоваріантні нормальні значення за допомогою mvtnorm::rmvnorm. Схоже, це не так, як уніваріантні генератори випадкових чисел, які дозволяють задавати вектори параметрів, але це обмеження неможливо обійти.

Наприклад, розглянемо модель

Е(у1,у2,у3)=(-1+х,2х,1-3х)

де має багатоваріантний нормальний розподіл іуВар(уi)=1, Ков(у1,у2)=Ков(у2,у3)=0,5, і Ков(у1,у3)=0. Давайте задамо цю коваріаційну матрицю в R:

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

Для експерименту давайте генеруємо деякі дані для цієї моделі, дозволяючи х відрізняються від 1 наскрізь 10, з трьома повторами щоразу. Ми також повинні включати постійні умови:

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

Модель визначає засоби:

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

Принциповим методом для отримання декількох багатоваріантних результатів є використання apply:

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

2

Байєсівські мережі (BN) зазвичай використовуються в описаному вами контексті. В якості генеративної моделі , BN дозволить представити статистичні залежності між змінними вашого домену, які у вашому випадку можуть бути підгрупповані як 1) змінні попереднього лікування, 2) лікування та 3) змінні після обробки. Ви можете навчити свою модель на наявних даних про пацієнта, а потім ввести докази (заповнити спостережувані значення) для конкретного пацієнта, щоб дослідити, як спостережувані значення впливають на інші змінні (включаючи ті, які ви позначені як результат, тобто після лікування.)

Один акуратний трюк полягає в тому, що ви можете фактично оцінити вплив різних типів лікування на змінні результатів. Це називається втручанням . Якщо цікаво, у нас є відповідний документ тут .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.