2024-02-24 12:46:13 +01:00
|
|
|
;;; bundle--stats.el --- Statistics Lib -*- lexical-binding: t; -*-
|
|
|
|
|
|
|
|
;; Author: Marcus Kammer
|
|
|
|
;; Version: 0.0.1
|
|
|
|
;; Keywords: statistics
|
|
|
|
|
|
|
|
(defun stats:evenp (number)
|
2024-02-24 10:21:55 +01:00
|
|
|
(if (= 0 (% number 2))
|
|
|
|
t
|
|
|
|
nil))
|
|
|
|
|
2024-02-24 12:46:13 +01:00
|
|
|
(defun stats:oddp (number)
|
2024-02-24 10:21:55 +01:00
|
|
|
(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)))))
|
2024-02-24 12:46:13 +01:00
|
|
|
|
|
|
|
(provide 'bundle--stats)
|
|
|
|
;;; bundle--stats.el ends here
|