代码之家  ›  专栏  ›  技术社区  ›  Jon

计算泊松概率百分比

  •  16
  • Jon  · 技术社区  · 16 年前

    在Excel(或OpenOffice Calc)中使用poisson函数时,需要两个参数:

    • 整数
    • “平均”数

    并返回一个浮点值。

    在python中(我尝试了random array和numpy),它返回一个随机泊松数数组。 我真正想要的是这个事件将发生的百分比(它是一个常数,数组每次都有不同的数字,所以它是一个平均值?).

    例如:

    print poisson(2.6,6)
    

    收益率 [1 3 3 0 1 3] (每次我运行它,它都是不同的)。

    我从Calc/Excel得到的数字是3.19( POISSON(6,2.16,0)*100 )

    我是不是用了巨蟒的毒(不是双关语!)还是我错过了什么?

    3 回复  |  直到 11 年前
        1
  •  14
  •   Ned Batchelder    16 年前

    手工操作很容易,但这样做会使您的操作过多。可以在循环中执行指数和阶乘,以避免溢出:

    def poisson_probability(actual, mean):
        # naive:   math.exp(-mean) * mean**actual / factorial(actual)
    
        # iterative, to keep the components from getting too large or small:
        p = math.exp(-mean)
        for i in xrange(actual):
            p *= mean
            p /= i+1
        return p
    
        2
  •  24
  •   Alex Coventry    16 年前

    scipy 拥有你想要的

    >>> scipy.stats.distributions
    <module 'scipy.stats.distributions' from '/home/coventry/lib/python2.5/site-packages/scipy/stats/distributions.pyc'>
    >>> scipy.stats.distributions.poisson.pmf(6, 2.6)
    array(0.031867055625524499)
    

    值得注意的是,手工计算很容易, too .

        3
  •  1
  •   unwind    16 年前

    This page 解释为什么会得到一个数组,以及其中数字的含义。