Кумулятивная функция распределения (гипергеометрическая)

Мне нужно выяснить, как рассчитать «гипергеометрический cdf»:

Я знаю, как выглядит функция и как она работает, но у меня есть несколько проблем с переводом функции в python:

def hypergeometricCDF(N,K,n,x):
"""
Call:
    p = hypergeometricCDF(N,K,n,x)
Input argument:
    N: integer
    K: integer
    n: integer
    x: integer
Output argument:
    p: float
Example:
    hypergeometricCDF(120,34,12,7)
    =>
    0.995786
"""
f=sum(range(x+1))
p = log_binomial_coeff(N-K,n-f) + log_binomial_coeff(K,f) - log_binomial_coeff(N,n)
return(p)

Проблема в том, как интегрировать функцию суммы от i до x? Я попробовал это с суммой (диапазон (x + 1)), но это не сработает.


person Veysel    schedule 08.03.2015    source источник


Ответы (1)


Попробуй это:

def hypergeometricCDF(N,K,n,x):
"""
Call:
    p = hypergeometricCDF(N,K,n,x)
Input argument:
    N: integer
    K: integer
    n: integer
    x: integer
Output argument:
    p: float
Example:
    hypergeometricCDF(120,34,12,7)
    =>
    0.995786
"""
k = arange(x+1)
p = sum(exp(log_hypergeometricPMF(N,K,n,k)))
return(p)

log_hypergeometricPMF определяется поверх файла;)

person chris    schedule 09.03.2015
comment
Спасибо чувак! Кем бы вы ни были ;) вы уже получили все ответы? - person Veysel; 09.03.2015