X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=tests%2Flanguage%2Fstats%2Fmeans.at;h=72f98b3d1ff8718bccab8d517c55ee58ca9bac2b;hb=8642df034e82487ec7ff476fbfbacbd5b65eb88a;hp=549891a6d3961e5929642baed5dd4ce4d09b5b2b;hpb=b9a1a1c32d5589e208ea751911d35177b7751720;p=pspp diff --git a/tests/language/stats/means.at b/tests/language/stats/means.at index 549891a6d3..72f98b3d1f 100644 --- a/tests/language/stats/means.at +++ b/tests/language/stats/means.at @@ -1,21 +1,101 @@ dnl PSPP - a program for statistical analysis. -dnl Copyright (C) 2017 Free Software Foundation, Inc. -dnl +dnl Copyright (C) 2017, 2019 Free Software Foundation, Inc. +dnl dnl This program is free software: you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by dnl the Free Software Foundation, either version 3 of the License, or dnl (at your option) any later version. -dnl +dnl dnl This program is distributed in the hope that it will be useful, dnl but WITHOUT ANY WARRANTY; without even the implied warranty of dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the dnl GNU General Public License for more details. -dnl +dnl dnl You should have received a copy of the GNU General Public License dnl along with this program. If not, see . dnl AT_BANNER([MEANS procedure]) +AT_SETUP([MEANS simple]) +AT_KEYWORDS([categorical categoricals]) + +AT_DATA([means-simple.sps], [dnl +data list notable list /hand * score * w *. +begin data. +1 17 4 +1 16 5 +2 21 1 +2 22 1 +2 20 8 +end data. + +weight by w. + +means tables = score by hand + /cells = mean count. +]) + +AT_CHECK([pspp -O format=csv means-simple.sps], [0], [dnl +Table: Case Processing Summary +,Cases,,,,, +,Included,,Excluded,,Total, +,N,Percent,N,Percent,N,Percent +score * hand,19,100.0%,0,.0%,19,100.0% + +Table: Report +hand,Mean,N +1.00,16.44,9 +2.00,20.30,10 +Total,18.47,19 +]) + +AT_CLEANUP + +AT_SETUP([MEANS very simple]) +AT_KEYWORDS([categorical categoricals]) + +AT_DATA([very-simple.sps], [dnl +data list notable list /score *. +begin data. +17 +17 +17 +16 +17 +16 +16 +16 +16 +21 +22 +20 +20 +20 +20 +20 +20 +20 +20 +end data. + +means tables = score + /cells = mean count. +]) + +AT_CHECK([pspp -O format=csv very-simple.sps], [0], [dnl +Table: Case Processing Summary +,Cases,,,,, +,Included,,Excluded,,Total, +,N,Percent,N,Percent,N,Percent +score,19,100.0%,0,.0%,19,100.0% + +Table: Report +Mean,N +18.47,19 +]) + +AT_CLEANUP + AT_SETUP([MEANS empty factor spec]) AT_KEYWORDS([categorical categoricals]) @@ -28,7 +108,7 @@ begin data. 3 end data. -MEANS TABLES = outcome +MEANS TABLES = outcome BY. ]) @@ -56,5 +136,989 @@ AT_CHECK([pspp -O format=csv means-bad.sps], [1], [ignore]) AT_CLEANUP +dnl This example is based upon info from https://libguides.library.kent.edu/SPSS/CompareMeans +AT_SETUP([MEANS default missing behaviour]) +AT_KEYWORDS([categorical categoricals]) + +AT_DATA([means-missing.sps], [dnl +data list notable list /w * score * a * b *. +begin data + 12 . 0 0 + 13 . 0 1 + 11 . 1 0 + 7 . 1 1 + 5 1 0 . + 91 1 0 0 + 130 1 0 1 + 4 1 1 . + 90 1 1 0 + 72 1 1 1 +end data. + +weight by w. + +MEANS tables=score + /cells = count. + +MEANS tables=score by a + /cells = count. + +MEANS tables=score by a by b + /cells = count. +]) + +AT_CHECK([pspp -O format=csv means-missing.sps], [0], [dnl +Table: Case Processing Summary +,Cases,,,,, +,Included,,Excluded,,Total, +,N,Percent,N,Percent,N,Percent +score,392,90.1%,43,9.9%,435,100.0% + +Table: Report +N +392 + +Table: Case Processing Summary +,Cases,,,,, +,Included,,Excluded,,Total, +,N,Percent,N,Percent,N,Percent +score * a,392,90.1%,43,9.9%,435,100.0% + +Table: Report +a,N +.00,226 +1.00,166 +Total,392 + +Table: Case Processing Summary +,Cases,,,,, +,Included,,Excluded,,Total, +,N,Percent,N,Percent,N,Percent +score * a * b,383,88.0%,52,12.0%,435,100.0% + +Table: Report +a,b,N +.00,.00,91 +,1.00,130 +,Total,221 +1.00,.00,90 +,1.00,72 +,Total,162 +Total,.00,181 +,1.00,202 +,Total,383 +]) + +AT_CLEANUP + + +dnl This example from https://www.spss-tutorials.com/spss-means-command/ +AT_SETUP([MEANS two way]) +AT_KEYWORDS([categorical categoricals]) + +AT_DATA([means-freelancer.sps], [dnl +data list notable list /income_2010 * gender sector_2010. +begin data +6072.40 0 5 +12706.65 1 4 +14912.82 0 2 +16338.36 1 5 +22606.99 0 . +23544.95 1 1 +24985.21 0 2 +26586.48 0 1 +29076.24 1 3 +31010.18 0 2 +33190.63 1 1 +35570.67 1 4 +36202.60 1 4 +36205.85 1 2 +36262.56 1 . +38283.56 0 1 +38569.91 1 5 +39057.56 1 4 +39594.68 1 5 +42087.38 0 1 +42370.92 0 2 +42931.32 1 2 +45907.58 0 4 +45911.32 1 . +47227.09 1 3 +50440.71 1 5 +57440.17 1 3 +58918.86 0 5 +59430.07 1 2 +61135.95 0 4 +64193.85 0 4 +64857.02 0 3 +65903.42 0 4 +66592.38 1 3 +70986.10 0 3 +71229.94 0 4 +74663.05 1 4 +76676.14 1 4 +79260.80 0 4 +80311.71 0 4 +end data. + +means income_2010 by gender by sector_2010 + /cells count min mean stddev. +]) + +AT_CHECK([pspp -O format=csv means-freelancer.sps], [0], [dnl +Table: Case Processing Summary +,Cases,,,,, +,Included,,Excluded,,Total, +,N,Percent,N,Percent,N,Percent +income_2010 * gender * sector_2010,37,92.5%,3,7.5%,40,100.0% + +Table: Report +gender,sector_2010,N,Minimum,Mean,Std. Deviation +.00,1.00,3,26586.48,35652.47,8078.46 +,2.00,4,14912.82,28319.78,11482.43 +,3.00,2,64857.02,67921.56,4333.91 +,4.00,7,45907.58,66849.04,11787.11 +,5.00,2,6072.40,32495.63,37368.09 +,Total,18,6072.40,49389.68,22371.48 +1.00,1.00,2,23544.95,28367.79,6820.53 +,2.00,3,36205.85,46189.08,11949.93 +,3.00,4,29076.24,50083.97,16084.44 +,4.00,6,12706.65,45812.78,24995.16 +,5.00,4,16338.36,36235.92,14311.04 +,Total,19,12706.65,42918.90,17851.64 +Total,1.00,5,23544.95,32738.60,7757.62 +,2.00,7,14912.82,35978.05,14309.27 +,3.00,6,29076.24,56029.83,15615.06 +,4.00,13,12706.65,57139.99,21187.85 +,5.00,6,6072.40,34989.15,20146.69 +,Total,37,6072.40,46066.84,20160.12 +]) + +AT_CLEANUP + + +dnl Check that rows are suppressed and that things generally work ok +dnl when there are a 2 way instance contains an unbalanced set of +dnl categorical values. +AT_SETUP([MEANS unbalanced]) +AT_KEYWORDS([categorical categoricals]) + +AT_DATA([means-unbalanced.sps], [dnl +data list notable list /b c x *. +begin data. +4 1 123 +3 1 123 +5 0 246 +4 0 246 +3 0 246 +end data. + +* The data above lack a 5 1 case. + +means + table=x by b by c + /cells = mean count + . +]) + +AT_CHECK([pspp -O format=csv means-unbalanced.sps], [0], [dnl +Table: Case Processing Summary +,Cases,,,,, +,Included,,Excluded,,Total, +,N,Percent,N,Percent,N,Percent +x * b * c,5,100.0%,0,.0%,5,100.0% + +Table: Report +b,c,Mean,N +3.00,.00,246.00,1 +,1.00,123.00,1 +,Total,184.50,2 +4.00,.00,246.00,1 +,1.00,123.00,1 +,Total,184.50,2 +5.00,.00,246.00,1 +,Total,246.00,1 +Total,.00,246.00,3 +,1.00,123.00,2 +,Total,196.80,5 +]) + +AT_CLEANUP + +dnl This example kindly provided by Dana Williams +AT_SETUP([MEANS three way]) +AT_KEYWORDS([categorical categoricals]) + +AT_DATA([means-threeway.sps], [dnl +data list notable list /score a b c. +begin data. +3 0 0 0 +4 0 0 1 +41 0 0 2 +5 0 1 0 +6 0 1 1 +7 1 0 0 +8 1 0 1 +9 1 1 0 +10 1 1 1 +end data. + +means score by a by b by c. +]) + +AT_CHECK([pspp -O format=csv means-threeway.sps], [0], [dnl +Table: Case Processing Summary +,Cases,,,,, +,Included,,Excluded,,Total, +,N,Percent,N,Percent,N,Percent +score * a * b * c,9,100.0%,0,.0%,9,100.0% + +Table: Report +a,b,c,Mean,N,Std. Deviation +.00,.00,.00,3.00,1,NaN +,,1.00,4.00,1,NaN +,,2.00,41.00,1,NaN +,,Total,16.00,3,21.66 +,1.00,.00,5.00,1,NaN +,,1.00,6.00,1,NaN +,,Total,5.50,2,.71 +,Total,.00,4.00,2,1.41 +,,1.00,5.00,2,1.41 +,,2.00,41.00,1,NaN +,,Total,11.80,5,16.36 +1.00,.00,.00,7.00,1,NaN +,,1.00,8.00,1,NaN +,,Total,7.50,2,.71 +,1.00,.00,9.00,1,NaN +,,1.00,10.00,1,NaN +,,Total,9.50,2,.71 +,Total,.00,8.00,2,1.41 +,,1.00,9.00,2,1.41 +,,Total,8.50,4,1.29 +Total,.00,.00,5.00,2,2.83 +,,1.00,6.00,2,2.83 +,,2.00,41.00,1,NaN +,,Total,12.60,5,16.01 +,1.00,.00,7.00,2,2.83 +,,1.00,8.00,2,2.83 +,,Total,7.50,4,2.38 +,Total,.00,6.00,4,2.58 +,,1.00,7.00,4,2.58 +,,2.00,41.00,1,NaN +,,Total,10.33,9,11.73 +]) + +AT_CLEANUP + +dnl The above example again, but with string variables for +dnl the control vars. +AT_SETUP([MEANS three way string]) +AT_KEYWORDS([categorical categoricals]) + +AT_DATA([means-threeway-string.sps], [dnl +data list notable list /score (f22.2) a (a24) b (a16) c (a8). +begin data. +3 fooberrycrumblexzaQ fosilationwereqd zero +4 fooberrycrumblexzaQ fosilationwereqd one +41 fooberrycrumblexzaQ fosilationwereqd two +5 fooberrycrumblexzaQ onlyonekonboys zero +6 fooberrycrumblexzaQ onlyonekonboys one +7 wontledingbatsXASDF fosilationwereqd zero +8 wontledingbatsXASDF fosilationwereqd one +9 wontledingbatsXASDF onlyonekonboys zero +10 wontledingbatsXASDF onlyonekonboys one +end data. + +means score by a by b by c. +]) + +AT_CHECK([pspp -O format=csv means-threeway-string.sps], [0], [dnl +Table: Case Processing Summary +,Cases,,,,, +,Included,,Excluded,,Total, +,N,Percent,N,Percent,N,Percent +score * a * b * c,9,100.0%,0,.0%,9,100.0% + +Table: Report +a,b,c,Mean,N,Std. Deviation +fooberrycrumblexzaQ,fosilationwereqd,one,4.00,1,NaN +,,two,41.00,1,NaN +,,zero,3.00,1,NaN +,,Total,16.00,3,21.66 +,onlyonekonboys,one,6.00,1,NaN +,,zero,5.00,1,NaN +,,Total,5.50,2,.71 +,Total,one,5.00,2,1.41 +,,two,41.00,1,NaN +,,zero,4.00,2,1.41 +,,Total,11.80,5,16.36 +wontledingbatsXASDF,fosilationwereqd,one,8.00,1,NaN +,,zero,7.00,1,NaN +,,Total,7.50,2,.71 +,onlyonekonboys,one,10.00,1,NaN +,,zero,9.00,1,NaN +,,Total,9.50,2,.71 +,Total,one,9.00,2,1.41 +,,zero,8.00,2,1.41 +,,Total,8.50,4,1.29 +Total,fosilationwereqd,one,6.00,2,2.83 +,,two,41.00,1,NaN +,,zero,5.00,2,2.83 +,,Total,12.60,5,16.01 +,onlyonekonboys,one,8.00,2,2.83 +,,zero,7.00,2,2.83 +,,Total,7.50,4,2.38 +,Total,one,7.00,4,2.58 +,,two,41.00,1,NaN +,,zero,6.00,4,2.58 +,,Total,10.33,9,11.73 +]) + +AT_CLEANUP + + + +dnl An example with multiple tables +AT_SETUP([MEANS multiple tables]) +AT_KEYWORDS([categorical categoricals]) + +AT_DATA([means-multi-table.sps], [dnl +data list notable list /a * b * c * x * y *. +begin data. +6 3 0 123 456 +6 3 1 123 456 +6 4 0 123 456 +6 4 1 123 456 +6 5 0 123 456 +6 5 1 123 456 +7 3 0 123 456 +7 3 1 123 456 +7 4 0 123 456 +7 4 1 123 456 +7 5 0 123 456 +7 5 1 123 456 +8 3 0 123 456 +8 3 1 123 456 +8 4 0 123 456 +8 4 1 123 456 +8 5 0 123 456 +8 5 1 123 456 +9 3 0 123 456 +9 3 1 123 456 +9 4 0 123 456 +9 4 1 123 456 +9 5 0 123 456 +9 5 1 123 456 +end data. + + +means table = x by b by c + /x by b + /y by a by b + cells = min count . +]) + +AT_CHECK([pspp -O format=csv means-multi-table.sps], [0], [dnl +Table: Case Processing Summary +,Cases,,,,, +,Included,,Excluded,,Total, +,N,Percent,N,Percent,N,Percent +x * b * c,24,100.0%,0,.0%,24,100.0% + +Table: Report +b,c,Minimum,N +3.00,.00,123.00,4 +,1.00,123.00,4 +,Total,123.00,8 +4.00,.00,123.00,4 +,1.00,123.00,4 +,Total,123.00,8 +5.00,.00,123.00,4 +,1.00,123.00,4 +,Total,123.00,8 +Total,.00,123.00,12 +,1.00,123.00,12 +,Total,123.00,24 + +Table: Case Processing Summary +,Cases,,,,, +,Included,,Excluded,,Total, +,N,Percent,N,Percent,N,Percent +x * b,24,100.0%,0,.0%,24,100.0% + +Table: Report +b,Minimum,N +3.00,123.00,8 +4.00,123.00,8 +5.00,123.00,8 +Total,123.00,24 + +Table: Case Processing Summary +,Cases,,,,, +,Included,,Excluded,,Total, +,N,Percent,N,Percent,N,Percent +y * a * b,24,100.0%,0,.0%,24,100.0% + +Table: Report +a,b,Minimum,N +6.00,3.00,456.00,2 +,4.00,456.00,2 +,5.00,456.00,2 +,Total,456.00,6 +7.00,3.00,456.00,2 +,4.00,456.00,2 +,5.00,456.00,2 +,Total,456.00,6 +8.00,3.00,456.00,2 +,4.00,456.00,2 +,5.00,456.00,2 +,Total,456.00,6 +9.00,3.00,456.00,2 +,4.00,456.00,2 +,5.00,456.00,2 +,Total,456.00,6 +Total,3.00,456.00,8 +,4.00,456.00,8 +,5.00,456.00,8 +,Total,456.00,24 +]) + +AT_CLEANUP + + + +dnl An example with more than one dependent variable. +dnl This case uses a somewhat different table layout. +AT_SETUP([MEANS multi variable]) +AT_KEYWORDS([categorical categoricals]) + +AT_DATA([means-multi-variable.sps], [dnl +data list notable list /b c x y. +begin data. +5 1 123 55 +5 1 123 55 +5 1 123 55 +5 1 123 55 +4 1 456 44 +4 1 456 44 +4 1 456 44 +4 1 456 44 +3 1 789 55 +3 1 789 55 +3 1 789 55 +3 1 789 55 +5 0 246 99 +5 0 246 99 +5 0 246 99 +5 0 246 . +4 0 987 99 +4 0 987 99 +4 0 987 99 +4 0 987 99 +3 0 654 11 +3 0 654 11 +3 0 654 11 +3 0 654 11 +end data. + +means + table = x y by b by c + . +]) + +AT_CHECK([pspp -O format=csv means-multi-variable.sps], [0], [dnl +Table: Case Processing Summary +,Cases,,,,, +,Included,,Excluded,,Total, +,N,Percent,N,Percent,N,Percent +x * b * c,24,100.0%,0,.0%,24,100.0% +y * b * c,23,95.8%,1,4.2%,24,100.0% + +Table: x * y * b * c +b,c,,x,y +3.00,.00,Mean,654.00,11.00 +,,N,4,4 +,,Std. Deviation,.00,.00 +,1.00,Mean,789.00,55.00 +,,N,4,4 +,,Std. Deviation,.00,.00 +,Total,Mean,721.50,33.00 +,,N,8,8 +,,Std. Deviation,72.16,23.52 +4.00,.00,Mean,987.00,99.00 +,,N,4,4 +,,Std. Deviation,.00,.00 +,1.00,Mean,456.00,44.00 +,,N,4,4 +,,Std. Deviation,.00,.00 +,Total,Mean,721.50,71.50 +,,N,8,8 +,,Std. Deviation,283.83,29.40 +5.00,.00,Mean,246.00,99.00 +,,N,4,3 +,,Std. Deviation,.00,.00 +,1.00,Mean,123.00,55.00 +,,N,4,4 +,,Std. Deviation,.00,.00 +,Total,Mean,184.50,73.86 +,,N,8,7 +,,Std. Deviation,65.75,23.52 +Total,.00,Mean,629.00,67.00 +,,N,12,11 +,,Std. Deviation,316.50,44.40 +,1.00,Mean,456.00,51.33 +,,N,12,12 +,,Std. Deviation,283.98,5.42 +,Total,Mean,542.50,58.83 +,,N,24,23 +,,Std. Deviation,307.06,31.22 +]) + + +AT_CLEANUP + + +dnl This example is based upon one kindly provided by Dana Williams +dnl It exercises the most complex case where there are multiple +dnl dependent variables AND multiple control variables in each layer. +AT_SETUP([MEANS multi combination]) +AT_KEYWORDS([categorical categoricals]) + +AT_DATA([means-multi-combination.sps], [dnl +data list notable list /one (F22.5) two (F22.5) three four five six. +begin data +1 1 1 1 1 1 +2 1 1 1 1 1 +1 2 1 1 1 1 +2 2 1 1 1 1 +1 1 2 1 1 1 +2 1 2 1 1 1 +1 2 2 1 1 1 +2 2 2 1 1 1 +1 1 1 2 1 1 +2 1 1 2 1 1 +1 2 1 2 1 1 +2 2 1 2 1 1 +1 1 2 2 1 1 +2 1 2 2 1 1 +1 2 2 2 1 1 +2 2 2 2 1 1 +1 1 1 1 2 1 +2 1 1 1 2 1 +1 2 1 1 2 1 +2 2 1 1 2 1 +1 1 2 1 2 1 +2 1 2 1 2 1 +1 2 2 1 2 1 +2 2 2 1 2 1 +1 1 1 2 2 1 +2 1 1 2 2 1 +1 2 1 2 2 1 +2 2 1 2 2 1 +1 1 2 2 2 1 +2 1 2 2 2 1 +1 2 2 2 2 1 +2 2 2 2 2 1 +1 1 1 1 1 2 +2 1 1 1 1 2 +1 2 1 1 1 2 +2 2 1 1 1 2 +1 1 2 1 1 2 +2 1 2 1 1 2 +1 2 2 1 1 2 +2 2 2 1 1 2 +1 1 1 2 1 2 +2 1 1 2 1 2 +1 2 1 2 1 2 +2 2 1 2 1 2 +1 1 2 2 1 2 +2 1 2 2 1 2 +1 2 2 2 1 2 +2 2 2 2 1 2 +1 1 1 1 2 2 +2 1 1 1 2 2 +1 2 1 1 2 2 +2 2 1 1 2 2 +1 1 2 1 2 2 +2 1 2 1 2 2 +1 2 2 1 2 2 +2 2 2 1 2 2 +1 1 1 2 2 2 +2 1 1 2 2 2 +1 2 1 2 2 2 +2 2 1 2 2 2 +1 1 2 2 2 2 +2 1 2 2 2 2 +1 2 2 2 2 2 +2 2 2 2 2 2 +end data. + +recode six (2 = 62) (1 = 61). +recode five (2 = 52) (1 = 51). +recode four (2 = 42) (1 = 41). +recode three (2 = 32) (1 = 31). + +means tables = one two BY three four BY five six. +]) + +AT_CHECK([pspp -O format=csv means-multi-combination.sps], [0], [dnl +Table: Case Processing Summary +,Cases,,,,, +,Included,,Excluded,,Total, +,N,Percent,N,Percent,N,Percent +one * three * five,64,100.0%,0,.0%,64,100.0% +two * three * five,64,100.0%,0,.0%,64,100.0% +one * three * six,64,100.0%,0,.0%,64,100.0% +two * three * six,64,100.0%,0,.0%,64,100.0% +one * four * five,64,100.0%,0,.0%,64,100.0% +two * four * five,64,100.0%,0,.0%,64,100.0% +one * four * six,64,100.0%,0,.0%,64,100.0% +two * four * six,64,100.0%,0,.0%,64,100.0% + +Table: one * two * three * five +three,five,,one,two +31.00,51.00,Mean,1.50000,1.50000 +,,N,16,16 +,,Std. Deviation,.51640,.51640 +,52.00,Mean,1.50000,1.50000 +,,N,16,16 +,,Std. Deviation,.51640,.51640 +,Total,Mean,1.50000,1.50000 +,,N,32,32 +,,Std. Deviation,.50800,.50800 +32.00,51.00,Mean,1.50000,1.50000 +,,N,16,16 +,,Std. Deviation,.51640,.51640 +,52.00,Mean,1.50000,1.50000 +,,N,16,16 +,,Std. Deviation,.51640,.51640 +,Total,Mean,1.50000,1.50000 +,,N,32,32 +,,Std. Deviation,.50800,.50800 +Total,51.00,Mean,1.50000,1.50000 +,,N,32,32 +,,Std. Deviation,.50800,.50800 +,52.00,Mean,1.50000,1.50000 +,,N,32,32 +,,Std. Deviation,.50800,.50800 +,Total,Mean,1.50000,1.50000 +,,N,64,64 +,,Std. Deviation,.50395,.50395 + +Table: one * two * three * six +three,six,,one,two +31.00,61.00,Mean,1.50000,1.50000 +,,N,16,16 +,,Std. Deviation,.51640,.51640 +,62.00,Mean,1.50000,1.50000 +,,N,16,16 +,,Std. Deviation,.51640,.51640 +,Total,Mean,1.50000,1.50000 +,,N,32,32 +,,Std. Deviation,.50800,.50800 +32.00,61.00,Mean,1.50000,1.50000 +,,N,16,16 +,,Std. Deviation,.51640,.51640 +,62.00,Mean,1.50000,1.50000 +,,N,16,16 +,,Std. Deviation,.51640,.51640 +,Total,Mean,1.50000,1.50000 +,,N,32,32 +,,Std. Deviation,.50800,.50800 +Total,61.00,Mean,1.50000,1.50000 +,,N,32,32 +,,Std. Deviation,.50800,.50800 +,62.00,Mean,1.50000,1.50000 +,,N,32,32 +,,Std. Deviation,.50800,.50800 +,Total,Mean,1.50000,1.50000 +,,N,64,64 +,,Std. Deviation,.50395,.50395 + +Table: one * two * four * five +four,five,,one,two +41.00,51.00,Mean,1.50000,1.50000 +,,N,16,16 +,,Std. Deviation,.51640,.51640 +,52.00,Mean,1.50000,1.50000 +,,N,16,16 +,,Std. Deviation,.51640,.51640 +,Total,Mean,1.50000,1.50000 +,,N,32,32 +,,Std. Deviation,.50800,.50800 +42.00,51.00,Mean,1.50000,1.50000 +,,N,16,16 +,,Std. Deviation,.51640,.51640 +,52.00,Mean,1.50000,1.50000 +,,N,16,16 +,,Std. Deviation,.51640,.51640 +,Total,Mean,1.50000,1.50000 +,,N,32,32 +,,Std. Deviation,.50800,.50800 +Total,51.00,Mean,1.50000,1.50000 +,,N,32,32 +,,Std. Deviation,.50800,.50800 +,52.00,Mean,1.50000,1.50000 +,,N,32,32 +,,Std. Deviation,.50800,.50800 +,Total,Mean,1.50000,1.50000 +,,N,64,64 +,,Std. Deviation,.50395,.50395 + +Table: one * two * four * six +four,six,,one,two +41.00,61.00,Mean,1.50000,1.50000 +,,N,16,16 +,,Std. Deviation,.51640,.51640 +,62.00,Mean,1.50000,1.50000 +,,N,16,16 +,,Std. Deviation,.51640,.51640 +,Total,Mean,1.50000,1.50000 +,,N,32,32 +,,Std. Deviation,.50800,.50800 +42.00,61.00,Mean,1.50000,1.50000 +,,N,16,16 +,,Std. Deviation,.51640,.51640 +,62.00,Mean,1.50000,1.50000 +,,N,16,16 +,,Std. Deviation,.51640,.51640 +,Total,Mean,1.50000,1.50000 +,,N,32,32 +,,Std. Deviation,.50800,.50800 +Total,61.00,Mean,1.50000,1.50000 +,,N,32,32 +,,Std. Deviation,.50800,.50800 +,62.00,Mean,1.50000,1.50000 +,,N,32,32 +,,Std. Deviation,.50800,.50800 +,Total,Mean,1.50000,1.50000 +,,N,64,64 +,,Std. Deviation,.50395,.50395 +]) + +AT_CLEANUP + + +dnl This example was observed to cause a crash in the +dnl destructor. Found by zzuf. +AT_SETUP([MEANS clean up]) +AT_KEYWORDS([categorical categoricals]) + +AT_DATA([means-bad.sps], [dnl +data list notable list /one two three four five six. +begin data +1 1 1 1 1 1 +2 1 1 1 1 ! +1 2 2 2 2 2 +2 2 2 2 2 2 +end data. + +means tables = one two BY thsee four BY five six. +]) + +AT_CHECK([pspp -O format=csv means-bad.sps], [1], [ignore]) + +AT_CLEANUP + + +dnl Another example which caused a crash. +dnl Found by zzuf. +AT_SETUP([MEANS control all missing]) +AT_KEYWORDS([categorical categoricals]) + +AT_DATA([means-bad.sps], [dnl +data list notable list /a * b * y * uu *. +begin data. +6 3 . 5 +6 3 . 5 +6 4 . 5 +end data. + +means table = b by a by y by uu + . +]) + +AT_CHECK([pspp -O format=csv means-bad.sps], [0], [dnl +Table: Case Processing Summary +,Cases,,,,, +,Included,,Excluded,,Total, +,N,Percent,N,Percent,N,Percent +b * a * y * uu,0,.0%,3,100.0%,3,100.0% + +"warning: The table ""a * y * uu"" has no non-empty control variables. No result for this table will be displayed." +]) + +AT_CLEANUP + + +dnl Do some tests on the MISSING keyword. +AT_SETUP([MEANS missing classes]) +AT_KEYWORDS([categorical categoricals]) + +AT_DATA([means-missing-classes.sps], [dnl +data list notable list /hand * score *. +begin data. +1 17 +1 17 +1 17 +1 16 +1 17 +1 16 +1 16 +1 . +1 99 +2 21 +2 22 +2 20 +2 20 +2 20 +2 20 +2 20 +2 20 +2 20 +2 20 +9 55 +end data. + +missing values score (99). +missing values hand (9). + +means tables=score by hand + /cells = count max + /missing = dependent + . + +means tables=score by hand + /cells = count max + /missing = include + . + +means tables=score by hand + /cells = count max + . + +]) + +AT_CHECK([pspp -O format=csv means-missing-classes.sps], [0], [dnl +Table: Case Processing Summary +,Cases,,,,, +,Included,,Excluded,,Total, +,N,Percent,N,Percent,N,Percent +score * hand,18,90.0%,2,10.0%,20,100.0% + +Table: Report +hand,N,Maximum +1.00,7,17.00 +2.00,10,22.00 +9.00,1,55.00 +Total,18,55.00 + +Table: Case Processing Summary +,Cases,,,,, +,Included,,Excluded,,Total, +,N,Percent,N,Percent,N,Percent +score * hand,19,95.0%,1,5.0%,20,100.0% + +Table: Report +hand,N,Maximum +1.00,8,99.00 +2.00,10,22.00 +9.00,1,55.00 +Total,19,99.00 + +Table: Case Processing Summary +,Cases,,,,, +,Included,,Excluded,,Total, +,N,Percent,N,Percent,N,Percent +score * hand,17,85.0%,3,15.0%,20,100.0% + +Table: Report +hand,N,Maximum +1.00,7,17.00 +2.00,10,22.00 +Total,17,22.00 +]) + +AT_CLEANUP + + +dnl Make sure that behaviour with SPLIT is correct. +AT_SETUP([MEANS split]) +AT_KEYWORDS([categorical categoricals]) + +AT_DATA([means-split.sps], [dnl +data list notable list /b g *. +begin data +2 0 +2 0 +4 0 +4 0 +11 1 +11 1 +end data. + +split file by g. + +means b /cells = count mean. +]) + +AT_CHECK([pspp -O format=csv means-split.sps], [0], [dnl +Table: Case Processing Summary +,Cases,,,,, +,Included,,Excluded,,Total, +,N,Percent,N,Percent,N,Percent +b,4,100.0%,0,.0%,4,100.0% + +Table: Report +N,Mean +4,3.00 + +Table: Case Processing Summary +,Cases,,,,, +,Included,,Excluded,,Total, +,N,Percent,N,Percent,N,Percent +b,2,100.0%,0,.0%,2,100.0% + +Table: Report +N,Mean +2,11.00 +]) + +AT_CLEANUP + + +dnl Test the output with unusual dependent variable formats +AT_SETUP([MEANS formats]) +AT_KEYWORDS([categorical categoricals]) + +AT_DATA([means-formats.sps], [dnl +data list notable list /hours (TIME11.0) rate (DOLLAR8.2). +begin data +12:00 4.09 +14:01 5.23 +end data. + +means hours rate + /cells = mean count max range. +]) + +AT_CHECK([pspp -O format=csv means-formats.sps], [0], [dnl +Table: Case Processing Summary +,Cases,,,,, +,Included,,Excluded,,Total, +,N,Percent,N,Percent,N,Percent +hours,2,100.0%,0,.0%,2,100.0% +rate,2,100.0%,0,.0%,2,100.0% + +Table: hours * rate +,hours,rate +Mean,13:00:30,$4.66 +N,2,2 +Maximum,14:01:00,$5.23 +Range,02:01:00,$1.14 +]) + +AT_CLEANUP +