Class: Array
- Includes:
- Statsample::VectorShorthands
- Defined in:
- lib/statsample.rb,
lib/statsample/vector.rb,
lib/statsample/dataset.rb
Instance Method Summary collapse
- #mean ⇒ Object
-
#prefix(s) ⇒ Object
:nodoc:.
-
#recode_repeated ⇒ Object
Recode repeated values on an array, adding the number of repetition at the end Example: a=%wb c c d d d e a.recode_repeated => [“a”,“b”,“c_1”,“c_2”,“d_1”,“d_2”,“d_3”,“e”].
-
#sd ⇒ Object
Calculate sample standard deviation.
-
#suffix(s) ⇒ Object
:nodoc:.
- #sum ⇒ Object
-
#sum_of_squares(m = nil) ⇒ Object
Calcualte sum of squares.
-
#variance_sample(m = nil) ⇒ Object
Calculate sample variance.
Methods included from Statsample::VectorShorthands
#to_numeric, #to_scale, #to_vector
Instance Method Details
#mean ⇒ Object
95 96 97 |
# File 'lib/statsample.rb', line 95 def mean self.sum / size end |
#prefix(s) ⇒ Object
:nodoc:
11 12 13 |
# File 'lib/statsample/dataset.rb', line 11 def prefix(s) # :nodoc: self.collect{|c| s+c.to_s } end |
#recode_repeated ⇒ Object
Recode repeated values on an array, adding the number of repetition at the end Example:
a=%w{a b c c d d d e}
a.recode_repeated
=> ["a","b","c_1","c_2","d_1","d_2","d_3","e"]
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/statsample.rb', line 61 def recode_repeated if size != uniq.size # Find repeated repeated = inject({}) do |acc, v| if acc[v].nil? acc[v] = 1 else acc[v] += 1 end acc end.select { |_k, v| v > 1 }.keys ns = repeated.inject({}) do |acc, v| acc[v] = 0 acc end collect do |f| if repeated.include? f ns[f] += 1 sprintf('%s_%d', f, ns[f]) else f end end else self end end |
#sd ⇒ Object
Calculate sample standard deviation
112 113 114 115 |
# File 'lib/statsample.rb', line 112 def sd m ||= mean Math::sqrt(variance_sample(m)) end |
#suffix(s) ⇒ Object
:nodoc:
14 15 16 |
# File 'lib/statsample/dataset.rb', line 14 def suffix(s) # :nodoc: self.collect{|c| c.to_s+s } end |
#sum ⇒ Object
91 92 93 |
# File 'lib/statsample.rb', line 91 def sum inject(:+) end |
#sum_of_squares(m = nil) ⇒ Object
Calcualte sum of squares
100 101 102 103 |
# File 'lib/statsample.rb', line 100 def sum_of_squares(m=nil) m ||= mean self.inject(0) {|a,x| a + (x-m).square } end |
#variance_sample(m = nil) ⇒ Object
Calculate sample variance
106 107 108 109 |
# File 'lib/statsample.rb', line 106 def variance_sample(m=nil) m ||= mean sum_of_squares(m).quo(size - 1) end |