Вычислить процент вероятности Пуассона
-
07-07-2019 - |
Вопрос
Когда вы используете функцию ПУАССОН в Excel (или в OpenOffice Calc), она принимает два аргумента:
- целое число
- «среднее» число
и возвращает число с плавающей запятой.
В Python (я пробовал RandomArray и NumPy) он возвращает массив случайных чисел Пуассона.Что мне действительно нужно, так это процент, в котором произойдет это событие (это постоянное число, и массив каждый раз имеет разные числа - так это среднее значение?).
например:
print poisson(2.6,6)
возвращает [1 3 3 0 1 3]
(и каждый раз, когда я его запускаю, все по-другому).
Число, которое я получаю из Calc/Excel, равно 3,19 (POISSON(6,2.16,0)*100
).
Я неправильно использую Пуассон питона (без каламбура!) или я что-то упускаю?
Решение
Это легко сделать вручную, но таким образом можно переполниться.Вы можете выполнить экспоненту и факториал в цикле, чтобы избежать переполнения:
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)
Стоит отметить, что рассчитать вручную довольно легко. слишком.
Эта страница объясняет, почему вы получаете массив и, по крайней мере, значение чисел в нем.