我想基于许多相关项生成二项式向量,每个相关项都具有定义的概率 . 当我使用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...
,如开头所示,但是它的派生项应该与可定义的程度相关(即其中一个项目根本没有相关性) .