math.extras: Add sum-cum-sum. Change concentration-coefficient to be more straightforward.
parent
7fb8db2e74
commit
768611d130
|
@ -155,14 +155,15 @@ PRIVATE>
|
||||||
: until-zero ( n quot -- )
|
: until-zero ( n quot -- )
|
||||||
[ dup zero? ] swap until drop ; inline
|
[ dup zero? ] swap until drop ; inline
|
||||||
|
|
||||||
|
: sum-cum-sum ( seq -- sum sum-of-cumulative-sum-of-seq )
|
||||||
|
[ 0 0 ] dip [ '[ _ + ] dip dupd + ] each ; inline
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
|
||||||
:: (gini) ( seq -- x )
|
:: (gini) ( seq -- x )
|
||||||
seq natural-sort :> sorted
|
seq natural-sort :> sorted
|
||||||
seq length :> len
|
seq length :> len
|
||||||
0 0 sorted [
|
sorted sum-cum-sum :> ( a b )
|
||||||
'[ _ + ] dip dupd +
|
|
||||||
] each :> ( a b )
|
|
||||||
b len a * / :> B
|
b len a * / :> B
|
||||||
1 len recip + 2 B * - ;
|
1 len recip + 2 B * - ;
|
||||||
|
|
||||||
|
@ -172,8 +173,8 @@ PRIVATE>
|
||||||
dup length 1 <= [ drop 0 ] [ (gini) ] if ;
|
dup length 1 <= [ drop 0 ] [ (gini) ] if ;
|
||||||
|
|
||||||
: concentration-coefficient ( seq -- x )
|
: concentration-coefficient ( seq -- x )
|
||||||
dup gini [
|
dup length 1 <= [
|
||||||
drop 0
|
drop 0
|
||||||
] [
|
] [
|
||||||
[ length [ ] [ 1 - ] bi / ] dip *
|
[ gini ] [ length [ ] [ 1 - ] bi / ] bi *
|
||||||
] if-zero ;
|
] if ;
|
||||||
|
|
Loading…
Reference in New Issue