我想基于许多相关项生成二项式向量,每个相关项都具有定义的概率 . 当我使用e . G . rbinom(1e3, size = 4, prob = c(p.x1, p.x2, p.x3, p.x4)) 我得到像 3 3 0 0 2 4 1 0 4 4 0 1 4... 这样的东西 . 现在这些x_i具有确定的概率但不相关 .

五年前,Josh O'Brien为generate correlated binomial data做出了很好的贡献 . 我认为它接近我的需求,但它是为对设计的,我想要1.,一个向量和2.,更多的变量p . 我已经尝试修改函数以产生更多的变量但到目前为止没有成功,我经常面对

Error in commonprob2sigma(commonprob, simulvals) : 
Matrix commonprob not admissible.

这是由导入的 bindata 包发送的 .

我的想法是在Josh's function中定义四个(或更好的任意数量)概率和rhos,类似于

rmvBinomial3 <- function(n, size, p1, p2, p3, p4, rho) {
  X <- replicate(n, {
    colSums(rmvbin(size, c(p1,p2,p3,p4), bincorr=(1-rho)*diag(4)+rho))
  })
  t(X)
}

当然 - 需要更多的rhos,我想应该以某种方式包含概率矩阵,因为它可以用 bindata 包完成 . 我不知道如何包含它 .

rho1 <- -0.89; rho2 <- -0.75; rho3 <- -0.62; rho4 <- -0.59
m <- matrix(c(1, rho1, rho2, rho3,
     rho1, 1, rho4, rho2,
     rho2, rho4, 1, rho1,
     rho3, rho2, rho1, 1), ncol = 4) 
#       [,1]  [,2]  [,3]  [,4]
# [1,]  1.00 -0.89 -0.75 -0.62
# [2,] -0.89  1.00 -0.59 -0.75
# [3,] -0.75 -0.59  1.00 -0.89
# [4,] -0.62 -0.75 -0.89  1.00

不幸的是,每个矩阵,为了适应 bindata 我用 bindata::check.commonprob(m) 检查的条件,抛出了与上面相同的错误 . 我也无法完成 bindata::commonprob2sigma() 创建的矩阵 .

对我来说另一个缺点是Josh的范围rmvBinomial(),它似乎仅在p.X_i = 0.2--0.8之间的值之间起作用,我需要更小的值,例如0.01--0.1也是 .

任何帮助都非常赞赏 .

Edit: 为了澄清,预期结果确实只是一个单一的向量 3 3 0 0 2 4 1 0 4 4 0 1 4... ,如开头所示,但是它的派生项应该与可定义的程度相关(即其中一个项目根本没有相关性) .