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