平均・分散・標準偏差を求める

Ruby で平均・分散・標準偏差を返すプログラムを作る。

class Statistics < Array
    def mean # 平均
        1.0 * self.sum / self.size
    end

    def var # 分散
        avg = self.mean
        Statistics.new self.size do |i|
           (self[i] - avg) ** 2
        end
        .mean
    end

    def sd # 標準偏差
        Math.sqrt(var)
    end
end

a = Statistics.new([20, 20, 10, 50, 50, 20, 50, 10, 20, 20])
p a.sum # 270
p a.mean # 27.0
p a.var # 241
p a.sd # 15.524174696260024

プログラムの説明

Statistics#mean
平均。配列合計を配列の要素数で割ったものを返す。
Statistics#var
分散。要素と平均の差の2乗の平均を返す。
Statistics#sd
標準偏差。分散の平方根を返す。

正当なCSSです!