Вероятность выбора ровно n элементов - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть список из примерно 100 000 вероятностей события, сохраненного в векторе.

Я хочу знать, возможно ли рассчитать вероятность n происходящих событий (например, какова вероятность того, что именноПроисходит 1000 событий).

Мне удалось вычислить несколько вероятностей в R:

  • p - это вектор, содержащий все вероятности
  • вероятность отсутствия: prod(1-p)
  • вероятность хотя бы одного: 1 - prod(1-p)

Я нашел, как рассчитать вероятность ровно одного события:

sum(p * (prod(1-p) / (1-p)))

Но я не знаюне знаю, как создать формулу для n событий.

1 Ответ

0 голосов
/ 14 февраля 2019

Я не знаю R, но я знаю, как бы я решил это с помощью программирования.

Это простая задача динамического программирования.Начнем с вектора v = [1.0] вероятностей.Тогда в непроверенном Python:

for p_i in probabilities:
    next_v = [p_i * v[0]]
    v.append(0.0)
    for j in range(len(v) - 1):
        next_v.append(v[j]*p_i + v[j+1]*(1-p_i)
    # For roundoff errors
    total = sum(next_v)
    for j in range(len(next_v)):
        next_v[j] /= total
    v = next_v

И теперь ваши ответы можно просто прочитать из правильной записи в векторе.

Этот подход эквивалентен вычислению треугольника Паскаля строка за строкой, бросаяубери старый ряд, когда закончишь.

...