Sha256: 635cfaeae58ef5d96f6a80b9b0ab3f3ba494e241145a5599a8728aab1b618840

Contents?: true

Size: 964 Bytes

Versions: 5

Compression:

Stored size: 964 Bytes

Contents

module Distribution
  # Calculate cdf and inverse cdf for Fisher Distribution.
  # Uses Statistics2 module
  module F
    class << self
      # Return the P-value of the corresponding integral with 
      # k degrees of freedom
      #
      #   Distribution::F.p_value(0.95,1,2)
      def p_value(pr,k1,k2)
        # Statistics2 has some troubles with extreme f values
        if Distribution.has_gsl?
          GSL::Cdf.fdist_Pinv(pr,k1,k2)
        else
          #puts "F:#{k1}, #{k2},#{pr}"
          Statistics2.pfdist(k1,k2, pr)
        end
      end
      # F cumulative distribution function (cdf).
      # 
      # Returns the integral of F-distribution 
      # with k1 and k2 degrees of freedom
      # over [0, x].
      #   Distribution::F.cdf(20,3,2)
      # 
      def cdf(x, k1, k2)
        if Distribution.has_gsl?
          GSL::Cdf.fdist_P(x.to_f,k1,k2)
        else
          Statistics2.fdist(k1, k2,x)
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
statsample-0.18.0 lib/distribution/f.rb
statsample-0.17.0 lib/distribution/f.rb
statsample-0.16.0 lib/distribution/f.rb
statsample-0.15.1 lib/distribution/f.rb
statsample-0.15.0 lib/distribution/f.rb