Class: Array

Inherits:
Object show all
Includes:
Statsample::VectorShorthands
Defined in:
lib/statsample.rb,
lib/statsample/vector.rb,
lib/statsample/dataset.rb

Instance Method Summary collapse

Methods included from Statsample::VectorShorthands

#to_numeric, #to_scale, #to_vector

Instance Method Details

#meanObject



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_repeatedObject

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

#sdObject

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

#sumObject



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