class Statistics::Distribution::F

Attributes

d1[RW]
d2[RW]

Public Class Methods

new(k, j) click to toggle source
# File lib/statistics/distribution/f.rb, line 6
def initialize(k, j)
  self.d1 = k
  self.d2 = j
end

Public Instance Methods

cumulative_function(value) click to toggle source

Formula extracted from www.itl.nist.gov/div898/handbook/eda/section3/eda3665.htm#CDF

# File lib/statistics/distribution/f.rb, line 12
def cumulative_function(value)
  k = d2/(d2 + d1 * value.to_r)

  1 - Math.incomplete_beta_function(k, d2/2.0, d1/2.0)
end
density_function(value) click to toggle source
# File lib/statistics/distribution/f.rb, line 18
def density_function(value)
  return if d1 < 0 || d2 < 0 # F-pdf is well defined for the [0, +infinity) interval.

  val = value.to_r
  upper = ((d1 * val) ** d1) * (d2**d2)
  lower = (d1 * val + d2) ** (d1 + d2)
  up = Math.sqrt(upper/lower.to_r)
  down = val * Math.beta_function(d1/2.0, d2/2.0)

  up/down.to_r
end
mean() click to toggle source
# File lib/statistics/distribution/f.rb, line 30
def mean
  return if d2 <= 2

  d2/(d2 - 2).to_r
end
mode() click to toggle source
# File lib/statistics/distribution/f.rb, line 36
def mode
  return if d1 <= 2

  left = (d1 - 2)/d1.to_r
  right = d2/(d2 + 2).to_r

  (left * right).to_f
end