Class: Statsample::Anova::OneWay
- Inherits:
-
Object
- Object
- Statsample::Anova::OneWay
- Defined in:
- lib/statsample/anova.rb
Overview
One Way Anova Example:
v1=[2,3,4,5,6].to_scale
v2=[3,3,4,5,6].to_scale
v3=[5,3,1,5,6].to_scale
anova=Statsample::Anova::OneWay.new([v1,v2,v3])
anova.f
=> 0.0243902439024391
anova.significance
=> 0.975953044203438
anova.sst
=> 32.9333333333333
Instance Method Summary collapse
-
#df_bg ⇒ Object
Degrees of freedom between groups.
-
#df_total ⇒ Object
Total Degrees of freedom.
-
#df_wg ⇒ Object
Degrees of freedom within groups.
-
#f ⇒ Object
Fisher.
-
#initialize(vectors) ⇒ OneWay
constructor
A new instance of OneWay.
-
#mean ⇒ Object
Total mean.
-
#n ⇒ Object
Total number of cases.
-
#significance ⇒ Object
Significance of Fisher.
-
#ssbg ⇒ Object
Sum of squares between groups.
-
#sst ⇒ Object
Total sum of squares.
-
#sswg ⇒ Object
Sum of squares within groups.
-
#sum ⇒ Object
Total sum.
Constructor Details
#initialize(vectors) ⇒ OneWay
Returns a new instance of OneWay.
17 18 19 |
# File 'lib/statsample/anova.rb', line 17 def initialize(vectors) @vectors=vectors end |
Instance Method Details
#df_bg ⇒ Object
Degrees of freedom between groups
49 50 51 |
# File 'lib/statsample/anova.rb', line 49 def df_bg @vectors.size-1 end |
#df_total ⇒ Object
Total Degrees of freedom
53 54 55 |
# File 'lib/statsample/anova.rb', line 53 def df_total n-1 end |
#df_wg ⇒ Object
Degrees of freedom within groups
45 46 47 |
# File 'lib/statsample/anova.rb', line 45 def df_wg @vectors.inject(0) {|a,v| a+(v.size-1)} end |
#f ⇒ Object
Fisher
61 62 63 64 |
# File 'lib/statsample/anova.rb', line 61 def f k=@vectors.size (ssbg*(n-k)) / (sswg*(k-1)) end |
#mean ⇒ Object
Total mean
25 26 27 |
# File 'lib/statsample/anova.rb', line 25 def mean sum.quo(n) end |
#n ⇒ Object
Total number of cases
57 58 59 |
# File 'lib/statsample/anova.rb', line 57 def n @vectors.inject(0){|a,v| a+v.size} end |
#significance ⇒ Object
Significance of Fisher
66 67 68 |
# File 'lib/statsample/anova.rb', line 66 def significance 1.0-Distribution::F.cdf(f,df_bg,df_wg) end |
#ssbg ⇒ Object
Sum of squares between groups
38 39 40 41 42 43 |
# File 'lib/statsample/anova.rb', line 38 def ssbg m=mean @vectors.inject(0) do |total,vector| total + (vector.mean-m).square * vector.size end end |
#sst ⇒ Object
Total sum of squares
29 30 31 32 |
# File 'lib/statsample/anova.rb', line 29 def sst m=mean.to_f @vectors.inject(0) {|total,vector| total+vector.sum_of_squares(m) } end |
#sswg ⇒ Object
Sum of squares within groups
34 35 36 |
# File 'lib/statsample/anova.rb', line 34 def sswg @vectors.inject(0) {|total,vector| total+vector.sum_of_squares } end |
#sum ⇒ Object
Total sum
21 22 23 |
# File 'lib/statsample/anova.rb', line 21 def sum @vectors.inject(0){|a,v| a+v.sum} end |