大多数情况下,我们只处理一个结果/响应变量,例如。然而,在某些情况下,特别是在临床数据中,结果变量可能是高维/多变量的。例如,其中包含、和变量,这些结果都是相关的。如果代表接受治疗(是/否),我如何在 R 中模拟这种类型的数据?
一个现实生活中的例子,每位患者接受两种类型的搭桥手术中的一种,研究人员在搭桥手术后测量每位患者的疼痛、肿胀、疲劳等(每种症状的比率从 0 到 10)。我“假设”结果(症状严重程度)是多元正常的。希望这个真实的例子可以澄清我的问题。提前谢谢了。
大多数情况下,我们只处理一个结果/响应变量,例如。然而,在某些情况下,特别是在临床数据中,结果变量可能是高维/多变量的。例如,其中包含、和变量,这些结果都是相关的。如果代表接受治疗(是/否),我如何在 R 中模拟这种类型的数据?
一个现实生活中的例子,每位患者接受两种类型的搭桥手术中的一种,研究人员在搭桥手术后测量每位患者的疼痛、肿胀、疲劳等(每种症状的比率从 0 到 10)。我“假设”结果(症状严重程度)是多元正常的。希望这个真实的例子可以澄清我的问题。提前谢谢了。
用 模拟多元正态值mvtnorm::rmvnorm
。它似乎不像单变量随机数生成器那样工作,它允许您指定参数向量,但这个限制很容易解决。
例如,考虑模型
其中具有多元正态分布和,和。让我们在 R 中指定这个协方差矩阵:
sigma <- matrix(c(1, 0.5, 0,
0.5, 1, 0.5,
0, 0.5, 1 ), 3, 3)
为了进行实验,让我们通过让从到变化来为这个模型生成一些数据,每次重复 3 次。我们也必须包括常数项:
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)))