# Class: Array

Inherits:
Object
• Object
show all
Defined in:
lib/fselector/util.rb

## Instance Method Summary (collapse)

• - (Float) ave (also: #mean)

average (mean).

• median.

• Pearson's correlation coefficient, two vectors must be of the same length.

• standard deviation.

• summation.

• scale to [min, max].

• convert to symbol.

• convert to z-score.

• variance.

## Instance Method Details

### - (Float) aveAlso known as: mean

average (mean)

 ``` 14 15 16``` ```# File 'lib/fselector/util.rb', line 14 def ave self.sum / self.size end```

### - (Float) median

median

 ``` 22 23 24 25 26``` ```# File 'lib/fselector/util.rb', line 22 def median len = self.size sorted = self.sort (len % 2 == 1) ? sorted[len/2] : (sorted[len/2-1]+sorted[len/2]).to_f/2 end```

### - (Float) pearson_r(v)

Pearson's correlation coefficient, two vectors must be of the same length

 ``` 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113``` ```# File 'lib/fselector/util.rb', line 95 def pearson_r(v) abort "[#{__FILE__}@#{__LINE__}]: \n"+ " two vectors must be of the same length!" if self.size != v.size sm, vm = self.ave, v.ave a, b, c = 0.0, 0.0, 0.0 self.each_with_index do |s, i| a += (s-sm)*(v[i]-vm) b += (s-sm)**2 c += (v[i]-vm)**2 end if b.zero? or c.zero? return 0.0 else return a / Math.sqrt(b) / Math.sqrt(c) end end```

### - (Float) sd

standard deviation

 ``` 41 42 43``` ```# File 'lib/fselector/util.rb', line 41 def sd Math.sqrt(self.var) end```

### - (Float) sum

summation

 ``` 7 8 9``` ```# File 'lib/fselector/util.rb', line 7 def sum self.inject(0.0) { |s, i| s+i } end```

### - (Array<Float>) to_scale(min = 0.0, max = 1.0)

scale to [min, max]

 ``` 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67``` ```# File 'lib/fselector/util.rb', line 51 def to_scale(min=0.0, max=1.0) if (min >= max) abort "[#{__FILE__}@#{__LINE__}]: \n"+ " min must be smaller than max!" end old_min = self.min old_max = self.max self.collect do |v| if old_min == old_max max else min + (v-old_min)*(max-min)/(old_max-old_min) end end end```

### - (Array<Symbol>) to_sym

convert to symbol

 ``` 85 86 87``` ```# File 'lib/fselector/util.rb', line 85 def to_sym self.collect { |x| x.to_sym } end```

### - (Array<Float>) to_zscore

convert to z-score

ref: Wikipedia

 ``` 75 76 77 78 79 80``` ```# File 'lib/fselector/util.rb', line 75 def to_zscore ave = self.ave sd = self.sd return self.collect { |v| (v-ave)/sd } end```

### - (Float) var

variance

 ``` 31 32 33 34 35 36``` ```# File 'lib/fselector/util.rb', line 31 def var u = self.ave v2 = self.inject(0.0) { |v, i| v+(i-u)*(i-u) } v2/(self.size-1) end```