0

假设我有 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) 变大时,代码的鲁棒性和准确性正在下降。

有没有办法生成它?(在具有给定相关性的区间之间生成一个整数。)

4

0 回答 0