class Statistics::Distribution::Geometric
Attributes
always_success_allowed[RW]
probability_of_success[RW]
Public Class Methods
new(p, always_success: false)
click to toggle source
# File lib/statistics/distribution/geometric.rb, line 6 def initialize(p, always_success: false) self.probability_of_success = p.to_r self.always_success_allowed = always_success end
Public Instance Methods
cumulative_function(k)
click to toggle source
# File lib/statistics/distribution/geometric.rb, line 25 def cumulative_function(k) k = k.to_i if always_success_allowed return if k < 0 1.0 - ((1.0 - probability_of_success) ** (k + 1.0)) else return if k <= 0 1.0 - ((1.0 - probability_of_success) ** k) end end
density_function(k)
click to toggle source
# File lib/statistics/distribution/geometric.rb, line 11 def density_function(k) k = k.to_i if always_success_allowed return if k < 0 ((1.0 - probability_of_success) ** k) * probability_of_success else return if k <= 0 ((1.0 - probability_of_success) ** (k - 1.0)) * probability_of_success end end
kurtosis()
click to toggle source
# File lib/statistics/distribution/geometric.rb, line 71 def kurtosis 6.0 + ((probability_of_success ** 2) / (1.0 - probability_of_success)) end
mean()
click to toggle source
# File lib/statistics/distribution/geometric.rb, line 39 def mean if always_success_allowed (1.0 - probability_of_success) / probability_of_success else 1.0 / probability_of_success end end
median()
click to toggle source
# File lib/statistics/distribution/geometric.rb, line 47 def median if always_success_allowed (-1.0 / Math.log2(1.0 - probability_of_success)).ceil - 1.0 else (-1.0 / Math.log2(1.0 - probability_of_success)).ceil end end
mode()
click to toggle source
# File lib/statistics/distribution/geometric.rb, line 55 def mode if always_success_allowed 0.0 else 1.0 end end
skewness()
click to toggle source
# File lib/statistics/distribution/geometric.rb, line 67 def skewness (2.0 - probability_of_success) / Math.sqrt(1.0 - probability_of_success) end
variance()
click to toggle source
# File lib/statistics/distribution/geometric.rb, line 63 def variance (1.0 - probability_of_success) / (probability_of_success ** 2) end