2013-04-18 39 views
4

假設我想要2個具有指定phi係數的二進制數據向量,我怎麼能用R來模擬它?如何用R模擬相關的二進制數據?

例如,如何可以創建兩個向量像x並與COR高效的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 
+1

複製? http://stackoverflow.com/a/10540234/2105757 – ndoogan

+0

@ndoogan - 嗯,這是要求二進制數據,而不是二項式,所以它有點不同。 –

+0

@ JoshO'Brien例如,單個硬幣翻轉的二項式模型和隨機二元模型之間有什麼區別? – ndoogan

回答

9

bindata包是與此,更復雜的生成二進制數據好的指定矢量長度的y相關結構。 (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 
+0

看起來像一個很好的答案。但我仍然不明白爲什麼多元二項模型(試驗= 1)有什麼不同。我會批准我應該說伯努利模型。但這實際上是試驗= 1的二項式。 – ndoogan

+0

@ndoogan。這沒什麼不同。但是,您是否注意到,您所鏈接問題中的接受答案實際上並未生成具有指定相關性的二項式數據?我只想強調一下,對於二進制數據的特殊情況(或試用數= 1的二項式數據,如果您願意的話),**有很好的現有工具。 –

+0

@ JoshO'Brien:我注意到模擬相關係數的偏差不可忽視,並且在許多運行中指定了偏差。這是最好的/最接近我們可以在模擬中做的嗎? – RNA