Sha256: 41571fe5a3e7548ca0ce6a9aa3381ce80edc71b44dc0cf39e0663e57c0575506
Contents?: true
Size: 839 Bytes
Versions: 1
Compression:
Stored size: 839 Bytes
Contents
module Distribution module Binomial module Ruby_ class << self def pdf(k,n,pr) raise "k>n" if k>n Math.binomial_coefficient(n,k)*(pr**k)*(1-pr)**(n-k) end # TODO: Use exact_regularized_beta for # small values and regularized_beta for bigger ones. def cdf(k,n,pr) #(0..x.floor).inject(0) {|ac,i| ac+pdf(i,n,pr)} Math.regularized_beta(1-pr,n - k,k+1) end def exact_cdf(k,n,pr) out=(0..k).inject(0) {|ac,i| ac+pdf(i,n,pr)} out=1 if out>1.0 return out end def p_value(prob,n,pr) ac=0 (0..n).each do |i| ac+=pdf(i,n,pr) return i if prob<=ac end end alias :exact_pdf :pdf end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
distribution-0.7.2 | lib/distribution/binomial/ruby.rb |