假设我有 4(n=4) 枚命中概率为 p(p=0.5) 的导弹。他们在同一时间,在同一环境中被解雇。因此,每枚导弹都应该与其他三枚导弹相关联。例如,当 corr=1 时,所有导弹命中或未命中。当 corr=0 时,它们按二项式独立分布。
具有挑战性的部分是相关性不能为-1。由于有两种结果(未命中或命中)。
所以我想生成一个随机离散二项式值(假设在 0 到 4 之间,概率为 0.4,相关性 = 0.6)
我的代码在下面。
n <- 100 # size
p <- 0.4 # probability
corr <- 0.6 # correlation
trial <- 10000 # number of trials
p <- rep(p, n)
rho <- corr
library(bindata)
off <- rmvbin(trial, p, bincorr=(1 - rho)*diag(n) + rho)
off
[,1] [,2] [,3] [,4]
[1,] 0 0 1 0
[2,] 0 0 0 0
[3,] 1 1 1 1 # This part gives correlated
[4,] 1 0 1 0 # Bernoulli var for 10000
[5,] 0 0 0 0 # trial. When you sum each
[6,] 1 1 1 1 # row, you get random correlated
[7,] 1 1 1 0 # number of missiles.
[8,] 0 0 0 0
........................
[10000,] 0 0 1 0
cor(off)
[,1] [,2] [,3] [,4]
[1,] 1.0000000 0.6015165 0.5987907 0.6005857 # correlation is as
[2,] 0.6015165 1.0000000 0.6019365 0.6012273 # demanded.
[3,] 0.5987907 0.6019365 1.0000000 0.5972144 #
[4,] 0.6005857 0.6012273 0.5972144 1.0000000 #
但是,当大小 (n) 变大时,代码的鲁棒性和准确性正在下降。
有没有办法生成它?(在具有给定相关性的区间之间生成一个整数。)