kiyo_hikoのブログ

メモ+日記?

標準偏差の計算

統計をゆっくり勉強してて、適当に走り書きしたもの

(defun stdevp (&rest ns)
  (let* ((denom (length ns))
         (mean (/ (apply #'+ ns) denom)))
    (labels ((sq (n) (* n n)))
      (sqrt (/ (reduce
                #'(lambda (a b) (+ a (sq (- b mean))))
                (cons 0 ns))
             denom)))))

reduceにns渡すとき0をコンスしてるの0が加法単位元だから。

あと0除算を防いでない