math.order tools.test math.vectors ;
IN: math.statistics.tests
+[ 3 ] [ { 1 2 3 4 5 } 1 power-mean ] unit-test
+[ t ] [ { 1 2 3 4 5 } [ 2 power-mean ] [ quadratic-mean ] bi 1e-10 ~ ] unit-test
[ 1 ] [ { 1 } mean ] unit-test
[ 3/2 ] [ { 1 2 } mean ] unit-test
[ 0 ] [ { 0 0 0 } geometric-mean ] unit-test
sequences.private sorting fry arrays grouping sets ;
IN: math.statistics
+: power-mean ( seq p -- x )
+ [ '[ _ ^ ] map-sum ] [ [ length / ] [ recip ^ ] bi* ] 2bi ;
+
: mean ( seq -- x )
[ sum ] [ length ] bi / ;
+: quadratic-mean ( seq -- x ) ! root-mean-square
+ [ [ sq ] map-sum ] [ length ] bi / sqrt ;
+
: geometric-mean ( seq -- x )
[ length ] [ product ] bi nth-root ;