Module: Distribution::Hypergeometric::Ruby_
- Defined in:
- lib/distribution/hypergeometric/ruby.rb
Class Method Summary collapse
- .bc(n, k) ⇒ Object
-
.cdf(k, m, n, total) ⇒ Object
(also: exact_cdf)
Cumulative distribution function.
-
.p_value(pr, m, n, total) ⇒ Object
(also: exact_p_value)
p-value:.
-
.pdf(k, m, n, total) ⇒ Object
(also: exact_pdf)
Hypergeometric probability density function.
- .pdf_with_den(k, m, n, total, den) ⇒ Object
Class Method Details
.bc(n, k) ⇒ Object
8 9 10 |
# File 'lib/distribution/hypergeometric/ruby.rb', line 8 def bc(n,k) Math.binomial_coefficient(n,k) end |
.cdf(k, m, n, total) ⇒ Object Also known as: exact_cdf
Cumulative distribution function. The probability of obtain, from a sample of size n
, k
or less elements in a population size total
with m
interesting elements.
Slow, but secure
49 50 51 52 53 54 55 |
# File 'lib/distribution/hypergeometric/ruby.rb', line 49 def cdf(k, m, n, total) raise "k>m" if k>m raise "k>n" if k>n # Store the den den=bc(total,n) (0..k).collect { |ki| pdf_with_den(ki,m,n,total,den) }.inject { |sum,v| sum+v} end |
.p_value(pr, m, n, total) ⇒ Object Also known as: exact_p_value
p-value:
34 35 36 37 38 39 40 41 42 |
# File 'lib/distribution/hypergeometric/ruby.rb', line 34 def p_value(pr, m, n, total) ac=0 den=bc(total,n) (0..total).each do |i| ac+=pdf_with_den(i,m,n,total,den) return i if ac>=pr end end |
.pdf(k, m, n, total) ⇒ Object Also known as: exact_pdf
Hypergeometric probability density function
Probability p(k
, m
, n
, total
) of drawing sets of size m
and n
with an intersection of size k
from a total pool of size total
, without replacement.
References
19 20 21 22 23 24 |
# File 'lib/distribution/hypergeometric/ruby.rb', line 19 def pdf(k, m, n, total) min_m_n=m<n ? m : n max_t=[0,m+n-total].max return 0 if k>min_m_n or k<max_t (bc(m,k) * bc(total-m,n-k)).quo(bc(total,n)) end |
.pdf_with_den(k, m, n, total, den) ⇒ Object
28 29 30 |
# File 'lib/distribution/hypergeometric/ruby.rb', line 28 def pdf_with_den(k,m,n,total,den) (bc(m,k) * bc(total-m,n-k)).quo(den) end |