]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/math/statistics/statistics.factor
factor: remove rest of double paren words.
[factor.git] / basis / math / statistics / statistics.factor
index 5b8d8127fcde7b9ea6181a70406107c50f4a98dd..84ad35cd14cca01b6c2906e7024a82e8f26e46a0 100644 (file)
@@ -60,7 +60,7 @@ PRIVATE>
 
 <PRIVATE
 
-:: ((kth-object)) ( seq k nth-quot exchange-quot quot: ( x y -- ? ) -- elt )
+:: kth-object-impl ( seq k nth-quot exchange-quot quot: ( x y -- ? ) -- elt )
     ! Wirth's method, Algorithm's + Data structues = Programs p. 84
     k seq bounds-check 2drop
     0 :> i!
@@ -91,7 +91,7 @@ PRIVATE>
 
 : (kth-object) ( seq k nth-quot exchange-quot quot: ( x y -- ? ) -- elt )
     ! The algorithm modifiers seq, so we clone it
-    [ >array ] 4dip ((kth-object)) ; inline
+    [ >array ] 4dip kth-object-impl ; inline
 
 : kth-object-unsafe ( seq k quot: ( x y -- ? ) -- elt )
     [ [ nth-unsafe ] [ exchange-unsafe ] ] dip (kth-object) ; inline
@@ -302,24 +302,22 @@ ALIAS: std sample-std
 
 : sample-ste ( seq -- x ) 1 ste-ddof ;
 
-: ((r)) ( x-mean y-mean x-seq y-seq -- (r) )
+<PRIVATE
+: r-sum-diffs ( x-mean y-mean x-seq y-seq -- (r) )
     ! finds sigma((xi-mean(x))(yi-mean(y))
     0 [ [ [ pick ] dip swap - ] bi@ * + ] 2reduce 2nip ;
 
 : (r) ( x-mean y-mean x-seq y-seq x-std y-std -- r )
-    * recip [ [ ((r)) ] keep length 1 - / ] dip * ;
+    * recip [ [ r-sum-diffs ] keep length 1 - / ] dip * ;
 
-: [r] ( xy-pairs -- x-mean y-mean x-seq y-seq x-std y-std )
+: r-stats ( xy-pairs -- x-mean y-mean x-seq y-seq x-std y-std )
     first2 [ [ [ mean ] bi@ ] 2keep ] 2keep [ population-std ] bi@ ;
+PRIVATE>
 
-: r ( xy-pairs -- r )
-    [r] (r) ;
-
-: r^2 ( xy-pairs -- r )
-    r sq ;
+: pearson-r ( xy-pairs -- r ) r-stats (r) ;
 
 : least-squares ( xy-pairs -- alpha beta )
-    [r] { [ 2dup ] [ ] [ ] [ ] [ ] } spread
+    r-stats [ 2dup ] 4 ndip
     ! stack is x-mean y-mean x-mean y-mean x-seq y-seq x-std y-std
     [ (r) ] 2keep ! stack is mean(x) mean(y) r sx sy
     swap / * ! stack is mean(x) mean(y) beta