【问题标题】:Better way to calculate λ in a Poisson distribution if the probability of occurrence P(X>0) is known如果发生概率 P(X>0) 已知,则计算泊松分布中 λ 的更好方法
【发布时间】:2021-10-05 18:50:28
【问题描述】:

目前我正在使用以下功能,但我想知道是否有更有效的方法或简单的公式来完成此操作?

from scipy.stats import poisson

def calc_expected_value(event_proba):
    x = 0.01
    while round(1 - poisson.pmf(0, x), 2) != round(event_proba, 2):
        x += 0.01
    return x

【问题讨论】:

  • 请定义您对“发生概率”一词的使用。你是说 P{X=1} 吗?
  • 其实我的意思是 P{X>0}。我编辑了问题

标签: python poisson


【解决方案1】:

P(X = 0) = exp(-lambda),因此是P(X > 0) = 1 - exp(-lambda)。如果你把这个概率称为event_proba,那么

exp(-lambda) = 1 - event_proba

因此

lambda = -log(1 - event_proba)

当然,在实际的 Python 代码中,您应该避免使用名称 lambda,因为它具有内置含义。

【讨论】:

    【解决方案2】:

    这是一个简单的公式:

    from math import log
    
    def calc_lambda(p_gt_0):
        return -log(1.0 - p_gt_0)
    

    这源于 P{X=0} = 1 - P{X>0}。 插入泊松概率的公式并求解以产生上面给出的实现。

    【讨论】:

    • 完美,如果我知道我的 P(X=any number) 怎么办?很抱歉没有在我的问题中包含这个,我突然想到我可能需要它。
    • @sierra_papa 对于泊松,P{X=x} = lambda^x * exp(-lambda) / x!。当x=0 我们有lambda^xx! 都是1,所以它减少到只有一个指数项并产生封闭形式的解决方案约翰科尔曼和我想出了。除了P{X=0} 之外的任何情况下,事情都不会那么干净,你只剩下lambda 作为基础和力量。例如,当x=1 你必须解决lambda * exp(-lambda) = p。在那一点上,我认为您只能使用求根算法进行数值求解。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    相关资源
    最近更新 更多