]> gitweb.factorcode.org Git - factor.git/blob - basis/math/statistics/statistics-tests.factor
math.statistics: refactor histogram and histogram-by to use
[factor.git] / basis / math / statistics / statistics-tests.factor
1 USING: arrays kernel math math.functions math.order ranges
2 math.vectors sequences tools.test ;
3 IN: math.statistics
4
5 { 3 } [ { 1 2 3 4 5 } 1 power-mean ] unit-test
6 { t } [ { 1 2 3 4 5 } [ 2 power-mean ] [ quadratic-mean ] bi 1e-10 ~ ] unit-test
7 { 1 } [ { 1 } mean ] unit-test
8 { 0 } [ { } mean ] unit-test
9 { 3/2 } [ { 1 2 } mean ] unit-test
10 { 0.0 } [ { 0 0 0 } geometric-mean ] unit-test
11 { t } [ { 2 2 2 2 } geometric-mean 2.0 .0001 ~ ] unit-test
12 { 1.0 } [ { 1 1 1 } geometric-mean ] unit-test
13 { t } [ 1000 1000 <array> geometric-mean 1000 .01 ~ ] unit-test
14 { t } [ 100000 100000 <array> geometric-mean 100000 .01 ~ ] unit-test
15
16 { 1 } [ { 1 1 1 } harmonic-mean ] unit-test
17 { 12/7 } [ { 1 2 4 } harmonic-mean ] unit-test
18
19 { 5+1/4 } [ { 1 3 5 7 } contraharmonic-mean ] unit-test
20 { 18 } [ { 4 8 15 16 23 42 } 0 trimmed-mean ] unit-test
21 { 15+1/2 } [ { 4 8 15 16 23 42 } 0.2 trimmed-mean ] unit-test
22 { 3 } [ { 1 3 3 3 3 5 } 0.2 winsorized-mean ] unit-test
23
24 { 2470 } [ 20 <iota> sum-of-squares ] unit-test
25 { 2470 } [ 20 <iota> >array sum-of-squares ] unit-test
26 { 371 } [ 4 10 [a..b] sum-of-squares ] unit-test
27 { 371 } [ 4 10 [a..b] >array sum-of-squares ] unit-test
28
29 { 36100 } [ 20 <iota> sum-of-cubes ] unit-test
30 { 36100 } [ 20 <iota> >array sum-of-cubes ] unit-test
31 { 2989 } [ 4 10 [a..b] sum-of-cubes ] unit-test
32 { 2989 } [ 4 10 [a..b] >array sum-of-cubes ] unit-test
33
34 { 562666 } [ 20 <iota> sum-of-quads ] unit-test
35 { 562666 } [ 20 <iota> >array sum-of-quads ] unit-test
36 { 25235 } [ 4 10 [a..b] sum-of-quads ] unit-test
37 { 25235 } [ 4 10 [a..b] >array sum-of-quads ] unit-test
38
39 { 0 } [ { 1 } range ] unit-test
40 { 89 } [ { 1 2 30 90 } range ] unit-test
41 { 2 } [ { 1 2 3 } median ] unit-test
42 { 5/2 } [ { 1 2 3 4 } median ] unit-test
43
44 { 1 } [ { 1 2 3 4 } 0 kth-smallest ] unit-test
45 { 3 } [ { 1 2 3 4 } 2 kth-smallest ] unit-test
46
47 { 4 } [ { 1 2 3 4 } 0 kth-largest ] unit-test
48 { 2 } [ { 1 2 3 4 } 2 kth-largest ] unit-test
49
50 [ { 1 2 3 4 } 30 kth-largest ] [ bounds-error? ] must-fail-with
51 [ { 1 2 3 4 } 2 [ [ ] compare ] kth-object ] [ bounds-error? ] must-fail-with
52 { 3 } [ { 1 2 3 4 } 2 [ before? ] kth-object ] unit-test
53
54 { 1 } [ { 1 } mode ] unit-test
55 { 3 } [ { 1 2 3 3 3 4 5 6 76 7 2 21 1 3 3 3 } mode ] unit-test
56
57 [ { } median ] must-fail
58 [ { } upper-median ] must-fail
59 [ { } lower-median ] must-fail
60
61 { 2 } [ { 1 2 3 4 } lower-median ] unit-test
62 { 3 } [ { 1 2 3 4 } upper-median ] unit-test
63 { 3 } [ { 1 2 3 4 5 } lower-median ] unit-test
64 { 3 } [ { 1 2 3 4 5 } upper-median ] unit-test
65
66 { 1 } [ { 1 } lower-median ] unit-test
67 { 1 } [ { 1 } upper-median ] unit-test
68 { 1 } [ { 1 } median ] unit-test
69
70 { 1 } [ { 1 2 } lower-median ] unit-test
71 { 2 } [ { 1 2 } upper-median ] unit-test
72 { 3/2 } [ { 1 2 } median ] unit-test
73
74 { 1 } [ { 1 2 3 } sample-var ] unit-test
75 { 16 } [ { 4 6 8 10 10 12 14 16 } sample-var ] unit-test
76
77 { 16 } [ { 4 6 8 10 12 14 16 } population-var ] unit-test
78 { 1.0 } [ { 7 8 9 } sample-std ] unit-test
79 { 2/3 } [ { 7 8 9 } 0 var-ddof ] unit-test
80 { 2/3 } [ { 7 8 9 } population-var ] unit-test
81 { 1 } [ { 7 8 9 } 1 var-ddof ] unit-test
82 { 1 } [ { 7 8 9 } sample-var ] unit-test
83 { 2 } [ { 7 8 9 } 2 var-ddof ] unit-test
84 { 0 } [ { 7 8 9 } 3 var-ddof ] unit-test
85
86 { t } [ { 7 8 9 } 0 std-ddof 0.816496580927726 .0001 ~ ] unit-test
87 { t } [ { 7 8 9 } population-std 0.816496580927726 .0001 ~ ] unit-test
88 { 1.0 } [ { 7 8 9 } 1 std-ddof ] unit-test
89 { 1.0 } [ { 7 8 9 } sample-std ] unit-test
90 { 1.0 } [ { 7 8 9 } sample-std ] unit-test
91 { t } [ { 7 8 9 } 2 std-ddof 1.414213562373095 .0001 ~ ] unit-test
92 { 0.0 } [ { 7 8 9 } 3 std-ddof ] unit-test
93
94 { t } [ { 1 2 3 4 } sample-ste 0.6454972243679028 - .0001 < ] unit-test
95
96 { t } [ { 23.2 33.4 22.5 66.3 44.5 } sample-std 18.1906 - .0001 < ] unit-test
97
98 { 0 } [ { 1 } sample-var ] unit-test
99 { 0.0 } [ { 1 } sample-std ] unit-test
100 { 0.0 } [ { 1 } sample-ste ] unit-test
101
102 { 2 } [ { 1 3 5 7 } mean-dev ] unit-test
103 { 4/5 } [ { 1 3 3 3 5 } median-dev ] unit-test
104
105 {
106     H{
107         { 97 5 }
108         { 98 2 }
109         { 99 2 }
110     }
111 } [
112     "aabbcc" histogram
113     "aaa" histogram!
114 ] unit-test
115
116 {
117     H{
118         { 97 5 }
119         { 98 2 }
120         { 99 2 }
121     }
122 } [
123     "aabbcc" [ ] histogram-by
124     "aaa" [ ] histogram-by!
125 ] unit-test
126
127 {
128     H{ { t 2 } { f 7 } }
129 } [
130     "aabbcc" [ even? ] histogram-by
131     "aaa" [ even? ] histogram-by!
132 ] unit-test
133
134 { H{ { 1 1/2 } { 2 1/6 } { 3 1/3 } } }
135 [ { 1 1 1 1 1 1 2 2 3 3 3 3 } normalized-histogram ] unit-test
136
137 { 0 } [ { 1 } { 1 } sample-cov ] unit-test
138 { 2/3 } [ { 1 2 3 } { 4 5 6 } population-cov ] unit-test
139
140 { 0.75 } [ { 1 2 3 4 } dup sample-corr ] unit-test
141 { 1.0 } [ { 1 2 3 4 } dup population-corr ] unit-test
142 { -0.75 } [ { 1 2 3 4 } { -4 -5 -6 -7 } sample-corr ] unit-test
143
144 { { 1 2 4 7 } } [ { 1 1 2 3 } cum-sum ] unit-test
145 { { 1 1 2 6 } } [ { 1 1 2 3 } cum-product ] unit-test
146 { { 5 3 3 1 } } [ { 5 3 4 1 } cum-min ] unit-test
147 { { 1 3 3 5 } } [ { 1 3 1 5 } cum-max ] unit-test
148 { { 1.0 1.5 2.0 } } [ { 1.0 2.0 3.0 } cum-mean ] unit-test
149
150 { t }
151 [
152     { 6 7 15 36 39 40 41 42 43 47 49 } { 1/4 1/2 3/4 } quantile1 [ >float ] map
153     { 15.0 40.0 43.0 } .00001 v~
154 ] unit-test
155
156 { t }
157 [
158     { 6 7 15 36 39 40 41 42 43 47 49 } { 1/4 1/2 3/4 } quantile3 [ >float ] map
159     { 15.0 40.0 42.0 } .00001 v~
160 ] unit-test
161
162 { t }
163 [
164     { 6 7 15 36 39 40 41 42 43 47 49 } { 1/4 1/2 3/4 } quantile4 [ >float ] map
165     { 13.0 39.5 42.25 } .00001 v~
166 ] unit-test
167
168 { t }
169 [
170     { 6 7 15 36 39 40 41 42 43 47 49 } { 1/4 1/2 3/4 } quantile5 [ >float ] map
171     { 20+1/4 40 42+3/4 } .00001 v~
172 ] unit-test
173
174 { t }
175 [
176     { 6 7 15 36 39 40 41 42 43 47 49 } { 1/4 1/2 3/4 } quantile6 [ >float ] map
177     { 15.0 40.0 43.0 } .00001 v~
178 ] unit-test
179
180 { t }
181 [
182     { 6 7 15 36 39 40 41 42 43 47 49 } { 1/4 1/2 3/4 } quantile7 [ >float ] map
183     { 25.5 40.0 42.5 } .00001 v~
184 ] unit-test
185
186 { t }
187 [
188     { 6 7 15 36 39 40 41 42 43 47 49 } { 1/4 1/2 3/4 } quantile8 [ >float ] map
189     { 18.5 40.0 42.83333333333334 } .00001 v~
190 ] unit-test
191
192 { t }
193 [
194     { 6 7 15 36 39 40 41 42 43 47 49 } { 1/4 1/2 3/4 } quantile9 [ >float ] map
195     { 18.9375 40.0 42.8125 } .00001 v~
196 ] unit-test
197
198 { 75 } [
199     { 7 7 31 31 47 75 87 115 116 119 119 155 177 } midhinge
200 ] unit-test
201
202 { 0x1.02eb63cff3f8p0 } [ { 1 2 3 } entropy ] unit-test
203
204 { 1.0 } [ 0.5 binary-entropy ] unit-test
205
206 { { -4 13 -5 2 4 } } [ { 1 -3 10 5 7 11 } differences ] unit-test
207
208 { t t } [
209     { 6.5 3.8 6.6 5.7 6.0 6.4 5.3 } standardize
210     [ mean 0 1e-10 ~ ] [ sample-var 1 1e-10 ~ ] bi
211 ] unit-test
212
213 { t t } [
214     { { 1 -1 2 } { 2 0 0 } { 0 1 -1 } } standardize-2d
215     flip
216     [ [ mean ] map { 0 0 0 } 1e-10 v~ ]
217     [ [ sample-var ] map { 1 1 1 } 1e-10 v~ ] bi
218 ] unit-test
219
220 { { 0 0 0 } } [ { 1 1 1 } standardize ] unit-test
221
222 { { 0 1/4 1/2 3/4 1 } } [ 5 <iota> rescale ] unit-test
223
224
225 {
226     { 2 2 2 1 0 5 6 7 7 7 7 }
227 } [
228     { 30 30 30 20 10 40 50 60 60 60 60 } rank-values
229 ] unit-test
230
231 {
232     { 1 0 2 3 4 }
233 }
234 [ { 3 1 4 15 92 } rank-values ] unit-test
235
236 { { 1 1 2 3 3 4 } }
237 [ { 1 2 3 3 2 3 } [ odd? ] cum-count ] unit-test
238
239 { { 0 0 1 2 2 3 } }
240 [ { 1 2 3 3 2 3 } [ 3 = ] cum-count ] unit-test
241
242 { { 0 1 3 6 } }
243 [ { 1 2 3 4 } cum-sum0 ] unit-test
244
245 { { 1 2 6 } }
246 [ { 2 3 4 } cum-product1 ] unit-test
247
248 { { 1 } } [
249     { 1 2 3 4 5 10 21 12 12 12 12203 3403 030 3022 2 2 }
250     { 1/1000 } quantile5
251 ] unit-test
252
253 { 15+1/2 } [ { 4 8 15 16 23 42 } trimean ] unit-test
254
255 { 0 } [ { } dcg ] unit-test
256 { 0.0 } [ { } ndcg ] unit-test
257
258 { 0.0 } [ { 0 } dcg ] unit-test
259 { 0.0 } [ { 0 } ndcg ] unit-test
260
261 { t } [ { 3 2 3 0 1 2 } dcg 6.861126688593501 1e-6 ~ ] unit-test
262 { t } [ { 3 2 3 0 1 2 } ndcg 0.9608081943360615 1e-6 ~ ] unit-test