相关伯努利数据的模拟 [英] Simulating correlated Bernoulli data

查看:13
本文介绍了相关伯努利数据的模拟的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想模拟有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)。同样,对于给定的一组方法,可能存在什么相关性的限制(这可能会在技术参考中讨论,我还没有检查过)。

此方法的引用为

Leisch,Friedrich和Weingessel,Andreas和Hornik,Kurt(1998)关于相关人工二进制数据的生成。工作论文《经济学和管理科学中的自适应信息系统和建模》,13。维也纳经济与商业大学,13。https://epub.wu.ac.at/286/

这篇关于相关伯努利数据的模拟的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆