FREQUENCIES: Fixed crash showing histograms of limited range.
[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 dnl Check that histogram subcommand runs wihout crashing
145 AT_SETUP([FREQUENCIES histogram crash])
146 AT_DATA([frequencies.sps],
147   [data list notable list /x * w *.
148 begin data.
149 1  4
150 34 10
151 -9 15
152 232 6
153 11  4
154 134 1
155 9  5
156 32 16
157 -2 6
158 2  16
159 20  6
160 end data.
161
162 weight by w.
163
164 frequencies /x 
165             /format=notable 
166             /statistics=none
167             /histogram=minimum(0) maximum(50) percent(5) normal.
168 ])
169 # Cannot use the CSV driver for this because it does not output charts
170 # at all.
171 AT_CHECK([pspp -O format=pdf frequencies.sps], [0], [ignore])
172 AT_CLEANUP
173
174 # Tests for a bug which crashed PSPP when the median and a histogram
175 # were both requested.
176 AT_SETUP([FREQUENCIES median with histogram crash])
177 AT_DATA([frequencies.sps], [dnl
178 data list list notable /x.
179 begin data.
180 1
181 end data.
182
183 frequencies /x /histogram /STATISTICS=median.
184 ])
185 AT_CHECK([pspp -O format=csv frequencies.sps], [0], [ignore])
186 dnl Ignore output - No crash test.
187 AT_CLEANUP
188
189 # Tests for a bug which caused FREQUENCIES following TEMPORARY to
190 # crash (bug #11492).
191 AT_SETUP([FREQUENCIES crash after TEMPORARY])
192 AT_DATA([frequencies.sps],
193   [DATA LIST LIST /SEX (A1) X *.
194 BEGIN DATA.
195 M 31
196 F 21
197 M 41
198 F 31
199 M 13
200 F 12
201 M 14
202 F 13
203 END DATA.
204
205
206 TEMPORARY
207 SELECT IF SEX EQ 'F'
208 FREQUENCIES /X .
209
210 FINISH
211 ])
212 AT_CHECK([pspp -O format=csv frequencies.sps], [0],
213   [Table: Reading free-form data from INLINE.
214 Variable,Format
215 SEX,A1
216 X,F8.0
217
218 Table: X
219 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
220 ,12.00,1,25.00,25.00,25.00
221 ,13.00,1,25.00,25.00,50.00
222 ,21.00,1,25.00,25.00,75.00
223 ,31.00,1,25.00,25.00,100.00
224 Total,,4,100.0,100.0,
225
226 Table: X
227 N,Valid,4
228 ,Missing,0
229 Mean,,19.25
230 Std Dev,,8.81
231 Minimum,,12.00
232 Maximum,,31.00
233 ])
234 AT_CLEANUP
235
236 m4_define([FREQUENCIES_NTILES_OUTPUT],
237   [Table: x
238 N,Valid,5
239 ,Missing,0
240 Mean,,3.00
241 Std Dev,,1.58
242 Minimum,,1.00
243 Maximum,,5.00
244 Percentiles,0,1.00
245 ,25,2.00
246 ,33,2.33
247 ,50 (Median),3.00
248 ,67,3.67
249 ,75,4.00
250 ,100,5.00
251 ])
252 AT_SETUP([FREQUENCIES basic percentiles])
253 AT_DATA([frequencies.sps],
254   [DATA LIST LIST notable /x * .
255 BEGIN DATA.
256
257
258
259
260 5
261 END DATA.
262
263 FREQUENCIES 
264         VAR=x
265         /FORMAT=NOTABLE
266         /PERCENTILES = 0 25 33.333 50 66.666 75 100.
267 ])
268 AT_CHECK([pspp -O format=csv frequencies.sps], [0],
269   [FREQUENCIES_NTILES_OUTPUT])
270 AT_CLEANUP
271
272 AT_SETUP([FREQUENCIES basic n-tiles])
273 AT_DATA([frequencies.sps],
274   [DATA LIST LIST notable /x * .
275 BEGIN DATA.
276
277
278
279
280 5
281 END DATA.
282
283 FREQUENCIES 
284         VAR=x
285         /FORMAT=NOTABLE
286         /NTILES = 3
287         /NTILES = 4.
288 ])
289 AT_CHECK([pspp -O format=csv frequencies.sps], [0],
290   [FREQUENCIES_NTILES_OUTPUT])
291 AT_CLEANUP
292
293 AT_SETUP([FREQUENCIES compatibility percentiles])
294 AT_DATA([frequencies.sps],
295   [DATA LIST LIST notable /X * .
296 BEGIN DATA.
297
298
299
300
301 5
302 END DATA.
303
304 FREQUENCIES 
305         VAR=x
306         /ALGORITHM=COMPATIBLE
307         /PERCENTILES = 0 25 50 75 100.
308 ])
309 AT_CHECK([pspp -O format=csv frequencies.sps], [0],
310   [Table: X
311 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
312 ,1.00,1,20.00,20.00,20.00
313 ,2.00,1,20.00,20.00,40.00
314 ,3.00,1,20.00,20.00,60.00
315 ,4.00,1,20.00,20.00,80.00
316 ,5.00,1,20.00,20.00,100.00
317 Total,,5,100.0,100.0,
318
319 Table: X
320 N,Valid,5
321 ,Missing,0
322 Mean,,3.00
323 Std Dev,,1.58
324 Minimum,,1.00
325 Maximum,,5.00
326 Percentiles,0,1.00
327 ,25,1.50
328 ,50 (Median),3.00
329 ,75,4.50
330 ,100,5.00
331 ])
332 AT_CLEANUP
333
334 AT_SETUP([FREQUENCIES enhanced percentiles])
335 AT_DATA([frequencies.sps],
336   [DATA LIST LIST notable /X * .
337 BEGIN DATA.
338
339
340
341
342 5
343 END DATA.
344
345 FREQUENCIES 
346         VAR=x
347         /PERCENTILES = 0 25 50 75 100.
348 ])
349 AT_CHECK([pspp -O format=csv frequencies.sps], [0],
350   [Table: X
351 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
352 ,1.00,1,20.00,20.00,20.00
353 ,2.00,1,20.00,20.00,40.00
354 ,3.00,1,20.00,20.00,60.00
355 ,4.00,1,20.00,20.00,80.00
356 ,5.00,1,20.00,20.00,100.00
357 Total,,5,100.0,100.0,
358
359 Table: X
360 N,Valid,5
361 ,Missing,0
362 Mean,,3.00
363 Std Dev,,1.58
364 Minimum,,1.00
365 Maximum,,5.00
366 Percentiles,0,1.00
367 ,25,2.00
368 ,50 (Median),3.00
369 ,75,4.00
370 ,100,5.00
371 ])
372 AT_CLEANUP
373
374 AT_SETUP([FREQUENCIES enhanced percentiles, weighted])
375 AT_DATA([frequencies.sps],
376   [DATA LIST LIST notable /X * F *.
377 BEGIN DATA.
378 1 2
379 2 2
380 3 2
381 4 1
382 4 1
383 5 1
384 5 1
385 END DATA.
386
387 WEIGHT BY f.
388
389 FREQUENCIES 
390         VAR=x
391         /PERCENTILES = 0 25 50 75 100.
392 ])
393 AT_CHECK([pspp -O format=csv frequencies.sps], [0],
394   [Table: X
395 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
396 ,1.00,2.00,20.00,20.00,20.00
397 ,2.00,2.00,20.00,20.00,40.00
398 ,3.00,2.00,20.00,20.00,60.00
399 ,4.00,2.00,20.00,20.00,80.00
400 ,5.00,2.00,20.00,20.00,100.00
401 Total,,10.00,100.0,100.0,
402
403 Table: X
404 N,Valid,10.00
405 ,Missing,.00
406 Mean,,3.00
407 Std Dev,,1.49
408 Minimum,,1.00
409 Maximum,,5.00
410 Percentiles,0,1.00
411 ,25,2.00
412 ,50 (Median),3.00
413 ,75,4.00
414 ,100,5.00
415 ])
416 AT_CLEANUP
417
418 AT_SETUP([FREQUENCIES enhanced percentiles, weighted (2)])
419 AT_DATA([frequencies.sps],
420   [DATA LIST LIST notable /X * F *.
421 BEGIN DATA.
422 1 1
423 3 2
424 4 1
425 5 1
426 5 1
427 END DATA.
428
429 WEIGHT BY f.
430
431 FREQUENCIES 
432         VAR=x
433         /PERCENTILES = 0 25 50 75 100.
434 ])
435 AT_CHECK([pspp -O format=csv frequencies.sps], [0],
436   [Table: X
437 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
438 ,1.00,1.00,16.67,16.67,16.67
439 ,3.00,2.00,33.33,33.33,50.00
440 ,4.00,1.00,16.67,16.67,66.67
441 ,5.00,2.00,33.33,33.33,100.00
442 Total,,6.00,100.0,100.0,
443
444 Table: X
445 N,Valid,6.00
446 ,Missing,.00
447 Mean,,3.50
448 Std Dev,,1.52
449 Minimum,,1.00
450 Maximum,,5.00
451 Percentiles,0,1.00
452 ,25,3.00
453 ,50 (Median),3.50
454 ,75,4.75
455 ,100,5.00
456 ])
457 AT_CLEANUP
458
459 dnl Data for this test case from Fabio Bordignon <bordignon@demos.it>.
460 AT_SETUP([FREQUENCIES enhanced percentiles, weighted (3)])
461 AT_DATA([frequencies.sps],
462   [DATA LIST LIST notable /X * F *.
463 BEGIN DATA.
464 1 7
465 2 16
466 3 12
467 4 5
468 END DATA.
469
470 WEIGHT BY f.
471
472 FREQUENCIES 
473         VAR=x
474         /PERCENTILES = 0 25 50 75 100.
475 ])
476 AT_CHECK([pspp -O format=csv frequencies.sps], [0], [dnl
477 Table: X
478 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
479 ,1.00,7.00,17.50,17.50,17.50
480 ,2.00,16.00,40.00,40.00,57.50
481 ,3.00,12.00,30.00,30.00,87.50
482 ,4.00,5.00,12.50,12.50,100.00
483 Total,,40.00,100.0,100.0,
484
485 Table: X
486 N,Valid,40.00
487 ,Missing,.00
488 Mean,,2.38
489 Std Dev,,.93
490 Minimum,,1.00
491 Maximum,,4.00
492 Percentiles,0,1.00
493 ,25,2.00
494 ,50 (Median),2.00
495 ,75,3.00
496 ,100,4.00
497 ])
498 AT_CLEANUP
499
500 AT_SETUP([FREQUENCIES enhanced percentiles, weighted, missing values])
501 AT_DATA([frequencies.sps],
502   [DATA LIST LIST notable /X * F *.
503 BEGIN DATA.
504 1 1
505 3 2
506 4 1
507 5 1
508 5 1
509 99 4
510 END DATA.
511
512 MISSING VALUE x (99.0) .
513 WEIGHT BY f.
514
515 FREQUENCIES 
516         VAR=x
517         /PERCENTILES = 0 25 50 75 100.
518 ])
519
520 AT_CHECK([pspp -O format=csv frequencies.sps], [0],
521   [Table: X
522 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
523 ,1.00,1.00,10.00,16.67,16.67
524 ,3.00,2.00,20.00,33.33,50.00
525 ,4.00,1.00,10.00,16.67,66.67
526 ,5.00,2.00,20.00,33.33,100.00
527 ,99.00,4.00,40.00,Missing,
528 Total,,10.00,100.0,100.0,
529
530 Table: X
531 N,Valid,6.00
532 ,Missing,4.00
533 Mean,,3.50
534 Std Dev,,1.52
535 Minimum,,1.00
536 Maximum,,5.00
537 Percentiles,0,1.00
538 ,25,3.00
539 ,50 (Median),3.50
540 ,75,4.75
541 ,100,5.00
542 ])
543 AT_CLEANUP
544
545 AT_SETUP([FREQUENCIES dichotomous histogram])
546 AT_DATA([frequencies.sps], [dnl
547 data list notable list /d4 *.
548 begin data.
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566 end data.
567
568 FREQUENCIES
569         /VARIABLES = d4
570         /FORMAT=AVALUE TABLE
571         /HISTOGRAM=NORMAL
572         .
573 ])
574
575 AT_CHECK([pspp frequencies.sps], [0],  [ignore])
576 AT_CLEANUP