【问题标题】:Probability of selecting exactly n elements恰好选择 n 个元素的概率
【发布时间】:2019-02-14 06:33:15
【问题描述】:

我有一个存储在向量中的事件的大约 100 000 个概率的列表。

我想知道是否可以计算 n 个事件发生的概率(例如,恰好 1000 个事件发生的概率是多少)。

我设法在 R 中计算了几个概率:

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

我找到了如何计算恰好一个事件的概率:

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

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

【问题讨论】:

  • 为什么你有很多概率?这些是从哪里来的?您的活动是如何分发的?
  • 不确定这是否适合这里,看起来不像是一个编程问题(尤其是没有任何示例数据)。 math.stackexchange.com 可能更好
  • 我们在一个区域运行污染模拟,我们在该区域的每个网格上都有一个高于阈值的概率。这就是为什么我们有很多概率。
  • 如果您想要准确的答案 (en.wikipedia.org/wiki/Poisson_binomial_distribution),这与“泊松二项分布”有关。正态分布的近似值计算起来会更快。我同意这确实是一道数学题。
  • 属于 math.stackexchange(或可能是 stats.stackexchange)

标签: r probability


【解决方案1】:

我不懂 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

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

这种方法相当于逐行计算帕斯卡的三角形,完成后丢弃旧行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-23
    • 1970-01-01
    • 2014-12-15
    • 2013-10-22
    相关资源
    最近更新 更多