سؤال

عند استخدام وظيفة Poisson في Excel (أو في OpenOffice Calc) ، يتطلب الأمر وسيطين:

  • عدد صحيح
  • رقم "متوسط"

ويعيد تعويم.

في Python (حاولت Randomarray و Numpy) إرجاع مجموعة من أرقام Poisson العشوائية. ما أريده حقًا هو النسبة المئوية التي سيحدث بها هذا الحدث (إنه رقم ثابت ويحتوي الصفيف في كل مرة أرقام مختلفة - فهل هو متوسط؟).

فمثلا:

print poisson(2.6,6)

عائدات [1 3 3 0 1 3] (وفي كل مرة أقوم بتشغيلها ، الأمر مختلف).

الرقم الذي أحصل عليه من Calc/Excel هو 3.19 (POISSON(6,2.16,0)*100).

هل أستخدم خطأ Python Poisson (لا التورية!) أم أفتقد شيئًا؟

هل كانت مفيدة؟

المحلول

من السهل القيام به يدويًا ، ولكن يمكنك التغلب على القيام بذلك بهذه الطريقة. يمكنك القيام بالأسع والماكينة في حلقة لتجنب الفائض:

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

نصائح أخرى

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)

تجدر الإشارة إلى أنه من السهل جدًا حسابها باليد ، جدا.

هذه الصفحة يشرح سبب حصولك على صفيف ، ومعنى الأرقام الموجودة فيه ، على الأقل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top