我在向量中存储了一个事件,其中列出了大约100000个概率。
我想知道是否有可能计算n个事件的发生概率(例如,确切发生1000个事件的概率是多少)。
我设法计算出R中的几个概率:
p
是包含所有概率的向量prod(1-p)
1 - prod(1-p)
我发现了如何计算一个事件的概率:
sum(p * (prod(1-p) / (1-p)))
但是我不知道如何为n个事件生成公式。
答案 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的三角形,完成后就丢弃旧行。