math.statistics: adding winsorized-mean.
parent
4c2d01c5ec
commit
07b0d52f55
|
@ -11,8 +11,9 @@ IN: math.statistics.tests
|
||||||
[ 1.0 ] [ { 1 1 1 } geometric-mean ] unit-test
|
[ 1.0 ] [ { 1 1 1 } geometric-mean ] unit-test
|
||||||
[ 1/3 ] [ { 1 1 1 } harmonic-mean ] unit-test
|
[ 1/3 ] [ { 1 1 1 } harmonic-mean ] unit-test
|
||||||
[ 5+1/4 ] [ { 1 3 5 7 } contraharmonic-mean ] unit-test
|
[ 5+1/4 ] [ { 1 3 5 7 } contraharmonic-mean ] unit-test
|
||||||
[ 18 ] [ { 4 8 15 16 23 42 } 0 trim-mean ] unit-test
|
[ 18 ] [ { 4 8 15 16 23 42 } 0 trimmed-mean ] unit-test
|
||||||
[ 15+1/2 ] [ { 4 8 15 16 23 42 } 0.2 trim-mean ] unit-test
|
[ 15+1/2 ] [ { 4 8 15 16 23 42 } 0.2 trimmed-mean ] unit-test
|
||||||
|
[ 3 ] [ { 1 3 3 3 3 5 } 0.2 winsorized-mean ] unit-test
|
||||||
|
|
||||||
[ 0 ] [ { 1 } range ] unit-test
|
[ 0 ] [ { 1 } range ] unit-test
|
||||||
[ 89 ] [ { 1 2 30 90 } range ] unit-test
|
[ 89 ] [ { 1 2 30 90 } range ] unit-test
|
||||||
|
|
|
@ -32,8 +32,22 @@ IN: math.statistics
|
||||||
: contraharmonic-mean ( seq -- x )
|
: contraharmonic-mean ( seq -- x )
|
||||||
[ sum-of-squares ] [ sum ] bi / ; inline
|
[ sum-of-squares ] [ sum ] bi / ; inline
|
||||||
|
|
||||||
: trim-mean ( seq p -- x )
|
<PRIVATE
|
||||||
swap [ length [ * >integer ] keep over - ] keep <slice> mean ;
|
|
||||||
|
: trim-points ( p seq -- from to seq )
|
||||||
|
[ length [ * >integer ] keep over - ] keep ;
|
||||||
|
|
||||||
|
PRIVATE>
|
||||||
|
|
||||||
|
: trimmed-mean ( seq p -- x )
|
||||||
|
swap natural-sort trim-points <slice> mean ;
|
||||||
|
|
||||||
|
: winsorized-mean ( seq p -- x )
|
||||||
|
swap natural-sort trim-points
|
||||||
|
[ <slice> ]
|
||||||
|
[ nip dupd nth <array> ]
|
||||||
|
[ [ 1 - ] dip nth <array> ] 3tri
|
||||||
|
surround mean ;
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue