حساب نسبة احتمالية Poisson
-
07-07-2019 - |
سؤال
عند استخدام وظيفة 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)
تجدر الإشارة إلى أنه من السهل جدًا حسابها باليد ، جدا.
هذه الصفحة يشرح سبب حصولك على صفيف ، ومعنى الأرقام الموجودة فيه ، على الأقل.