(defun variance (lst) (let ((mean1 (mean lst)) (n (length lst))) (/ (reduce #'+ (map 'list #'(lambda (x) (square (- mean1 x))) lst)) n))) defmacro square (x) `(* ,x ,x)) (defun mean (lst) (/ (reduce #'+ lst) (length lst))) ;funtion to calculate groveidentity(when G,T,A,S are considered) (defun groveidentity(pa pt x y sd mu tau) (let*((l1 (- (/ 1 pa) 1)) (l2 (grovelr x y sd mu tau)) (l3 (* l1 l2)) (factor (+ 1 (* pt (- l3 1))))) factor)) ;function to calculate grove LR (defun grovelr(x y sd mu tau) (let* ((u (/ tau sd)) (v (/ (* (- x y)(- x y) )(* 4 sd sd) )) (w (/ (* (- y mu)(- y mu) )(* 2 tau tau))) (lr (* u (+ (exp v) (exp w))))) lr)) (defun grove(&optional (x-values #(1.518255 1.518199 1.518273 1.518292)) (y-values #(1.518273 1.518347 1.518119 1.518255)) (mu 1.5182599) (tau 0.00367) (pa 0.01) (pb 0.9)) (let((X (mean x-values)) (Y (mean y-values)) (sd (sqrt (variance x-values)))) (format t "grove lr is ~A " (grovelr X Y sd mu tau)) (format t "grove identity is ~A" (groveidentity pa pb X Y sd mu tau))))