2014-11-14 6 views
3

미리 결정된 x (성공), n (시행) 및 p (확률)에 대한 이항 분포에 의해 주어진 확률을 계산하고 싶습니다. 나중에 확률 질량 함수 Beta (a, b).Python의 Beta Binomial Function

나는 scipy.stats.binom.pmf(x,n,p)을 알고 있지만 확률 함수로 p를 어떻게 대체 할 수 있는지 확신 할 수 없습니다. 또한이 동작을 에뮬레이트하기 위해 scipy.stats.binom.pmfloc 인수를 사용할 수 있는지 궁금합니다.

답변

2

Wiki says 화합물 분포 함수 B 베타 기능, b는 원래 베타 파라미터 인 N이고 이항 하나

f(k|n,a,b) = comb(n,k) * B(k+a, n-k+b)/B(a,b) 

주어진된다. 여기에서 k는 x와 p가 사라지는 이유는 p의 값을 통합하여이 (컨볼 루션)을 구하기 때문입니다. 즉, scipy에서는 찾을 수 없지만 the beta function from scipy이면 한 줄짜리입니다.

+0

정수를 반환하는 가정을 선택한다 (나는 그렇게 생각하지만, ['numpy.choose'] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.choose.html) 배열을 반환하는 것 같습니다. – TheChymera

+0

네, 조합을 선택하십시오, 거기보세요 : http://en.wikipedia.org/wiki/Combination – JulienD

+0

좋아, 그럼 어쩌면 당신은 [빗] (http://docs.scipy.org/doc/scipy- 0.14.0/reference/generated/scipy.misc.comb.html), [선택] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.choose.html)이 아닙니까? 나는 그것을'[scipy.misc.comb'] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.choose.html)로 사용할 권리가 있습니까? – TheChymera

4

값이 n (총 # 개)이고 x (성공 # 개)이 큰 경우 베타 이항 확률을 계산하는보다 안정된 방법은 로그를 사용하는 것입니다. 베타 이항 분포 함수의 gamma function expansion를 사용하여, 원하는 확률의 자연 로그이다

gammalnscipy.special에 주어진 감마 함수의 자연 로그이다
ln(answer) = gammaln(n+1) + gammaln(x+a) + gammaln(n-x+b) + gammaln(a+b) - \ 
     (gammaln(x+1) + gammaln(n-x+1) + gammaln(a) + gammaln(b) + gammaln(n+a+b)) 

.

(BTW는 다음 loc 인수는 당신이 여기 원하는 것이 아니다 왼쪽 또는 오른쪽으로 분포를 이동합니다.)