【问题标题】:how to simulate correlated binary data with R? [duplicate]如何用 R 模拟相关的二进制数据? [复制]
【发布时间】:2013-04-11 22:26:56
【问题描述】:

假设我想要 2 个具有指定 phi 系数的二进制数据向量,我如何用 R 模拟它?

例如,我怎样才能创建两个向量,如xy 指定向量长度与0.79 的相关效率

> x = c(1,  1,  0,  0,  1,  0,  1,  1,  1)
> y = c(1,  1,  0,  0,  0,  0,  1,  1,  1)
> cor(x,y)
[1] 0.7905694

【问题讨论】:

  • @ndoogan -- 嗯,这是要求二进制数据,而不是二项式数据,所以略有不同。
  • @JoshO'Brien 单次抛硬币等二项模型与随机二元模型有什么区别?
  • @ndoogan -- 只有某些模拟方法适用于特殊情况(二进制),而对于更一般的(二项式)来说效果不佳。我会添加一个答案来说明这一点。

标签: r binary simulation correlation


【解决方案1】:

bindata 包非常适合使用这种和更复杂的相关结构生成二进制数据。 (Here's a link to a working paper (warning, pdf) 阐述了包作者采用的方法背后的理论。)

在您的情况下,假设 x 和 y 的独立概率均为 0.5:

library(bindata)

## Construct a binary correlation matrix
rho <- 0.7905694
m <- matrix(c(1,rho,rho,1), ncol=2)   

## Simulate 10000 x-y pairs, and check that they have the specified
## correlation structure
x <- rmvbin(1e5, margprob = c(0.5, 0.5), bincorr = m) 
cor(x)
#           [,1]      [,2]
# [1,] 1.0000000 0.7889613
# [2,] 0.7889613 1.0000000

【讨论】:

  • 似乎是一个很好的答案。但我仍然不明白为什么多元二项式模型(试验 = 1)有什么不同。我承认我应该说伯努利模型。但这实际上是二项式,试验 = 1。
  • @ndoogan。这没什么不同。但是,您是否注意到,您链接到的问题中接受的答案实际上并没有生成具有指定相关性的二项式数据?我只是想强调一下,对于二进制数据的特殊情况(或试验=1 的二项式数据,如果您愿意的话), 是很好的现有工具。
  • @JoshO'Brien:我注意到模拟相关系数和多次运行中指定的相关系数存在不可忽略的偏差。这是我们在模拟中可以做到的最好/最接近的吗?
  • @RNA -- 在我看来,模拟的相关性并没有系统地偏离 0.7905,所以我认为这只是预期的抽样变化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-26
  • 2011-01-12
  • 2015-08-05
  • 2012-06-25
  • 2020-07-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多