1313f8509327159ed27bd26510c6dcfcc6c611c6
[pspp] / tests / language / stats / frequencies.at
1 AT_BANNER([FREQUENCIES procedure])
2
3 AT_SETUP([FREQUENCIES string variable crash])
4 AT_DATA([frequencies.sps],
5   [DATA LIST FREE/
6    name  (A8) value * quantity .
7 BEGIN DATA.
8 Cables 829 3 
9 END DATA.
10 EXECUTE.
11
12 FREQUENCIES /VAR = name.
13 ])
14 AT_CHECK([pspp -O format=csv frequencies.sps], [0],
15   [Table: name
16 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
17 ,Cables  ,1,100.00,100.00,100.00
18 Total,,1,100.0,100.0,
19 ])
20 AT_CLEANUP
21
22 # Tests for a bug where pspp would crash if two FREQUENCIES commands
23 # existed in a input file.
24 AT_SETUP([FREQUENCIES two runs crash])
25 AT_DATA([frequencies.sps],
26   [data list free /v1 v2.
27 begin data.
28 0 1
29 2 3 
30 4 5
31 3 4
32 end data.
33
34 frequencies v1 v2/statistics=none.
35 frequencies v1 v2/statistics=none.
36 ])
37 AT_CHECK([pspp -O format=csv frequencies.sps], [0],
38   [Table: v1
39 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
40 ,.00,1,25.00,25.00,25.00
41 ,2.00,1,25.00,25.00,50.00
42 ,3.00,1,25.00,25.00,75.00
43 ,4.00,1,25.00,25.00,100.00
44 Total,,4,100.0,100.0,
45
46 Table: v2
47 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
48 ,1.00,1,25.00,25.00,25.00
49 ,3.00,1,25.00,25.00,50.00
50 ,4.00,1,25.00,25.00,75.00
51 ,5.00,1,25.00,25.00,100.00
52 Total,,4,100.0,100.0,
53
54 Table: v1
55 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
56 ,.00,1,25.00,25.00,25.00
57 ,2.00,1,25.00,25.00,50.00
58 ,3.00,1,25.00,25.00,75.00
59 ,4.00,1,25.00,25.00,100.00
60 Total,,4,100.0,100.0,
61
62 Table: v2
63 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
64 ,1.00,1,25.00,25.00,25.00
65 ,3.00,1,25.00,25.00,50.00
66 ,4.00,1,25.00,25.00,75.00
67 ,5.00,1,25.00,25.00,100.00
68 Total,,4,100.0,100.0,
69 ])
70 AT_CLEANUP
71
72 # Tests for a bug where PSPP would crash when a FREQUENCIES command
73 # was used with the HTML output driver.
74 AT_SETUP([FREQUENCIES HTML output crash])
75 AT_DATA([frequencies.sps],
76   [data list free /v1 v2.
77 begin data.
78 0 1
79 2 3 
80 4 5
81 3 4
82 end data.
83
84 list.
85
86 frequencies v1/statistics=none.
87 ])
88 AT_CHECK([pspp -o - -O format=csv -o pspp.html frequencies.sps], [0],
89   [Table: Data List
90 v1,v2
91 .00,1.00
92 2.00,3.00
93 4.00,5.00
94 3.00,4.00
95
96 Table: v1
97 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
98 ,.00,1,25.00,25.00,25.00
99 ,2.00,1,25.00,25.00,50.00
100 ,3.00,1,25.00,25.00,75.00
101 ,4.00,1,25.00,25.00,100.00
102 Total,,4,100.0,100.0,
103 ])
104 AT_CHECK([test -s pspp.html])
105 AT_CLEANUP
106
107 # Tests for a bug which crashed PSPP when a piechart with too many
108 # segments was requested.
109 AT_SETUP([FREQUENCIES pie chart crash])
110 AT_DATA([frequencies.sps],
111   [data list list /x * w *.
112 begin data.
113 1  4
114 34 10
115 -9 15
116 232 6
117 11  4
118 134 1
119 9  5
120 32 16
121 -2 6
122 2  16
123 20  6
124 end data.
125
126 weight by w.
127
128 frequencies /x /format=notable /statistics=none
129         /piechart.
130 ])
131 # Cannot use the CSV driver for this because it does not output charts
132 # at all.
133 AT_CHECK([pspp frequencies.sps], [0], [dnl
134 Reading free-form data from INLINE.
135 +--------+------+
136 |Variable|Format|
137 #========#======#
138 |x       |F8.0  |
139 |w       |F8.0  |
140 +--------+------+
141 ])
142 AT_CLEANUP
143
144 # Tests for a bug which crashed PSPP when the median and a histogram
145 # were both requested.
146 AT_SETUP([FREQUENCIES median with histogram crash])
147 AT_DATA([frequencies.sps], [dnl
148 data list list notable /x.
149 begin data.
150 1
151 end data.
152
153 frequencies /x /histogram /STATISTICS=median.
154 ])
155 AT_CHECK([pspp -O format=csv frequencies.sps], [0], [ignore])
156 dnl Ignore output - No crash test.
157 AT_CLEANUP
158
159 # Tests for a bug which caused FREQUENCIES following TEMPORARY to
160 # crash (bug #11492).
161 AT_SETUP([FREQUENCIES crash after TEMPORARY])
162 AT_DATA([frequencies.sps],
163   [DATA LIST LIST /SEX (A1) X *.
164 BEGIN DATA.
165 M 31
166 F 21
167 M 41
168 F 31
169 M 13
170 F 12
171 M 14
172 F 13
173 END DATA.
174
175
176 TEMPORARY
177 SELECT IF SEX EQ 'F'
178 FREQUENCIES /X .
179
180 FINISH
181 ])
182 AT_CHECK([pspp -O format=csv frequencies.sps], [0],
183   [Table: Reading free-form data from INLINE.
184 Variable,Format
185 SEX,A1
186 X,F8.0
187
188 Table: X
189 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
190 ,12.00,1,25.00,25.00,25.00
191 ,13.00,1,25.00,25.00,50.00
192 ,21.00,1,25.00,25.00,75.00
193 ,31.00,1,25.00,25.00,100.00
194 Total,,4,100.0,100.0,
195
196 Table: X
197 N,Valid,4
198 ,Missing,0
199 Mean,,19.25
200 Std Dev,,8.81
201 Minimum,,12.00
202 Maximum,,31.00
203 ])
204 AT_CLEANUP
205
206 m4_define([FREQUENCIES_NTILES_OUTPUT],
207   [Table: x
208 N,Valid,5
209 ,Missing,0
210 Mean,,3.00
211 Std Dev,,1.58
212 Minimum,,1.00
213 Maximum,,5.00
214 Percentiles,0,1.00
215 ,25,2.00
216 ,33,2.33
217 ,50 (Median),3.00
218 ,67,3.67
219 ,75,4.00
220 ,100,5.00
221 ])
222 AT_SETUP([FREQUENCIES basic percentiles])
223 AT_DATA([frequencies.sps],
224   [DATA LIST LIST notable /x * .
225 BEGIN DATA.
226
227
228
229
230 5
231 END DATA.
232
233 FREQUENCIES 
234         VAR=x
235         /FORMAT=NOTABLE
236         /PERCENTILES = 0 25 33.333 50 66.666 75 100.
237 ])
238 AT_CHECK([pspp -O format=csv frequencies.sps], [0],
239   [FREQUENCIES_NTILES_OUTPUT])
240 AT_CLEANUP
241
242 AT_SETUP([FREQUENCIES basic n-tiles])
243 AT_DATA([frequencies.sps],
244   [DATA LIST LIST notable /x * .
245 BEGIN DATA.
246
247
248
249
250 5
251 END DATA.
252
253 FREQUENCIES 
254         VAR=x
255         /FORMAT=NOTABLE
256         /NTILES = 3
257         /NTILES = 4.
258 ])
259 AT_CHECK([pspp -O format=csv frequencies.sps], [0],
260   [FREQUENCIES_NTILES_OUTPUT])
261 AT_CLEANUP
262
263 AT_SETUP([FREQUENCIES compatibility percentiles])
264 AT_DATA([frequencies.sps],
265   [DATA LIST LIST notable /X * .
266 BEGIN DATA.
267
268
269
270
271 5
272 END DATA.
273
274 FREQUENCIES 
275         VAR=x
276         /ALGORITHM=COMPATIBLE
277         /PERCENTILES = 0 25 50 75 100.
278 ])
279 AT_CHECK([pspp -O format=csv frequencies.sps], [0],
280   [Table: X
281 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
282 ,1.00,1,20.00,20.00,20.00
283 ,2.00,1,20.00,20.00,40.00
284 ,3.00,1,20.00,20.00,60.00
285 ,4.00,1,20.00,20.00,80.00
286 ,5.00,1,20.00,20.00,100.00
287 Total,,5,100.0,100.0,
288
289 Table: X
290 N,Valid,5
291 ,Missing,0
292 Mean,,3.00
293 Std Dev,,1.58
294 Minimum,,1.00
295 Maximum,,5.00
296 Percentiles,0,1.00
297 ,25,1.50
298 ,50 (Median),3.00
299 ,75,4.50
300 ,100,5.00
301 ])
302 AT_CLEANUP
303
304 AT_SETUP([FREQUENCIES enhanced percentiles])
305 AT_DATA([frequencies.sps],
306   [DATA LIST LIST notable /X * .
307 BEGIN DATA.
308
309
310
311
312 5
313 END DATA.
314
315 FREQUENCIES 
316         VAR=x
317         /PERCENTILES = 0 25 50 75 100.
318 ])
319 AT_CHECK([pspp -O format=csv frequencies.sps], [0],
320   [Table: X
321 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
322 ,1.00,1,20.00,20.00,20.00
323 ,2.00,1,20.00,20.00,40.00
324 ,3.00,1,20.00,20.00,60.00
325 ,4.00,1,20.00,20.00,80.00
326 ,5.00,1,20.00,20.00,100.00
327 Total,,5,100.0,100.0,
328
329 Table: X
330 N,Valid,5
331 ,Missing,0
332 Mean,,3.00
333 Std Dev,,1.58
334 Minimum,,1.00
335 Maximum,,5.00
336 Percentiles,0,1.00
337 ,25,2.00
338 ,50 (Median),3.00
339 ,75,4.00
340 ,100,5.00
341 ])
342 AT_CLEANUP
343
344 AT_SETUP([FREQUENCIES enhanced percentiles, weighted])
345 AT_DATA([frequencies.sps],
346   [DATA LIST LIST notable /X * F *.
347 BEGIN DATA.
348 1 2
349 2 2
350 3 2
351 4 1
352 4 1
353 5 1
354 5 1
355 END DATA.
356
357 WEIGHT BY f.
358
359 FREQUENCIES 
360         VAR=x
361         /PERCENTILES = 0 25 50 75 100.
362 ])
363 AT_CHECK([pspp -O format=csv frequencies.sps], [0],
364   [Table: X
365 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
366 ,1.00,2.00,20.00,20.00,20.00
367 ,2.00,2.00,20.00,20.00,40.00
368 ,3.00,2.00,20.00,20.00,60.00
369 ,4.00,2.00,20.00,20.00,80.00
370 ,5.00,2.00,20.00,20.00,100.00
371 Total,,10.00,100.0,100.0,
372
373 Table: X
374 N,Valid,10.00
375 ,Missing,.00
376 Mean,,3.00
377 Std Dev,,1.49
378 Minimum,,1.00
379 Maximum,,5.00
380 Percentiles,0,1.00
381 ,25,2.00
382 ,50 (Median),3.00
383 ,75,4.00
384 ,100,5.00
385 ])
386 AT_CLEANUP
387
388 AT_SETUP([FREQUENCIES enhanced percentiles, weighted (2)])
389 AT_DATA([frequencies.sps],
390   [DATA LIST LIST notable /X * F *.
391 BEGIN DATA.
392 1 1
393 3 2
394 4 1
395 5 1
396 5 1
397 END DATA.
398
399 WEIGHT BY f.
400
401 FREQUENCIES 
402         VAR=x
403         /PERCENTILES = 0 25 50 75 100.
404 ])
405 AT_CHECK([pspp -O format=csv frequencies.sps], [0],
406   [Table: X
407 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
408 ,1.00,1.00,16.67,16.67,16.67
409 ,3.00,2.00,33.33,33.33,50.00
410 ,4.00,1.00,16.67,16.67,66.67
411 ,5.00,2.00,33.33,33.33,100.00
412 Total,,6.00,100.0,100.0,
413
414 Table: X
415 N,Valid,6.00
416 ,Missing,.00
417 Mean,,3.50
418 Std Dev,,1.52
419 Minimum,,1.00
420 Maximum,,5.00
421 Percentiles,0,1.00
422 ,25,3.00
423 ,50 (Median),3.50
424 ,75,4.75
425 ,100,5.00
426 ])
427 AT_CLEANUP
428
429 dnl Data for this test case from Fabio Bordignon <bordignon@demos.it>.
430 AT_SETUP([FREQUENCIES enhanced percentiles, weighted (3)])
431 AT_DATA([frequencies.sps],
432   [DATA LIST LIST notable /X * F *.
433 BEGIN DATA.
434 1 7
435 2 16
436 3 12
437 4 5
438 END DATA.
439
440 WEIGHT BY f.
441
442 FREQUENCIES 
443         VAR=x
444         /PERCENTILES = 0 25 50 75 100.
445 ])
446 AT_CHECK([pspp -O format=csv frequencies.sps], [0], [dnl
447 Table: X
448 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
449 ,1.00,7.00,17.50,17.50,17.50
450 ,2.00,16.00,40.00,40.00,57.50
451 ,3.00,12.00,30.00,30.00,87.50
452 ,4.00,5.00,12.50,12.50,100.00
453 Total,,40.00,100.0,100.0,
454
455 Table: X
456 N,Valid,40.00
457 ,Missing,.00
458 Mean,,2.38
459 Std Dev,,.93
460 Minimum,,1.00
461 Maximum,,4.00
462 Percentiles,0,1.00
463 ,25,2.00
464 ,50 (Median),2.00
465 ,75,3.00
466 ,100,4.00
467 ])
468 AT_CLEANUP
469
470 AT_SETUP([FREQUENCIES enhanced percentiles, weighted, missing values])
471 AT_DATA([frequencies.sps],
472   [DATA LIST LIST notable /X * F *.
473 BEGIN DATA.
474 1 1
475 3 2
476 4 1
477 5 1
478 5 1
479 99 4
480 END DATA.
481
482 MISSING VALUE x (99.0) .
483 WEIGHT BY f.
484
485 FREQUENCIES 
486         VAR=x
487         /PERCENTILES = 0 25 50 75 100.
488 ])
489 AT_CHECK([pspp -O format=csv frequencies.sps], [0],
490   [Table: X
491 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
492 ,1.00,1.00,10.00,16.67,16.67
493 ,3.00,2.00,20.00,33.33,50.00
494 ,4.00,1.00,10.00,16.67,66.67
495 ,5.00,2.00,20.00,33.33,100.00
496 ,99.00,4.00,40.00,Missing,
497 Total,,10.00,100.0,100.0,
498
499 Table: X
500 N,Valid,6.00
501 ,Missing,4.00
502 Mean,,3.50
503 Std Dev,,1.52
504 Minimum,,1.00
505 Maximum,,5.00
506 Percentiles,0,1.00
507 ,25,3.00
508 ,50 (Median),3.50
509 ,75,4.75
510 ,100,5.00
511 ])
512 AT_CLEANUP