EXAMINE: Extend test for empty dataset and fix bug.
[pspp] / tests / language / stats / examine.at
1 AT_BANNER([EXAMINE])
2
3 AT_SETUP([EXAMINE])
4 AT_DATA([examine.sps], [
5 DATA LIST LIST /QUALITY * W * BRAND * .
6 BEGIN DATA
7 3  1  1
8 2  2  1
9 1  2  1
10 1  1  1
11 4  1  1
12 4  1  1
13 5  1  2
14 2  1  2
15 4  4  2
16 2  1  2
17 3  1  2
18 7  1  3
19 4  2  3
20 5  3  3
21 3  1  3
22 6  1  3
23 END DATA
24
25 WEIGHT BY w.
26
27 VARIABLE LABELS brand   'Manufacturer'.
28 VARIABLE LABELS quality 'Breaking Strain'.
29
30 VALUE LABELS /brand 1 'Aspeger' 2 'Bloggs' 3 'Charlies'.
31
32 LIST /FORMAT=NUMBERED.
33
34 EXAMINE
35         quality BY brand
36         /STATISTICS descriptives extreme(3)
37         .
38 ])
39
40
41 dnl In the following data, only the extreme values have been checked.
42 dnl The descriptives have been blindly pasted.
43 AT_CHECK([pspp -O format=csv examine.sps], [0], [dnl
44 Table: Reading free-form data from INLINE.
45 Variable,Format
46 QUALITY,F8.0
47 W,F8.0
48 BRAND,F8.0
49
50 Table: Data List
51 Case Number,QUALITY,W,BRAND
52 1,3.00,1.00,1.00
53 2,2.00,2.00,1.00
54 3,1.00,2.00,1.00
55 4,1.00,1.00,1.00
56 5,4.00,1.00,1.00
57 6,4.00,1.00,1.00
58 7,5.00,1.00,2.00
59 8,2.00,1.00,2.00
60 9,4.00,4.00,2.00
61 10,2.00,1.00,2.00
62 11,3.00,1.00,2.00
63 12,7.00,1.00,3.00
64 13,4.00,2.00,3.00
65 14,5.00,3.00,3.00
66 15,3.00,1.00,3.00
67 16,6.00,1.00,3.00
68
69 Table: Case Processing Summary
70 ,Cases,,,,,
71 ,Valid,,Missing,,Total,
72 ,N,Percent,N,Percent,N,Percent
73 Breaking Strain,24.00,100%,.00,0%,24.00,100%
74
75 Table: Extreme Values
76 ,,,Case Number,Value
77 Breaking Strain,Highest,1,12,7.00
78 ,,2,16,6.00
79 ,,3,14,5.00
80 ,Lowest,1,3,1.00
81 ,,2,4,1.00
82 ,,3,2,2.00
83
84 Table: Descriptives
85 ,,,Statistic,Std. Error
86 Breaking Strain,Mean,,3.54,.32
87 ,95% Confidence Interval for Mean,Lower Bound,2.87,
88 ,,Upper Bound,4.21,
89 ,5% Trimmed Mean,,3.50,
90 ,Median,,4.00,
91 ,Variance,,2.52,
92 ,Std. Deviation,,1.59,
93 ,Minimum,,1.00,
94 ,Maximum,,7.00,
95 ,Range,,6.00,
96 ,Interquartile Range,,2.75,
97 ,Skewness,,.06,.47
98 ,Kurtosis,,-.36,.92
99
100 Table: Case Processing Summary
101 ,,Cases,,,,,
102 ,,Valid,,Missing,,Total,
103 ,Manufacturer,N,Percent,N,Percent,N,Percent
104 Breaking Strain,Aspeger,8.00,100%,.00,0%,8.00,100%
105 ,Bloggs,8.00,100%,.00,0%,8.00,100%
106 ,Charlies,8.00,100%,.00,0%,8.00,100%
107
108 Table: Extreme Values
109 ,Manufacturer,,,Case Number,Value
110 Breaking Strain,Aspeger,Highest,1,6,4.00
111 ,,,2,5,4.00
112 ,,,3,1,3.00
113 ,,Lowest,1,3,1.00
114 ,,,2,4,1.00
115 ,,,3,2,2.00
116 ,Bloggs,Highest,1,7,5.00
117 ,,,2,9,4.00
118 ,,,3,11,3.00
119 ,,Lowest,1,8,2.00
120 ,,,2,10,2.00
121 ,,,3,11,3.00
122 ,Charlies,Highest,1,12,7.00
123 ,,,2,16,6.00
124 ,,,3,14,5.00
125 ,,Lowest,1,15,3.00
126 ,,,2,13,4.00
127 ,,,3,14,5.00
128
129 Table: Descriptives
130 ,Manufacturer,,,Statistic,Std. Error
131 Breaking Strain,Aspeger,Mean,,2.25,.45
132 ,,95% Confidence Interval for Mean,Lower Bound,1.18,
133 ,,,Upper Bound,3.32,
134 ,,5% Trimmed Mean,,2.22,
135 ,,Median,,2.00,
136 ,,Variance,,1.64,
137 ,,Std. Deviation,,1.28,
138 ,,Minimum,,1.00,
139 ,,Maximum,,4.00,
140 ,,Range,,3.00,
141 ,,Interquartile Range,,2.75,
142 ,,Skewness,,.47,.75
143 ,,Kurtosis,,-1.55,1.48
144 ,Bloggs,Mean,,3.50,.38
145 ,,95% Confidence Interval for Mean,Lower Bound,2.61,
146 ,,,Upper Bound,4.39,
147 ,,5% Trimmed Mean,,3.50,
148 ,,Median,,4.00,
149 ,,Variance,,1.14,
150 ,,Std. Deviation,,1.07,
151 ,,Minimum,,2.00,
152 ,,Maximum,,5.00,
153 ,,Range,,3.00,
154 ,,Interquartile Range,,1.75,
155 ,,Skewness,,-.47,.75
156 ,,Kurtosis,,-.83,1.48
157 ,Charlies,Mean,,4.88,.44
158 ,,95% Confidence Interval for Mean,Lower Bound,3.83,
159 ,,,Upper Bound,5.92,
160 ,,5% Trimmed Mean,,4.86,
161 ,,Median,,5.00,
162 ,,Variance,,1.55,
163 ,,Std. Deviation,,1.25,
164 ,,Minimum,,3.00,
165 ,,Maximum,,7.00,
166 ,,Range,,4.00,
167 ,,Interquartile Range,,1.75,
168 ,,Skewness,,.30,.75
169 ,,Kurtosis,,.15,1.48
170 ])
171
172 AT_CLEANUP
173
174 AT_SETUP([EXAMINE -- extremes])
175 AT_DATA([examine.sps], [dnl
176 data list free /V1 W
177 begin data.
178 1  1
179 2  1
180 3  2
181 3  1
182 4  1
183 5  1
184 6  1
185 7  1
186 8  1
187 9  1
188 10 1
189 11 1
190 12 1
191 13 1
192 14 1
193 15 1
194 16 1
195 17 1
196 18 2
197 19 1
198 20 1
199 end data.
200
201 weight by w.
202
203 examine v1 
204  /statistics=extreme(6)
205  .
206 ])
207
208 AT_CHECK([pspp -O format=csv examine.sps], [0],[dnl
209 Table: Case Processing Summary
210 ,Cases,,,,,
211 ,Valid,,Missing,,Total,
212 ,N,Percent,N,Percent,N,Percent
213 V1,23.00,100%,.00,0%,23.00,100%
214
215 Table: Extreme Values
216 ,,,Case Number,Value
217 V1,Highest,1,21,20.00
218 ,,2,20,19.00
219 ,,3,19,18.00
220 ,,4,18,17.00
221 ,,5,17,16.00
222 ,,6,16,15.00
223 ,Lowest,1,1,1.00
224 ,,2,2,2.00
225 ,,3,3,3.00
226 ,,4,4,3.00
227 ,,5,5,4.00
228 ,,6,6,5.00
229 ])
230
231 AT_CLEANUP
232
233
234
235 AT_SETUP([EXAMINE -- extremes with fractional weights])
236 AT_DATA([extreme.sps], [dnl
237 set format=F20.3.
238 data list notable list /w * x *.
239 begin data.
240  0.88  300000
241  0.86  320000
242  0.98  480000
243  0.93  960000
244  1.35  960000
245  1.31  960000
246  0.88  960000
247  0.88  1080000
248  0.88  1080000
249  0.95  1200000
250  1.47  1200000
251  0.93  1200000
252  0.98  1320000
253  1.31  1380000
254  0.93  1440000
255  0.88  1560000
256  1.56  1560000
257  1.47  1560000
258 end data.
259
260 weight by w.
261
262
263 EXAMINE
264         x
265         /STATISTICS = DESCRIPTIVES EXTREME (5)
266         .
267 ])
268
269 AT_CHECK([pspp -O format=csv  extreme.sps], [0], [dnl
270 Table: Case Processing Summary
271 ,Cases,,,,,
272 ,Valid,,Missing,,Total,
273 ,N,Percent,N,Percent,N,Percent
274 x,19.430,100%,.000,0%,19.430,100%
275
276 Table: Extreme Values
277 ,,,Case Number,Value
278 x,Highest,1,18,1560000.000
279 ,,2,17,1560000.000
280 ,,3,16,1560000.000
281 ,,4,15,1440000.000
282 ,,5,14,1380000.000
283 ,Lowest,1,1,300000.000
284 ,,2,2,320000.000
285 ,,3,3,480000.000
286 ,,4,4,960000.000
287 ,,5,5,960000.000
288
289 Table: Descriptives
290 ,,,Statistic,Std. Error
291 x,Mean,,1120010.293,86222.178
292 ,95% Confidence Interval for Mean,Lower Bound,939166.693,
293 ,,Upper Bound,1300853.894,
294 ,5% Trimmed Mean,,1141017.899,
295 ,Median,,1200000.000,
296 ,Variance,,144447748124.869,
297 ,Std. Deviation,,380062.821,
298 ,Minimum,,300000.000,
299 ,Maximum,,1560000.000,
300 ,Range,,1260000.000,
301 ,Interquartile Range,,467258.065,
302 ,Skewness,,-.887,.519
303 ,Kurtosis,,.340,1.005
304 ])
305
306 AT_CLEANUP
307
308 dnl Test the PERCENTILES subcommand of the EXAMINE command.
309 dnl In particular test that it behaves properly when there are only 
310 dnl a few cases.
311 AT_SETUP([EXAMINE -- percentiles])
312 AT_DATA([examine.sps], [dnl
313 DATA LIST LIST /X *.
314 BEGIN DATA.
315 2.00 
316 8.00 
317 5.00 
318 END DATA.
319
320 EXAMINE /x
321         /PERCENTILES=HAVERAGE.
322
323 EXAMINE /x
324         /PERCENTILES=WAVERAGE.
325
326 EXAMINE /x
327         /PERCENTILES=ROUND.
328
329 EXAMINE /x
330         /PERCENTILES=EMPIRICAL.
331
332 EXAMINE /x
333         /PERCENTILES=AEMPIRICAL.
334 ])
335 AT_CHECK([pspp -o pspp.csv examine.sps])
336 AT_CHECK([cat pspp.csv], [0], [dnl
337 Table: Reading free-form data from INLINE.
338 Variable,Format
339 X,F8.0
340
341 Table: Case Processing Summary
342 ,Cases,,,,,
343 ,Valid,,Missing,,Total,
344 ,N,Percent,N,Percent,N,Percent
345 X,3,100%,0,0%,3,100%
346
347 Table: Percentiles
348 ,,Percentiles,,,,,,
349 ,,5,10,25,50,75,90,95
350 X,HAverage,.40,.80,2.00,5.00,8.00,8.00,8.00
351 ,Tukey's Hinges,,,3.50,5.00,6.50,,
352
353 Table: Case Processing Summary
354 ,Cases,,,,,
355 ,Valid,,Missing,,Total,
356 ,N,Percent,N,Percent,N,Percent
357 X,3,100%,0,0%,3,100%
358
359 Table: Percentiles
360 ,,Percentiles,,,,,,
361 ,,5,10,25,50,75,90,95
362 X,Weighted Average,.30,.60,1.50,3.50,5.75,7.10,7.55
363 ,Tukey's Hinges,,,3.50,5.00,6.50,,
364
365 Table: Case Processing Summary
366 ,Cases,,,,,
367 ,Valid,,Missing,,Total,
368 ,N,Percent,N,Percent,N,Percent
369 X,3,100%,0,0%,3,100%
370
371 Table: Percentiles
372 ,,Percentiles,,,,,,
373 ,,5,10,25,50,75,90,95
374 X,Rounded,.00,.00,2.00,5.00,5.00,8.00,8.00
375 ,Tukey's Hinges,,,3.50,5.00,6.50,,
376
377 Table: Case Processing Summary
378 ,Cases,,,,,
379 ,Valid,,Missing,,Total,
380 ,N,Percent,N,Percent,N,Percent
381 X,3,100%,0,0%,3,100%
382
383 Table: Percentiles
384 ,,Percentiles,,,,,,
385 ,,5,10,25,50,75,90,95
386 X,Empirical,2.00,2.00,2.00,5.00,8.00,8.00,8.00
387 ,Tukey's Hinges,,,3.50,5.00,6.50,,
388
389 Table: Case Processing Summary
390 ,Cases,,,,,
391 ,Valid,,Missing,,Total,
392 ,N,Percent,N,Percent,N,Percent
393 X,3,100%,0,0%,3,100%
394
395 Table: Percentiles
396 ,,Percentiles,,,,,,
397 ,,5,10,25,50,75,90,95
398 X,Empirical with averaging,2.00,2.00,2.00,5.00,8.00,8.00,8.00
399 ,Tukey's Hinges,,,3.50,5.00,6.50,,
400 ])
401 AT_CLEANUP
402
403 AT_SETUP([EXAMINE -- missing values])
404 AT_DATA([examine.sps], [dnl
405 DATA LIST LIST /x * y *.
406 BEGIN DATA.
407 1   1 
408 2   1
409 3   1
410 4   1
411 5   2
412 6   2
413 .   2
414 END DATA
415
416 EXAMINE /x by y
417         /MISSING = PAIRWISE
418         .
419 ])
420 AT_CHECK([pspp -o pspp.csv examine.sps])
421 AT_CHECK([cat pspp.csv], [0], [dnl
422 Table: Reading free-form data from INLINE.
423 Variable,Format
424 x,F8.0
425 y,F8.0
426
427 Table: Case Processing Summary
428 ,Cases,,,,,
429 ,Valid,,Missing,,Total,
430 ,N,Percent,N,Percent,N,Percent
431 x,6,85.7143%,1,14.2857%,7,100%
432
433 Table: Case Processing Summary
434 ,,Cases,,,,,
435 ,,Valid,,Missing,,Total,
436 ,y,N,Percent,N,Percent,N,Percent
437 x,1.00,4,100%,0,0%,4,100%
438 ,2.00,2,66.6667%,1,33.3333%,3,100%
439 ])
440 AT_CLEANUP
441
442
443 AT_SETUP([EXAMINE -- user missing values])
444 AT_DATA([examine-m.sps], [dnl
445 DATA LIST notable LIST /x * y *.
446 BEGIN DATA.
447 1                   2
448 9999999999          2
449 9999999999          99
450 END DATA.
451
452 MISSING VALUES x (9999999999).
453 MISSING VALUES y (99).
454
455 EXAMINE
456         /VARIABLES= x y
457         /MISSING=PAIRWISE.
458 ])
459 AT_CHECK([pspp -O format=csv examine-m.sps], [0], [dnl
460 Table: Case Processing Summary
461 ,Cases,,,,,
462 ,Valid,,Missing,,Total,
463 ,N,Percent,N,Percent,N,Percent
464 x,1,33.3333%,2,66.6667%,3,100%
465 y,2,66.6667%,1,33.3333%,3,100%
466 ])
467 AT_CLEANUP
468
469 AT_SETUP([EXAMINE -- missing values and percentiles])
470 AT_DATA([examine.sps], [dnl
471 DATA LIST LIST /X *.
472 BEGIN DATA.
473 99
474 99
475 5.00
476 END DATA.
477
478 MISSING VALUE X (99).
479
480 EXAMINE /x
481         /PERCENTILES=HAVERAGE.
482 ])
483 AT_CHECK([pspp -o pspp.csv examine.sps])
484 dnl Ignore output -- this is just a no-crash check.
485 AT_CLEANUP
486
487 dnl Tests the trimmed mean calculation in the case
488 dnl where the data is weighted towards the centre.
489 AT_SETUP([EXAMINE -- trimmed mean])
490 AT_DATA([examine.sps], [dnl
491 DATA LIST LIST /X * C *.
492 BEGIN DATA.
493 1 1
494 2 49
495 3 2
496 END DATA.
497
498 WEIGHT BY c.
499
500 EXAMINE
501         x
502         /STATISTICS=DESCRIPTIVES
503         .
504 ])
505 AT_CHECK([pspp -o pspp.csv examine.sps])
506 AT_CHECK([cat pspp.csv], [0], [dnl
507 Table: Reading free-form data from INLINE.
508 Variable,Format
509 X,F8.0
510 C,F8.0
511
512 Table: Case Processing Summary
513 ,Cases,,,,,
514 ,Valid,,Missing,,Total,
515 ,N,Percent,N,Percent,N,Percent
516 X,52.00,100%,.00,0%,52.00,100%
517
518 Table: Descriptives
519 ,,,Statistic,Std. Error
520 X,Mean,,2.02,.03
521 ,95% Confidence Interval for Mean,Lower Bound,1.95,
522 ,,Upper Bound,2.09,
523 ,5% Trimmed Mean,,2.00,
524 ,Median,,2.00,
525 ,Variance,,.06,
526 ,Std. Deviation,,.24,
527 ,Minimum,,1.00,
528 ,Maximum,,3.00,
529 ,Range,,2.00,
530 ,Interquartile Range,,.00,
531 ,Skewness,,1.19,.33
532 ,Kurtosis,,15.73,.65
533 ])
534 AT_CLEANUP
535
536 AT_SETUP([EXAMINE -- crash bug])
537 AT_DATA([examine.sps], [dnl
538 data list list /a * x * y *.
539 begin data.
540 3 1 3
541 5 1 4
542 7 2 3
543 end data.
544
545 examine a by x by y
546         /statistics=DESCRIPTIVES
547         . 
548 ])
549 AT_CHECK([pspp -o pspp.csv examine.sps])
550 dnl Ignore output -- this is just a no-crash check.
551 AT_CLEANUP
552
553 dnl Test that two consecutive EXAMINE commands don't crash PSPP.
554 AT_SETUP([EXAMINE -- consecutive runs don't crash])
555 AT_DATA([examine.sps], [dnl
556 data list list /y * z *.
557 begin data.
558 6 4
559 5 3
560 7 6
561 end data.
562
563 EXAMINE /VARIABLES= z BY y.
564
565 EXAMINE /VARIABLES= z. 
566 ])
567 AT_CHECK([pspp -o pspp.csv examine.sps])
568 dnl Ignore output -- this is just a no-crash check.
569 AT_CLEANUP
570
571 dnl Test that /DESCRIPTIVES does not crash in presence of missing values.
572 AT_SETUP([EXAMINE -- missing values don't crash])
573 AT_DATA([examine.sps], [dnl
574 data list list /x * y *.
575 begin data.
576 1 0
577 2 0
578 . 0
579 3 1
580 4 1
581 end data.
582 examine x by y /statistics=descriptives. 
583 ])
584 AT_CHECK([pspp -o pspp.csv examine.sps])
585 dnl Ignore output -- this is just a no-crash check.
586 AT_CLEANUP
587
588 dnl Test that having only a single case doesn't crash.
589 AT_SETUP([EXAMINE -- single case doesn't crash])
590 AT_DATA([examine.sps], [dnl
591 DATA LIST LIST /quality * .
592 BEGIN DATA
593 3  
594 END DATA
595
596
597 EXAMINE
598         quality 
599         /STATISTICS descriptives 
600         /PLOT = histogram
601         .
602 ])
603 AT_CHECK([pspp -o pspp.csv examine.sps], [0], [ignore])
604 dnl Ignore output -- this is just a no-crash check.
605 AT_CLEANUP
606
607 dnl Test that all-missing data doesn't crash.
608 AT_SETUP([EXAMINE -- all-missing data doesn't crash])
609 AT_DATA([examine.sps], [dnl
610 DATA LIST LIST /x *.
611 BEGIN DATA.
612 .
613 .
614 .
615 .
616 END DATA.
617
618 EXAMINE /x 
619         PLOT=HISTOGRAM BOXPLOT NPPLOT SPREADLEVEL(1) ALL
620         /ID=x
621         /STATISTICS = DESCRIPTIVES EXTREME (5) ALL
622         /PERCENTILE=AEMPIRICAL
623         .
624 ])
625 AT_CHECK([pspp -o pspp.csv examine.sps], [0], [ignore])
626 dnl Ignore output -- this is just a no-crash check.
627 AT_CLEANUP
628
629 dnl Test that big input doesn't crash (bug 11307).
630 AT_SETUP([EXAMINE -- big input doesn't crash])
631 AT_DATA([examine.sps], [dnl
632 INPUT PROGRAM.
633         LOOP #I=1 TO 50000.
634                 COMPUTE X=NORMAL(10).
635                 END CASE.
636         END LOOP.
637         END FILE.
638 END INPUT PROGRAM.
639
640
641 EXAMINE /x
642         /STATISTICS=DESCRIPTIVES.
643 ])
644 AT_CHECK([pspp -o pspp.csv examine.sps])
645 dnl Ignore output -- this is just a no-crash check.
646 AT_CLEANUP
647
648 dnl Another test that big input doesn't crash.
649 dnl The actual bug that this checks for has been lost.
650 AT_SETUP([EXAMINE -- big input doesn't crash 2])
651 AT_DATA([make-big-input.pl], 
652   [for ($i=0; $i<100000; $i++) { print "AB12\n" };
653    for ($i=0; $i<100000; $i++) { print "AB04\n" };
654 ])
655 AT_CHECK([$PERL make-big-input.pl > large.txt])
656 AT_DATA([examine.sps], [dnl
657 DATA LIST FILE='large.txt' /S 1-2 (A) X 3 .
658
659
660 AGGREGATE OUTFILE=* /BREAK=X /A=N.
661
662
663 EXAMINE /A BY X.
664 ])
665 AT_CHECK([pspp -o pspp.csv examine.sps])
666 dnl Ignore output -- this is just a no-crash check.
667 AT_DATA([more-big-input.pl], 
668   [for ($i=0; $i<25000; $i++) { print "AB04\nAB12\n" };
669 ])
670 AT_CHECK([$PERL more-big-input.pl >> large.txt])
671 AT_CHECK([pspp -o pspp.csv examine.sps])
672 dnl Ignore output -- this is just a no-crash check.
673 AT_CLEANUP
674
675
676 dnl Test that the ID command works with non-numberic variables
677 AT_SETUP([EXAMINE -- non-numeric ID])
678
679 AT_DATA([examine-id.sps], [dnl
680 data list notable list /x * y (a12).
681 begin data.
682 1  one
683 2  two
684 3  three
685 4  four
686 5  five
687 6  six
688 7  seven
689 8  eight
690 9  nine
691 10 ten
692 11 eleven
693 12 twelve
694 30 thirty
695 300 threehundred
696 end data.
697
698 examine x
699         /statistics = extreme
700         /id = y
701         /plot = boxplot
702         .
703 ])
704
705 AT_CHECK([pspp -O format=csv examine-id.sps], [0], 
706 [Table: Case Processing Summary
707 ,Cases,,,,,
708 ,Valid,,Missing,,Total,
709 ,N,Percent,N,Percent,N,Percent
710 x,14,100%,0,0%,14,100%
711
712 Table: Extreme Values
713 ,,,y,Value
714 x,Highest,1,threehundred,300.00
715 ,,2,thirty      ,30.00
716 ,,3,twelve      ,12.00
717 ,,4,eleven      ,11.00
718 ,,5,ten         ,10.00
719 ,Lowest,1,one         ,1.00
720 ,,2,two         ,2.00
721 ,,3,three       ,3.00
722 ,,4,four        ,4.00
723 ,,5,five        ,5.00
724 ])
725
726 AT_CLEANUP 
727
728 dnl Test for a crash which happened on cleanup from a bad input syntax
729 AT_SETUP([EXAMINE -- Bad Input])
730
731 AT_DATA([examine-bad.sps], [dnl
732 data list list /h * g *.
733 begin data.
734 1 1
735 2 1
736 3 1
737 4 1
738 5 2
739 6 2
740 7 2
741 8 2
742 9 2
743 end data.
744
745 EXAMINE 
746         /VARIABLES= h
747         BY  g
748         /STATISTICS = DESCRIPTIVES EXTREME
749         /PLOT = lkajsdas
750         .
751 ])
752
753 AT_CHECK([pspp -o pspp.csv examine-bad.sps], [1], [ignore])
754
755 AT_CLEANUP 
756
757
758 dnl Check the MISSING=REPORT option
759 AT_SETUP([EXAMINE -- MISSING=REPORT])
760
761
762 AT_DATA([examine-report.sps], [dnl
763 set format = F22.0.
764 data list list /x * g *.
765 begin data.
766 1   1
767 2   1
768 3   1
769 4   1
770 5   1
771 6   1
772 7   1
773 8   1
774 9   1
775 10   2
776 20   2
777 30   2
778 40   2
779 50   2
780 60   2
781 70   2
782 80   2
783 90   2
784 101   9
785 201   9
786 301   9
787 401   9
788 501   99
789 601   99
790 701   99
791 801   99
792 901   99
793 1001  .
794 2002  .
795 3003  .
796 4004  .
797 end data.
798
799 MISSING VALUES g (9, 99, 999).
800
801 EXAMINE
802         /VARIABLES = x
803         BY  g
804         /STATISTICS = EXTREME
805         /NOTOTAL
806         /MISSING = REPORT.
807 ])
808
809
810 AT_CHECK([pspp -O format=csv examine-report.sps], [0], [dnl
811 Table: Reading free-form data from INLINE.
812 Variable,Format
813 x,F8.0
814 g,F8.0
815
816 Table: Case Processing Summary
817 ,,Cases,,,,,
818 ,,Valid,,Missing,,Total,
819 ,g,N,Percent,N,Percent,N,Percent
820 x,. (missing),4,100%,0,0%,4,100%
821 ,1,9,100%,0,0%,9,100%
822 ,2,9,100%,0,0%,9,100%
823 ,9 (missing),4,100%,0,0%,4,100%
824 ,99 (missing),5,100%,0,0%,5,100%
825
826 Table: Extreme Values
827 ,g,,,Case Number,Value
828 x,. (missing),Highest,1,31,4004
829 ,,,2,30,3003
830 ,,,3,29,2002
831 ,,,4,28,1001
832 ,,,5,0,0
833 ,,Lowest,1,28,1001
834 ,,,2,29,2002
835 ,,,3,30,3003
836 ,,,4,31,4004
837 ,,,5,31,4004
838 ,1,Highest,1,9,9
839 ,,,2,8,8
840 ,,,3,7,7
841 ,,,4,6,6
842 ,,,5,5,5
843 ,,Lowest,1,1,1
844 ,,,2,2,2
845 ,,,3,3,3
846 ,,,4,4,4
847 ,,,5,5,5
848 ,2,Highest,1,18,90
849 ,,,2,17,80
850 ,,,3,16,70
851 ,,,4,15,60
852 ,,,5,14,50
853 ,,Lowest,1,10,10
854 ,,,2,11,20
855 ,,,3,12,30
856 ,,,4,13,40
857 ,,,5,14,50
858 ,9 (missing),Highest,1,22,401
859 ,,,2,21,301
860 ,,,3,20,201
861 ,,,4,19,101
862 ,,,5,0,0
863 ,,Lowest,1,19,101
864 ,,,2,20,201
865 ,,,3,21,301
866 ,,,4,22,401
867 ,,,5,22,401
868 ,99 (missing),Highest,1,27,901
869 ,,,2,26,801
870 ,,,3,25,701
871 ,,,4,24,601
872 ,,,5,23,501
873 ,,Lowest,1,23,501
874 ,,,2,24,601
875 ,,,3,25,701
876 ,,,4,26,801
877 ,,,5,27,901
878 ])
879
880
881 AT_CLEANUP 
882
883
884 dnl Run a test of the basic STATISTICS using a "real"
885 dnl dataset and comparing with "real" results kindly
886 dnl provided by Olaf Nöhring
887 AT_SETUP([EXAMINE -- sample unweighted])
888
889 AT_DATA([sample.sps], [dnl
890 set format = F22.4.
891 DATA LIST notable LIST /X *
892 BEGIN DATA.
893 461.19000000
894 466.38000000
895 479.46000000
896 480.10000000
897 483.43000000
898 488.30000000
899 489.00000000
900 491.62000000
901 505.62000000
902 511.30000000
903 521.53000000
904 526.70000000
905 528.25000000
906 538.70000000
907 540.22000000
908 540.58000000
909 546.10000000
910 548.17000000
911 553.99000000
912 566.21000000
913 575.90000000
914 584.38000000
915 593.40000000
916 357.05000000
917 359.73000000
918 360.48000000
919 373.98000000
920 374.13000000
921 381.45000000
922 383.72000000
923 390.00000000
924 400.34000000
925 415.32000000
926 415.91000000
927 418.30000000
928 421.03000000
929 422.43000000
930 426.93000000
931 433.25000000
932 436.89000000
933 445.33000000
934 446.33000000
935 446.55000000
936 456.44000000
937 689.49000000
938 691.92000000
939 695.00000000
940 695.36000000
941 698.21000000
942 699.46000000
943 706.61000000
944 710.69000000
945 715.82000000
946 715.82000000
947 741.39000000
948 752.27000000
949 756.73000000
950 757.74000000
951 759.57000000
952 796.07000000
953 813.78000000
954 817.25000000
955 825.48000000
956 831.28000000
957 849.24000000
958 890.00000000
959 894.78000000
960 935.65000000
961 935.90000000
962 945.90000000
963 1012.8600000
964 1022.6000000
965 1061.8100000
966 1063.5000000
967 1077.2300000
968 1151.6300000
969 1355.2800000
970 598.88000000
971 606.91000000
972 621.60000000
973 624.80000000
974 636.13000000
975 637.38000000
976 640.32000000
977 649.35000000
978 656.51000000
979 662.55000000
980 664.69000000
981 106.22000000
982 132.24000000
983 174.76000000
984 204.85000000
985 264.93000000
986 264.99000000
987 269.84000000
988 325.12000000
989 331.67000000
990 337.26000000
991 347.68000000
992 354.91000000
993 END DATA.
994
995 EXAMINE
996         x
997         /STATISTICS=DESCRIPTIVES
998         .
999 ])
1000
1001 AT_CHECK([pspp -O format=csv sample.sps], [0], [dnl
1002 Table: Case Processing Summary
1003 ,Cases,,,,,
1004 ,Valid,,Missing,,Total,
1005 ,N,Percent,N,Percent,N,Percent
1006 X,100,100%,0,0%,100,100%
1007
1008 Table: Descriptives
1009 ,,,Statistic,Std. Error
1010 X,Mean,,587.6603,23.2665
1011 ,95% Confidence Interval for Mean,Lower Bound,541.4946,
1012 ,,Upper Bound,633.8260,
1013 ,5% Trimmed Mean,,579.7064,
1014 ,Median,,547.1350,
1015 ,Variance,,54132.8466,
1016 ,Std. Deviation,,232.6647,
1017 ,Minimum,,106.2200,
1018 ,Maximum,,1355.2800,
1019 ,Range,,1249.0600,
1020 ,Interquartile Range,,293.1575,
1021 ,Skewness,,.6331,.2414
1022 ,Kurtosis,,.5300,.4783
1023 ])
1024
1025 AT_CLEANUP 
1026
1027
1028
1029 dnl Test for a crash which happened on bad input syntax
1030 AT_SETUP([EXAMINE -- Empty Parentheses])
1031
1032 AT_DATA([examine-empty-parens.sps], [dnl
1033 DATA LIST notable LIST /X *
1034 BEGIN DATA.
1035 2
1036 3
1037 END DATA.
1038
1039
1040 EXAMINE
1041         x
1042         /PLOT = SPREADLEVEL()
1043         .
1044 ])
1045
1046 AT_CHECK([pspp -o pspp.csv examine-empty-parens.sps], [1], [ignore])
1047
1048 AT_CLEANUP