在给定概率矩阵的情况下如何从二项式分布进行采样

时间:2019-04-25 19:33:08

标签: r matrix

我正在尝试创建一个0、1和2的矩阵。让我们将此数据集A称为A[i,j] ~ Binomial(2, P[i,j]),其中P是另一个矩阵,给出A中每个条目的概率。因此,矩阵A中的每个条目将根据其在矩阵P中的相应概率条目进行二项分布。以下给出了一个for循环,该循环说明了我想要的功能,但是在R语言中这确实很慢,所以我在想是否有人知道如何使用apply函数来完成它? P和A都是m * n矩阵。

for (i in 1:m) {
  for (j in 1:n) {
    a[i,j] = rbinom(n = 1, size = 2, prob = p[i,j])
  }
}

1 个答案:

答案 0 :(得分:0)

prow <- 100
pcol <- 100
set.seed(1)
p <- matrix(runif(prow*pcol), ncol=pcol, nrow=prow)
diag(p) <- 0
a <- matrix(NA, ncol=pcol, nrow=prow)

a[] <- rbinom(n=prow*pcol, size=2, prob = p)

print(a[1:10,1:10])

概率参数可以向量化。