math.statistics: adding interquartile-range, midhinge, and fivenum.

flac
John Benediktsson 2020-02-06 11:40:53 -08:00 committed by Steve Ayerhart
parent 085436a156
commit eb3f6ac75b
No known key found for this signature in database
GPG Key ID: 5BFD39C5359E967D
2 changed files with 16 additions and 1 deletions

View File

@ -48,7 +48,6 @@ FROM: math.ranges => [a,b] ;
{ 3 } [ { 1 2 3 4 5 } lower-median ] unit-test
{ 3 } [ { 1 2 3 4 5 } upper-median ] unit-test
{ 1 } [ { 1 } lower-median ] unit-test
{ 1 } [ { 1 } upper-median ] unit-test
{ 1 } [ { 1 } median ] unit-test
@ -162,6 +161,10 @@ FROM: math.ranges => [a,b] ;
{ 18.9375 40.0 42.8125 } .00001 v~
] unit-test
{ 75 } [
{ 7 7 31 31 47 75 87 115 116 119 119 155 177 } midhinge
] unit-test
{ 0x1.02eb63cff3f8p0 } [ { 1 2 3 } entropy ] unit-test
{ 1.0 } [ 0.5 binary-entropy ] unit-test

View File

@ -201,6 +201,15 @@ PRIVATE>
: quartile ( seq -- seq' )
{ 1/4 1/2 3/4 } quantile5 ;
: interquartile ( seq -- q1 q3 )
quartile [ first ] [ last ] bi ;
: interquartile-range ( seq -- n )
interquartile - ;
: midhinge ( seq -- n )
interquartile + 2 / ;
: trimean ( seq -- x )
quartile first3 [ 2 * ] dip + + 4 / ;
@ -231,6 +240,9 @@ PRIVATE>
: range ( seq -- x )
minmax swap - ;
: fivenum ( seq -- seq' )
[ quartile ] [ minmax ] bi [ prefix ] [ suffix ] bi* ;
: var-ddof ( seq n -- x )
2dup [ length ] dip - 0 <= [
2drop 0