Как я могу подмножество в порядке? - PullRequest
0 голосов
/ 04 мая 2020

Я создал бета-распределение B (1,3) с 500 000 случайных выборок по by <- rbeta(500000, 1, 3), затем вычисляю sum(log(1-by)), но хочу вычислить в группе из 5 by, что означает, что я беру первые 5 выборок by и вычислите sum(log(1-by)) из этих первых 5 выборок, после этого возьмите следующие 5 выборок (с 5-го по 10-й выборки) и рассчитайте sum(log(1-by)), делая это до конца. Не могли бы вы помочь мне, как это сделать?

1 Ответ

1 голос
/ 04 мая 2020

Агрегат должен выполнять работу

aggregate(by ~ rep(1:100000, each = 5), FUN = function(x) sum(log(1-x)))

Это делает log(1-by) для каждого элемента by, а затем суммирует значения для 1-5, 6-10 и т.д. c. как показано здесь

> V1 <- rbeta(6, 1, 3)
> log(1-V1)
[1] -1.03779783 -0.04631726 -0.02731994 -0.99583209 -0.03959935 -0.02131620
> aggregate(V1 ~ rep(1:2, each = 3), FUN = function(x) sum(log(1-x)))
  rep(1:2, each = 3)        V1
1                  1 -1.111435
2                  2 -1.056748

Чтобы извлечь этот столбец суммированных значений как вектор, просто добавьте [,2] после, чтобы сделать aggregate(...)[,2].

...