emacs.d/bundle/bundle--stats.el

23 lines
604 B
EmacsLisp

(defun evenp (number)
(if (= 0 (% number 2))
t
nil))
(defun oddp (number)
(not (evenp number)))
(defun stats:mean (list)
(/ (apply #'+ list) (float (length list))))
(defun stats:median (list)
(let* ((sorted (sort (copy-sequence list) #'<))
(len (length sorted))
(mid (floor (/ len 2))))
(if (evenp len)
(/ (+ (nth mid sorted) (nth (1- mid) sorted)) 2.0)
(nth mid sorted))))
(defun stats:standard-deviation (list)
(let ((m (stats:mean list)))
(sqrt (/ (seq-reduce (lambda (x acc) (+ x (expt (- x m) 2))) list 0)
(length list)))))