module Statsample # Module for several statistical tests module Test autoload(:UMannWhitney, 'statsample/test/umannwhitney') autoload(:Levene, 'statsample/test/levene') autoload(:T, 'statsample/test/t') autoload(:F, 'statsample/test/f') autoload(:ChiSquare, 'statsample/test/chisquare') # Returns probability of getting a value lower or higher # than sample, using cdf and number of tails. # # * :left : For one tail left, return the cdf # * :right : For one tail right, return 1-cdf # * :both : For both tails, returns 2*right_tail(cdf.abs) def p_using_cdf(cdf, tails=:both) tails=:both if tails==2 or tails==:two tails=:right if tails==1 or tails==:positive tails=:left if tails==:negative case tails when :left then cdf when :right then 1-cdf when :both if cdf>=0.5 cdf=1-cdf end 2*cdf end end extend self # Calculate chi square for two Matrix class << self def chi_square(observed, expected=nil) case observed when Vector ChiSquare::WithVector.new(observed,expected) when Matrix ChiSquare::WithMatrix.new(observed,expected) else raise "Not implemented for #{observed.class}" end end # Shorthand for Statsample::Test::UMannWhitney.new # # * v1 and v2 should be Statsample::Vector. def u_mannwhitney(v1, v2) Statsample::Test::UMannWhitney.new(v1,v2) end # Shorthand for Statsample::Test::T::OneSample.new def t_one_sample(vector, opts=Hash.new) Statsample::Test::T::OneSample.new(vector,opts) end # Shorthand for Statsample::Test::T::TwoSamplesIndependent.new def t_two_samples_independent(v1,v2, opts=Hash.new) Statsample::Test::T::TwoSamplesIndependent.new(v1,v2,opts) end # Shorthand for Statsample::Test::Levene.new def levene(input, opts=Hash.new) Statsample::Test::Levene.new(input,opts) end end end end