本文介绍了相关伯努利数据的模拟的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想模拟有5列的100个数据。我想要得到列之间的相关性为0.5。为了完成它,我执行了以下操作
F1 <- matrix( c(1, .5, .5, .5,.5,
.5, 1, .5, .5,.5,
.5, .5, 1, .5,.5,
.5, .5, .5, 1,.5,
.5, .5, .5, .5,1
), 5,5)
为了模拟预期的数据框,我执行了此操作,但它不能正常工作。
df2 <- as.data.frame (rbinom(100, 1,.5),ncol(5), F1)
推荐答案
我很惊讶这不是重复的(this question专门指非二元响应,即带有N>;1的二项式)。bindata package执行您想要的操作。
library(bindata)
## set up correlation matrix (compound-symmetric with rho=0.5)
m <- matrix(0.5,5,5)
diag(m) <- 1
模拟平均值为0.5(如您的示例所示):
set.seed(101)
## this simulates 10 rather than 100 realizations
## (I didn't read your question carefully enough)
## but it's easy to change
r <- rmvbin(n=10, margprob=rep(0.5,5), bincorr=m)
round(cor(r),2)
结果
1.00 0.22 0.80 0.05 0.22
0.22 1.00 0.00 0.65 1.00
0.80 0.00 1.00 -0.09 0.00
0.05 0.65 -0.09 1.00 0.65
0.22 1.00 0.00 0.65 1.00
- 这看起来是错误的-相关性不完全是0.5-但平均它们将是错误的(当我采样10,000个向量而不是10个时,值大约在0.48到0.51之间)。同样,如果您模拟了许多10个样本并计算了每个样本的相关矩阵,您应该会发现预期(平均)相关矩阵是正确的。
- 模拟具有相关性的完全等于指定值的值要困难得多(而且不一定是您想要做的,具体取决于应用程序)
- 请注意,对于哪些均值向量和相关矩阵是可行的,将会有限制。例如,n×n复合对称(等相关)矩阵的非对角线元素不能小于-1/(n-1)。同样,对于给定的一组方法,可能存在什么相关性的限制(这可能会在技术参考中讨论,我还没有检查过)。
此方法的引用为
这篇关于相关伯努利数据的模拟的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!