문제

Excel (또는 OpenOffice Calc)에서 Poisson 함수를 사용하면 두 가지 인수가 필요합니다.

  • 정수
  • '평균'숫자

플로트를 반환합니다.

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).

나는 파이썬의 포아송을 잘못 사용하고 있습니까 (말장난!), 아니면 뭔가 빠졌습니까?

도움이 되었습니까?

해결책

손으로 쉽게 할 수 있지만 그렇게하는 방식으로 오버플로 할 수 있습니다. 오버플로를 피하기 위해 지수와 계승을 루프로 수행 할 수 있습니다.

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