Как сделать выборку из биномиального распределения с учетом матрицы вероятностей - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь создать матрицу из 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 голосов
/ 25 апреля 2019
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])

Параметр вероятности может быть векторизован.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...