精确选择n个元素的概率

时间:2019-02-13 14:46:08

标签: r probability

我在向量中存储了一个事件,其中列出了大约100000个概率。

我想知道是否有可能计算n个事件的发生概率(例如,确切发生1000个事件的概率是多少)。

我设法计算出R中的几个概率:

  • p是包含所有概率的向量
  • 无概率:prod(1-p)
  • 至少一个概率:1 - prod(1-p)

我发现了如何计算一个事件的概率:

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

但是我不知道如何为n个事件生成公式。

1 个答案:

答案 0 :(得分:0)

我不知道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

现在,您的答案就可以从向量中的正确条目中读出。

这种方法等效于逐行计算Pascal的三角形,完成后就丢弃旧行。