今日のRuby
今日もまた記述統計の基本的な関数群をナイーブに実装。
def normalize(*args) sd = standard_deviasion(args) m = mean(args) return args.flatten.map{|i| (i - m) / sd } end def skewness(*args) return normalize(args).reduce{|i,j| i + j ** 3} / (args.size - 1) end def kurtos(*args) return normalize(args).reduce{|i, j| i + j ** 4} / (args.size - 1) end
正規化、歪度、尖度を求めます。
で、テストケース。これは正規化に関するもの。
normalized = Statistics.normalize(@data) assert(Statistics.mean(normalized) == 0) assert(Statistics.variant(normalized) == 1.0)
正規化した標本は平均0、分散1のはずなんだけど…なぜかそうならない。
誤差にやられているような気がするんだけど。