A small Ruby snippet to calculate the Pearson produt-moment correlation coefficient:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
#!/usr/bin/ruby class Array def sum inject( 0 ) { |sum,x| sum+x } end def sum_square inject( 0 ) { |sum,x| sum+x*x } end def mean sum / size end def *(other) # dot product ret = [] return nil if !other.is_a? Array || size != other.size self.each_with_index {|x, i| ret << x * other[i]} ret.sum end end x = Array.new(100) {|i| i } y = Array.new(100) {|i| -i*2 } sumx = x.sum sumy = y.sum num = (x.size * (x*y)) - (sumx * sumy) den = Math.sqrt((x.size * x.sum_square) - sumx * sumx) * Math.sqrt((y.size * y.sum_square) - sumy * sumy) r = num /den puts "X= [#{x.join(', ')}]" puts "Y= [#{y.join(', ')}]" puts "r= #{r}" |

![Validate my Atom 1.0 feed [Valid Atom 1.0]](/images/valid-atom.png)

