如何在R中模拟多元结果?


10

在大多数情况下,我们只处理一个结果/响应变量,例如 y=a+bx+ϵ。但是,在某些情况下,尤其是在临床数据中,结果变量可能是高维/多元变量。如Y=βx+ϵ,在哪里 Y 包含 Y1Y2Y3变量与这些结果都相关。如果x 代表正在接受治疗(是/否),如何在R中模拟此类数据?

一个真实的例子,每个患者接受两种类型的搭桥手术中的一种,研究人员在搭桥手术后对每个患者进行疼痛,肿胀,疲劳等测量(每个症状的发生率从0到10)。我“假设”结局(症状严重程度)是多元正常的。希望这个真实的例子可以澄清我的问题。提前谢谢了。


什么分布 ÿ有?如果它是多元正态分布,看看在河的mnormt库

这个问题相当广泛,因为“多元数据”涵盖了很多领域。您打算使用什么特定的应用程序?
ub

我只是添加一个真实的示例,这应该会有所帮助。谢谢
2012年

Answers:


9

用来模拟多元正态值mvtnorm::rmvnorm。它似乎不太像单变量随机数生成器那样工作,后者可以让您指定参数向量,但是这种限制很容易解决。

例如,考虑模型

Ëÿ1个ÿ2ÿ3=-1个+X2X1个-3X

哪里 ÿ 具有多元正态分布 Varÿ一世=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)

为了进行实验,让我们为该模型生成一些数据 X 不同于 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)后处理变量。您可以在现有患者数据上训练模型,然后输入特定患者的证据(填写观察值)以调查观察值如何影响其他变量(包括那些标记为结果的变量,即治疗后的变量)。

一个巧妙的技巧是,您实际上可以评估不同治疗类型对结果变量的影响。这称为干预。如果有兴趣,我们在这里有一篇相关的论文。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.