Slide 36
Slide 36 text
1 data = [
2 [100, 0.7],
3 [125, 0.5],
4 [150, 1],
5 [300, 2.1],
6 [500, 3.4],
7 [900, 6]
8 ]
9
10 x, y = data.transpose
11 n = data.size
12 x_mean = x.reduce(:+) / n
13 y_mean = y.reduce(:+) / n
14 x_stddev = Math.sqrt(x.inject {|sum, i| sum + (i - x_mean)**2 } / (n - 1).to_f)
15 y_stddev = Math.sqrt(y.inject {|sum, i| sum + (i - y_mean)**2 } / (n - 1).to_f)
16 z_x = x.collect {|i| (i - x_mean) / x_stddev }
17 z_y = y.collect {|i| (i - y_mean) / y_stddev }
18 pearsons = z_x.zip(z_y).collect {|x| x[0] * x[1] }.reduce(:+) / n
19 # => 0.9265763490538744