読者です 読者をやめる 読者になる 読者になる

Mae向きなブログ

Mae向きな日記のブログ版。ようやくこちらに移行してきました。

マンガでわかる統計学

Book Ruby

マンガで統計学の勉強ができるなんてすばらしいと思います。最初から難しい本を読むのとでは理解力に差が出るのではないでしょうか。
第6章の「2変数の関連を調べよう!」で単相関係数の話が出てきます。早速,何か調べてみたいと思ったので,

  • 「宅習ノートの提出率」と「成績」の関連

を調べてみました。
Excelのような表計算ソフトだと簡単に計算できるのですが,計算式*1の理解を深めるためにRubyで作ってみました。

correl.rb

# -*- coding: utf-8 -*-
class Array
  def correl other
    self_ave = self.inject(:+) / self.size
    other_ave = other.inject(:+) / other.size
    x = self.map{|e| e - self_ave }
    y = other.map{|e| e - other_ave }
    numerator = x.zip(y).map{|e| e[0]*e[1]}.inject(:+) # 分子

    x = self.map{|e| (e - self_ave)**2 }
    y = other.map{|e| (e - other_ave)**2 }
    denominator = Math.sqrt(x.inject(:+)) *
      Math.sqrt(y.inject(:+)) # 分母

    numerator / denominator
  end
end

if __FILE__ == $0
  data = []
  while line = gets
    data << line.split(',').map(&:to_f)
  end
  data = data.transpose
  puts data[0].correl(data[1])
end

実行結果

$ ruby correl.rb < data.csv
0.7403457197930186

本書では,単相関係数の値の目安として,以下のように紹介されていますので,

  • 1.0〜0.9 非常に強く関連している
  • 0.9〜0.7 やや強く関連している
  • 0.7〜0.5 やや弱く関連している
  • 0.5未満 非常に弱く関連している

実行結果をみると,「宅習ノートの提出率」と「成績」は「やや強く関連している」と言えるんですね。当たり前といえば当たり前の結果ですが、数値で求めると説得力が増すような気がします。

マンガでわかる統計学

マンガでわかる統計学