1 dnl PSPP - a program for statistical analysis.
2 dnl Copyright (C) 2017 Free Software Foundation, Inc.
4 dnl This program is free software: you can redistribute it and/or modify
5 dnl it under the terms of the GNU General Public License as published by
6 dnl the Free Software Foundation, either version 3 of the License, or
7 dnl (at your option) any later version.
9 dnl This program is distributed in the hope that it will be useful,
10 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
11 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 dnl GNU General Public License for more details.
14 dnl You should have received a copy of the GNU General Public License
15 dnl along with this program. If not, see <http://www.gnu.org/licenses/>.
17 AT_BANNER([FREQUENCIES procedure])
19 AT_SETUP([FREQUENCIES string variable])
20 AT_DATA([frequencies.sps],
22 name (A8) value * quantity .
37 FREQUENCIES /VAR = name/ORDER=ANALYSIS.
39 AT_CHECK([pspp -O format=csv frequencies.sps], [0], [dnl
41 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
42 ,bar ,2,20.00,20.00,20.00
43 ,baz ,4,40.00,40.00,60.00
44 ,foo ,2,20.00,20.00,80.00
45 ,quux ,2,20.00,20.00,100.00
46 Total,,10,100.0,100.0,
50 # Tests for a bug where pspp would crash if two FREQUENCIES commands
51 # existed in a input file.
52 AT_SETUP([FREQUENCIES two runs crash])
53 AT_DATA([frequencies.sps],
54 [data list free /v1 v2.
62 frequencies v1 v2/statistics=none/ORDER=VARIABLE.
63 frequencies v1 v2/statistics=none.
65 AT_CHECK([pspp -O format=csv frequencies.sps], [0],
67 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
68 ,.00,1,25.00,25.00,25.00
69 ,2.00,1,25.00,25.00,50.00
70 ,3.00,1,25.00,25.00,75.00
71 ,4.00,1,25.00,25.00,100.00
75 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
76 ,1.00,1,25.00,25.00,25.00
77 ,3.00,1,25.00,25.00,50.00
78 ,4.00,1,25.00,25.00,75.00
79 ,5.00,1,25.00,25.00,100.00
83 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
84 ,.00,1,25.00,25.00,25.00
85 ,2.00,1,25.00,25.00,50.00
86 ,3.00,1,25.00,25.00,75.00
87 ,4.00,1,25.00,25.00,100.00
91 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
92 ,1.00,1,25.00,25.00,25.00
93 ,3.00,1,25.00,25.00,50.00
94 ,4.00,1,25.00,25.00,75.00
95 ,5.00,1,25.00,25.00,100.00
100 # Test that the LIMIT specification works.
101 AT_SETUP([FREQUENCIES with LIMIT])
102 AT_DATA([frequencies.sps],
103 [data list free /v1 v2.
111 frequencies v1 v2/statistics=none/FORMAT=LIMIT(3).
113 AT_CHECK([pspp -O format=csv frequencies.sps], [0], [dnl
115 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
116 ,1.00,1,25.00,25.00,25.00
117 ,3.00,1,25.00,25.00,50.00
118 ,5.00,2,50.00,50.00,100.00
119 Total,,4,100.0,100.0,
123 # Tests for a bug where PSPP would crash when a FREQUENCIES command
124 # was used with the HTML output driver.
125 AT_SETUP([FREQUENCIES HTML output crash])
126 AT_DATA([frequencies.sps],
127 [data list free /v1 v2.
137 frequencies v1/statistics=none.
139 AT_CHECK([pspp -o - -O format=csv -o pspp.html frequencies.sps], [0],
148 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
149 ,.00,1,25.00,25.00,25.00
150 ,2.00,1,25.00,25.00,50.00
151 ,3.00,1,25.00,25.00,75.00
152 ,4.00,1,25.00,25.00,100.00
153 Total,,4,100.0,100.0,
155 AT_CHECK([test -s pspp.html])
158 # Tests for a bug which crashed PSPP when a piechart with too many
159 # segments was requested.
160 AT_SETUP([FREQUENCIES pie chart crash])
161 AT_DATA([frequencies.sps],
162 [data list list /x * w *.
179 frequencies /x /format=notable /statistics=none
182 # Cannot use the CSV driver for this because it does not output charts
184 AT_CHECK([pspp frequencies.sps], [0], [dnl
185 Reading free-form data from INLINE.
195 dnl Check that histogram subcommand runs wihout crashing
196 AT_SETUP([FREQUENCIES histogram crash])
197 AT_DATA([frequencies.sps],
198 [data list notable list /x * w *.
218 /histogram=minimum(0) maximum(50) percent(5) normal.
220 # Cannot use the CSV driver for this because it does not output charts
222 AT_CHECK([pspp -O format=pdf frequencies.sps], [0], [ignore])
225 # Tests for a bug which crashed PSPP when the median and a histogram
226 # were both requested.
227 AT_SETUP([FREQUENCIES median with histogram crash])
228 AT_DATA([frequencies.sps], [dnl
229 data list list notable /x.
234 frequencies /x /histogram /STATISTICS=median.
236 AT_CHECK([pspp -O format=csv frequencies.sps], [0], [ignore])
237 dnl Ignore output - No crash test.
240 # Tests for a bug which caused FREQUENCIES following TEMPORARY to
241 # crash (bug #11492).
242 AT_SETUP([FREQUENCIES crash after TEMPORARY])
243 AT_DATA([frequencies.sps],
244 [DATA LIST LIST /SEX (A1) X *.
263 AT_CHECK([pspp -O format=csv frequencies.sps], [0],
264 [Table: Reading free-form data from INLINE.
270 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
271 ,12.00,1,25.00,25.00,25.00
272 ,13.00,1,25.00,25.00,50.00
273 ,21.00,1,25.00,25.00,75.00
274 ,31.00,1,25.00,25.00,100.00
275 Total,,4,100.0,100.0,
287 m4_define([FREQUENCIES_NTILES_OUTPUT],
303 AT_SETUP([FREQUENCIES basic percentiles])
304 AT_DATA([frequencies.sps],
305 [DATA LIST LIST notable /x * .
317 /PERCENTILES = 0 25 33.333 50 66.666 75 100.
319 AT_CHECK([pspp -O format=csv frequencies.sps], [0],
320 [FREQUENCIES_NTILES_OUTPUT])
323 AT_SETUP([FREQUENCIES basic n-tiles])
324 AT_DATA([frequencies.sps],
325 [DATA LIST LIST notable /x * .
340 AT_CHECK([pspp -O format=csv frequencies.sps], [0],
341 [FREQUENCIES_NTILES_OUTPUT])
344 AT_SETUP([FREQUENCIES compatibility percentiles])
345 AT_DATA([frequencies.sps],
346 [DATA LIST LIST notable /X * .
357 /ALGORITHM=COMPATIBLE
358 /PERCENTILES = 0 25 50 75 100.
360 AT_CHECK([pspp -O format=csv frequencies.sps], [0],
362 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
363 ,1.00,1,20.00,20.00,20.00
364 ,2.00,1,20.00,20.00,40.00
365 ,3.00,1,20.00,20.00,60.00
366 ,4.00,1,20.00,20.00,80.00
367 ,5.00,1,20.00,20.00,100.00
368 Total,,5,100.0,100.0,
385 AT_SETUP([FREQUENCIES enhanced percentiles])
386 AT_DATA([frequencies.sps],
387 [DATA LIST LIST notable /X * .
398 /PERCENTILES = 0 25 50 75 100.
400 AT_CHECK([pspp -O format=csv frequencies.sps], [0],
402 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
403 ,1.00,1,20.00,20.00,20.00
404 ,2.00,1,20.00,20.00,40.00
405 ,3.00,1,20.00,20.00,60.00
406 ,4.00,1,20.00,20.00,80.00
407 ,5.00,1,20.00,20.00,100.00
408 Total,,5,100.0,100.0,
425 AT_SETUP([FREQUENCIES enhanced percentiles, weighted])
426 AT_DATA([frequencies.sps],
427 [DATA LIST LIST notable /X * F *.
442 /PERCENTILES = 0 25 50 75 100.
444 AT_CHECK([pspp -O format=csv frequencies.sps], [0],
446 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
447 ,1.00,2.00,20.00,20.00,20.00
448 ,2.00,2.00,20.00,20.00,40.00
449 ,3.00,2.00,20.00,20.00,60.00
450 ,4.00,2.00,20.00,20.00,80.00
451 ,5.00,2.00,20.00,20.00,100.00
452 Total,,10.00,100.0,100.0,
469 AT_SETUP([FREQUENCIES enhanced percentiles, weighted (2)])
470 AT_DATA([frequencies.sps],
471 [DATA LIST LIST notable /X * F *.
484 /PERCENTILES = 0 25 50 75 100.
486 AT_CHECK([pspp -O format=csv frequencies.sps], [0],
488 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
489 ,1.00,1.00,16.67,16.67,16.67
490 ,3.00,2.00,33.33,33.33,50.00
491 ,4.00,1.00,16.67,16.67,66.67
492 ,5.00,2.00,33.33,33.33,100.00
493 Total,,6.00,100.0,100.0,
510 dnl Data for this test case from Fabio Bordignon <bordignon@demos.it>.
511 AT_SETUP([FREQUENCIES enhanced percentiles, weighted (3)])
512 AT_DATA([frequencies.sps],
513 [DATA LIST LIST notable /X * F *.
525 /PERCENTILES = 0 25 50 75 100.
527 AT_CHECK([pspp -O format=csv frequencies.sps], [0], [dnl
529 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
530 ,1.00,7.00,17.50,17.50,17.50
531 ,2.00,16.00,40.00,40.00,57.50
532 ,3.00,12.00,30.00,30.00,87.50
533 ,4.00,5.00,12.50,12.50,100.00
534 Total,,40.00,100.0,100.0,
551 AT_SETUP([FREQUENCIES enhanced percentiles, weighted, missing values])
552 AT_DATA([frequencies.sps],
553 [DATA LIST LIST notable /X * F *.
563 MISSING VALUE x (99.0) .
568 /PERCENTILES = 0 25 50 75 100.
571 AT_CHECK([pspp -O format=csv frequencies.sps], [0],
573 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
574 ,1.00,1.00,10.00,16.67,16.67
575 ,3.00,2.00,20.00,33.33,50.00
576 ,4.00,1.00,10.00,16.67,66.67
577 ,5.00,2.00,20.00,33.33,100.00
578 ,99.00,4.00,40.00,Missing,
579 Total,,10.00,100.0,100.0,
596 AT_SETUP([FREQUENCIES dichotomous histogram])
597 AT_DATA([frequencies.sps], [dnl
598 data list notable list /d4 *.
626 AT_CHECK([pspp frequencies.sps], [0], [ignore])
630 AT_SETUP([FREQUENCIES median])
631 AT_DATA([median.sps], [dnl
632 data list notable list /x *.
645 AT_CHECK([pspp median.sps -O format=csv], [0], [dnl
647 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
648 ,1.00,1,33.33,33.33,33.33
649 ,2.00,1,33.33,33.33,66.67
650 ,3000000.00,1,33.33,33.33,100.00
651 Total,,3,100.0,100.0,
656 Percentiles,50 (Median),2.00
660 AT_SETUP([FREQUENCIES variance])
661 AT_DATA([variance.sps], [dnl
662 data list notable list /forename (A12) height.
672 /STATISTICS = VARIANCE.
675 AT_CHECK([pspp variance.sps -O format=csv], [0], [dnl
677 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
678 ,109.00,1,25.00,25.00,25.00
679 ,134.00,1,25.00,25.00,50.00
680 ,167.00,1,25.00,25.00,75.00
681 ,188.00,1,25.00,25.00,100.00
682 Total,,4,100.0,100.0,
691 AT_SETUP([FREQUENCIES default statistics])
692 AT_DATA([median.sps], [dnl
693 data list notable list /x *.
707 /STATISTICS = DEFAULT
711 AT_CHECK([pspp median.sps -O format=csv], [0], [dnl
713 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
714 ,10.00,1,33.33,33.33,33.33
715 ,20.00,1,33.33,33.33,66.67
716 ,3000000.00,1,33.33,33.33,100.00
717 Total,,3,100.0,100.0,
728 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
729 ,10.00,1,33.33,33.33,33.33
730 ,20.00,1,33.33,33.33,66.67
731 ,3000000.00,1,33.33,33.33,100.00
732 Total,,3,100.0,100.0,
746 AT_SETUP([FREQUENCIES no valid data])
747 AT_DATA([empty.sps], [dnl
748 data list notable list /x *.
761 AT_CHECK([pspp empty.sps -O format=csv], [0], [dnl
763 Value Label,Value,Frequency,Percent,Valid Percent,Cum Percent
764 ,. ,3,100.00,Missing,
765 Total,,3,100.0,100.0,
789 AT_SETUP([FREQUENCIES histogram no valid cases])
790 AT_DATA([empty.sps], [dnl
791 data list notable list /x w *.
806 AT_CHECK([pspp empty.sps -O format=csv], [0], [ignore])
810 AT_SETUP([FREQUENCIES percentiles + histogram bug#48128])
811 AT_DATA([bug.sps], [dnl
816 COMPUTE SCORE=EXP(NORMAL(1)).
822 FREQUENCIES VARIABLES=SCORE
825 /PERCENTILES=1 10 20 30 40 50 60 70 80 90 99
830 AT_CHECK([pspp bug.sps], [0], [ignore])