Method: Statsample::Anova::OneWay#initialize

Defined in:
lib/statsample/anova/oneway.rb

#initialize(opts = Hash.new) ⇒ OneWay

Returns a new instance of OneWay.

Raises:

  • (ArgumentError)


15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/statsample/anova/oneway.rb', line 15

def initialize(opts=Hash.new)
  @name=@name_numerator=@name_denominator=nil
  
  # First see if sum of squares or mean squares are entered
  raise ArgumentError, "You should set d.f." unless (opts.has_key? :df_num and opts.has_key? :df_den)
  @df_num=opts.delete :df_num
  @df_den=opts.delete :df_den
  @df_total=@df_num+@df_den
  if(opts.has_key? :ss_num and opts.has_key? :ss_den)
    @ss_num = opts.delete :ss_num
    @ss_den =opts.delete :ss_den
    @ms_num =@ss_num.quo(@df_num)
    @ms_den =@ss_den.quo(@df_den) 
  elsif (opts.has_key? :ms_num and opts.has_key? :ms_den)
    @ms_num =opts.delete :ms_num
    @ms_den =opts.delete :ms_den
    @ss_num =@ms_num * @df_num
    @ss_den =@ss_den * @df_den
  end
  @ss_total=@ss_num+@ss_den
  @ms_total=@ms_num+@ms_den
  opts_default={:name=>"ANOVA",
                :name_denominator=>_("Explained variance"),
                :name_numerator=>_("Unexplained variance")}
  @opts=opts_default.merge(opts)
  opts.keys.each {|k|
    send("#{k}=", @opts[k]) if self.respond_to? "#{k}="
  }
  @f_object=Statsample::Test::F.new(@ms_num, @ms_den, @df_num,@df_den)
end