23 lines
604 B
EmacsLisp
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)))))
|