Как моделировать многовариантные результаты в R?

10

В большинстве случаев мы имеем дело только с одной переменной результат / ответ, такой как . Однако в некоторых сценариях, особенно в клинических данных, переменные результата могут быть многомерными / многомерными. Например, , где содержит переменные , и и все эти результаты коррелированы. Если обозначает получение лечения (да / нет), как я могу смоделировать этот тип данных в R?Y = β x + ϵ Y Y 1 Y 2 Y 3 xYзнак равноa+бИкс+εYзнак равноβИкс+εYY1Y2Y3Икс

Пример из реальной жизни, каждый пациент получает один из двух типов операций шунтирования, и исследователи измеряют каждого пациента на боль, отек, усталость и т. Д. После операции шунтирования (каждый симптом оценивается от 0 до 10). Я «предполагаю», что результаты (тяжесть симптомов) являются многомерными нормальными. Надеюсь, этот реальный пример может прояснить мой вопрос. Спасибо заранее.

Tu.2
источник
Какое распределение имеет? Если это многовариантно нормально, взгляните на библиотеку mnormt в R.Y
Macro
Этот вопрос довольно широк, потому что «многомерные данные» охватывают много вопросов. Какое конкретное приложение вы имеете в виду?
whuber
Я просто добавлю реальный пример, который должен быть полезным. спасибо
Ту.2

Ответы:

9

Имитация многомерных нормальных значений с mvtnorm::rmvnorm. Похоже, что он работает не совсем так, как однофакторные генераторы случайных чисел, которые позволяют указывать векторы параметров, но это ограничение легко обойти.

Например, рассмотрим модель

Е(Y1,Y2,Y3)знак равно(-1+Икс,2Икс,1-3Икс)

YVar(Yя)знак равно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)

Икс110

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)))
Whuber
источник
2

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

Одна хитрость в том, что вы действительно можете оценить влияние различных типов лечения на ваши исходные переменные. Это называется вмешательством . Если интересно, у нас есть соответствующий документ здесь .

Zhubarb
источник