生成相关二项式变量

时间:2018-03-17 20:46:04

标签: r random statistics correlation bindata

假设我有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   #

但是,当size(n)变大时,代码的健壮性和准确性正在下降。

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

0 个答案:

没有答案