X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=tests%2Flanguage%2Fstats%2Fnpar.at;h=24a8cce65956b07353806a964b1af51944fc257d;hb=01d6db8119ca4553d61841f2a9248712d4c6e0dc;hp=4fa26ecf4749fd71febeff6c63f6cc27ca0d9fa3;hpb=ec19587bd09b05588cd757533e5366d1e2fbf447;p=pspp diff --git a/tests/language/stats/npar.at b/tests/language/stats/npar.at index 4fa26ecf47..24a8cce659 100644 --- a/tests/language/stats/npar.at +++ b/tests/language/stats/npar.at @@ -1,6 +1,22 @@ +dnl PSPP - a program for statistical analysis. +dnl Copyright (C) 2017 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 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 You should have received a copy of the GNU General Public License +dnl along with this program. If not, see . +dnl AT_BANNER([NPAR TESTS]) -AT_SETUP([NPAR TESTS BINOMIAL, P < 0.5; N1/N2 < 1]) +AT_SETUP([NPAR TESTS BINOMIAL P < 0.5; N1/N2 < 1]) AT_DATA([npar.sps], [dnl SET FORMAT F8.3. @@ -25,7 +41,7 @@ x,Group1,1.000,6.000,.286,.300,.551 ]) AT_CLEANUP -AT_SETUP([NPAR TESTS BINOMIAL, P < 0.5; N1/N2 > 1]) +AT_SETUP([NPAR TESTS BINOMIAL P < 0.5; N1/N2 > 1]) AT_DATA([npar.sps], [dnl SET FORMAT F8.3. @@ -50,7 +66,7 @@ x,Group1,1,7,.538,.400,.229 ]) AT_CLEANUP -AT_SETUP([NPAR TESTS BINOMIAL, P < 0.5; N1/N2 = 1]) +AT_SETUP([NPAR TESTS BINOMIAL P < 0.5; N1/N2 = 1]) AT_DATA([npar.sps], [dnl SET FORMAT F8.3. @@ -75,7 +91,7 @@ x,Group1,1,8,.500,.400,.284 ]) AT_CLEANUP -AT_SETUP([NPAR TESTS BINOMIAL, P > 0.5; N1/N2 < 1]) +AT_SETUP([NPAR TESTS BINOMIAL P > 0.5; N1/N2 < 1]) AT_DATA([npar.sps], [dnl SET FORMAT F8.3. @@ -100,7 +116,7 @@ x,Group1,1,11,.478,.600,.164 ]) AT_CLEANUP -AT_SETUP([NPAR TESTS BINOMIAL, P > 0.5; N1/N2 > 1]) +AT_SETUP([NPAR TESTS BINOMIAL P > 0.5; N1/N2 > 1]) AT_DATA([npar.sps], [dnl SET FORMAT F8.3. @@ -124,7 +140,7 @@ x,Group1,1,11,.550,.600,.404 ]) AT_CLEANUP -AT_SETUP([NPAR TESTS BINOMIAL, P > 0.5; N1/N2 = 1]) +AT_SETUP([NPAR TESTS BINOMIAL P > 0.5; N1/N2 = 1]) AT_DATA([npar.sps], [dnl SET FORMAT F8.3. @@ -148,7 +164,7 @@ x,Group1,1,11,.500,.600,.228 ]) AT_CLEANUP -AT_SETUP([NPAR TESTS BINOMIAL, P = 0.5; N1/N2 < 1]) +AT_SETUP([NPAR TESTS BINOMIAL P = 0.5; N1/N2 < 1]) AT_DATA([npar.sps], [dnl SET FORMAT F8.3. @@ -173,7 +189,7 @@ x,Group1,1,8,.348,.500,.210 ]) AT_CLEANUP -AT_SETUP([NPAR TESTS BINOMIAL, P = 0.5; N1/N2 > 1]) +AT_SETUP([NPAR TESTS BINOMIAL P = 0.5; N1/N2 > 1]) AT_DATA([npar.sps], [dnl SET FORMAT F8.3. @@ -197,7 +213,7 @@ x,Group1,1,12,.667,.500,.238 ]) AT_CLEANUP -AT_SETUP([NPAR TESTS BINOMIAL, P = 0.5; N1/N2 = 1]) +AT_SETUP([NPAR TESTS BINOMIAL P = 0.5; N1/N2 = 1]) AT_DATA([npar.sps], [dnl SET FORMAT F8.3. @@ -222,7 +238,7 @@ x,Group1,1,10,.500,.500,1.000 ]) AT_CLEANUP -AT_SETUP([NPAR TESTS BINOMIAL, P = 0.5; N1/N2 = 1 Cutpoint]) +AT_SETUP([NPAR TESTS BINOMIAL P = 0.5; N1/N2 = 1 Cutpoint]) AT_DATA([npar.sps], [dnl SET FORMAT F8.3. @@ -248,7 +264,7 @@ x,Group1,<= 10,10.000,.385,.500,.327 ]) AT_CLEANUP -AT_SETUP([NPAR TESTS BINOMIAL, P = 0.5; N1/N2 = 1 Named values]) +AT_SETUP([NPAR TESTS BINOMIAL P = 0.5; N1/N2 = 1 Named values]) AT_DATA([npar.sps], [dnl SET FORMAT F8.3. @@ -274,6 +290,28 @@ x,Group1,10.000,10.000,.435,.500,.678 ]) AT_CLEANUP + + +dnl Test for a bug which caused binomial to crash. +AT_SETUP([NPAR TESTS BINOMIAL - crash]) +AT_DATA([nparX.sps], [dnl +data list list /range *. +begin data. +0 +1 +end data. + +* This is invalid syntax +NPAR TEST + /BINOMIAL(0.5) = Range(). + +]) +AT_CHECK([pspp -O format=csv nparX.sps], [1], [ignore]) + +AT_CLEANUP + + + AT_SETUP([NPAR TESTS CHISQUARE]) AT_DATA([npar.sps], [dnl DATA LIST NOTABLE LIST /x * y * w *. @@ -303,6 +341,7 @@ NPAR TESTS /EXPECTED = 6 10 3 . ]) + AT_CHECK([pspp -O format=csv npar.sps], [0], [dnl Table: x ,Observed N,Expected N,Residual @@ -326,7 +365,7 @@ Table: Test Statistics ,x,y Chi-Square,3.14,6.00 df,5,3 -Asymp. Sig.,.68,.11 +Asymp. Sig.,.678,.112 Table: y ,Observed N,Expected N,Residual @@ -340,7 +379,7 @@ Table: Test Statistics ,y Chi-Square,10.61 df,3 -Asymp. Sig.,.01 +Asymp. Sig.,.014 Table: Frequencies ,x,,,,y,,, @@ -354,8 +393,9 @@ Table: Test Statistics ,x,y Chi-Square,.13,4.13 df,2,2 -Asymp. Sig.,.94,.13 +Asymp. Sig.,.936,.127 ]) + AT_CLEANUP AT_SETUP([NPAR TESTS CHISQUARE expected values missing]) @@ -378,6 +418,7 @@ NPAR TESTS /EXPECTED = 3 4 5 4 3 1 . ]) + AT_CHECK([pspp -O format=csv npar.sps], [1], [dnl "error: CHISQUARE test specified 6 expected values, but 4 distinct values were encountered in variable y." @@ -385,8 +426,9 @@ Table: Test Statistics ,y Chi-Square,.00 df,0 -Asymp. Sig.,1.00 +Asymp. Sig.,1.000 ]) + AT_CLEANUP AT_SETUP([NPAR TESTS CHISQUARE with DESCRIPTIVES]) @@ -413,6 +455,7 @@ NPAR TESTS /STATISTICS=DESCRIPTIVES . ]) + AT_CHECK([pspp -O format=csv npar.sps], [0], [dnl Table: Frequencies ,x,,,,y,,, @@ -431,7 +474,7 @@ Table: Test Statistics ,x,y Chi-Square,17.33,22.87 df,7,7 -Asymp. Sig.,.02,.00 +Asymp. Sig.,.015,.002 Table: Descriptive Statistics ,N,Mean,Std. Deviation,Minimum,Maximum @@ -465,6 +508,7 @@ NPAR TESTS /STATISTICS=DESCRIPTIVES . ]) + AT_CHECK([pspp -O format=csv npar.sps], [0], [dnl Table: Frequencies ,x,,,,y,,, @@ -483,7 +527,7 @@ Table: Test Statistics ,x,y Chi-Square,13.43,26.00 df,7,7 -Asymp. Sig.,.06,.00 +Asymp. Sig.,.062,.001 Table: Descriptive Statistics ,N,Mean,Std. Deviation,Minimum,Maximum @@ -522,8 +566,8 @@ npar test /missing analysis /method=exact. ]) -AT_CHECK([pspp -o pspp.csv npar.sps]) -AT_CHECK([cat pspp.csv], [0], [dnl + +AT_CHECK([pspp -O format=csv npar.sps], [0], [dnl Table: Ranks ,,N,Mean Rank,Sum of Ranks first - second,Negative Ranks,8,6.00,48.00 @@ -534,10 +578,11 @@ first - second,Negative Ranks,8,6.00,48.00 Table: Test Statistics ,first - second Z,-.18 -Asymp. Sig. (2-tailed),.86 -Exact Sig. (2-tailed),.89 -Exact Sig. (1-tailed),.45 +Asymp. Sig. (2-tailed),.861 +Exact Sig. (2-tailed),.893 +Exact Sig. (1-tailed),.446 ]) + AT_CLEANUP AT_SETUP([NPAR TESTS WILCOXON with missing values]) @@ -568,11 +613,10 @@ npar test /wilcoxon=foo with bar (paired) /missing analysis /method=exact. - ]) -AT_CHECK([pspp -o pspp.csv npar.sps]) + dnl This is the same output as the previous test. -AT_CHECK([cat pspp.csv], [0], [dnl +AT_CHECK([pspp -O format=csv npar.sps], [0], [dnl Table: Ranks ,,N,Mean Rank,Sum of Ranks first - second,Negative Ranks,8,6.00,48.00 @@ -583,9 +627,9 @@ first - second,Negative Ranks,8,6.00,48.00 Table: Test Statistics ,first - second Z,-.18 -Asymp. Sig. (2-tailed),.86 -Exact Sig. (2-tailed),.89 -Exact Sig. (1-tailed),.45 +Asymp. Sig. (2-tailed),.861 +Exact Sig. (2-tailed),.893 +Exact Sig. (1-tailed),.446 ]) AT_CLEANUP @@ -610,9 +654,9 @@ npar tests . ]) AT_CHECK([pspp -o pspp.csv npar.sps]) -dnl Some machines return .313 instead of .312 for the Point Probability +dnl Some machines return .313 instead of .312 dnl (see bug #31611). -AT_CHECK([sed 's/\.313$/.312/' pspp.csv], [0], [dnl +AT_CHECK([sed -e 's/\.313$/.312/' -e 's/^Exact Sig\. (1-tailed),\.313/Exact Sig. (1-tailed),.312/' pspp.csv], [0], [dnl Table: Frequencies ,,N age - height,Negative Differences,3 @@ -672,8 +716,8 @@ AT_CHECK([cat pspp.csv], [0], [dnl Table: Ranks ,gv,N,Mean Rank xscore,timed out,5,4.400 -,handled the ball,4,11.500 ,hit wicket,5,7.400 +,handled the ball,4,11.500 ,Total,14, Table: Test Statistics @@ -776,12 +820,12 @@ AT_CHECK([cat pspp.csv], [0], [dnl Table: Ranks ,gv,N,Mean Rank xscore,timed out,5,4.400 -,handled the ball,4,11.500 ,hit wicket,5,7.400 +,handled the ball,4,11.500 ,Total,14, -yscore,handled the ball,4,11.500 +yscore,hit wicket,5,7.400 +,handled the ball,4,11.500 ,bowled,5,4.400 -,hit wicket,5,7.400 ,Total,14, Table: Test Statistics @@ -847,10 +891,8 @@ npar tests . ]) -AT_CHECK([pspp -o pspp.csv npar-runs.sps]) - -AT_CHECK([cat pspp.csv], [0], [dnl -Table: Runs Test +AT_CHECK([pspp -O format=csv npar-runs.sps], [0], +[Table: Runs Test ,score Test Value (median),3.0000 Cases < Test Value,177.0000 @@ -858,7 +900,7 @@ Cases ≥ Test Value,309.0000 Total Cases,486.0000 Number of Runs,12 Z,-20.9931 -Asymp. Sig. (2-tailed),.0000 +Asymp. Sig. (2-tailed),2.000 Table: Runs Test ,score @@ -868,7 +910,7 @@ Cases ≥ Test Value,227.0000 Total Cases,486.0000 Number of Runs,12 Z,-21.0650 -Asymp. Sig. (2-tailed),.0000 +Asymp. Sig. (2-tailed),2.000 Table: Runs Test ,score @@ -878,9 +920,33 @@ Cases ≥ Test Value,170.0000 Total Cases,486.0000 Number of Runs,11 Z,-21.0742 -Asymp. Sig. (2-tailed),.0000 +Asymp. Sig. (2-tailed),2.000 +]) + +AT_CLEANUP + + +dnl Thanks to Douglas Bonett for providing this test case. +AT_SETUP([NPAR TESTS Runs (2)]) +AT_DATA([npar-runs.sps], [dnl +data list notable free /y. +begin data +1 1 2 1 2 1 1 2 1 1 1 2 1 2 +end data. +NPAR TEST /RUNS(1.5) = y. ]) +AT_CHECK([pspp -O format=csv npar-runs.sps], [0], [dnl +Table: Runs Test +,y +Test Value,1.50 +Cases < Test Value,9 +Cases ≥ Test Value,5 +Total Cases,14 +Number of Runs,10 +Z,1.26 +Asymp. Sig. (2-tailed),.206 +]) AT_CLEANUP @@ -905,9 +971,7 @@ npar tests /friedman = x y z. ]) -AT_CHECK([pspp -o pspp.csv npar-friedman.sps]) - -AT_CHECK([cat pspp.csv], [0], [dnl +AT_CHECK([pspp -O format=csv npar-friedman.sps], [0], [dnl Table: Ranks ,Mean Rank x,2.6500 @@ -918,7 +982,7 @@ Table: Test Statistics N,10 Chi-Square,10.4737 df,2 -Asymp. Sig.,.0053 +Asymp. Sig.,.005 ]) AT_CLEANUP @@ -960,16 +1024,18 @@ begin data. 85 0 76 1 145 1 -24 1 +24 1 +1 4 +-4 5 +34 5 +21 4 end data. NPAR TESTS /M-W = height BY sex (0,1). ]) -AT_CHECK([pspp -o pspp.csv npar-mann-whitney.sps]) - -AT_CHECK([cat pspp.csv], [0], [dnl +AT_CHECK([pspp -O format=csv npar-mann-whitney.sps], [0], [dnl Table: Ranks ,N,,,Mean Rank,,Sum of Ranks, ,0,1,Total,0,1,0,1 @@ -977,13 +1043,59 @@ height,15.0000,15.0000,30.0000,14.5333,16.4667,218.0000,247.0000 Table: Test Statistics ,Mann-Whitney U,Wilcoxon W,Z,Asymp. Sig. (2-tailed) -height,98.0000,218.0000,-.6020,.5472 +height,98.0000,218.0000,-.6020,.547 ]) AT_CLEANUP +AT_SETUP([NPAR TESTS Mann-Whitney Multiple]) +dnl Check for a bug where the ranks were inappropriately allocated, when +dnl multiple variables were tested and MISSING=ANALYSIS chosen. + +cp $abs_srcdir/language/mann-whitney.txt . + +AT_DATA([npar-mann-whitney.sps], [dnl +SET FORMAT = F11.3 + +DATA LIST NOTABLE FILE='mann-whitney.txt' + LIST /I002_01 I002_02 I002_03 I002_04 sum_HL *. + +VARIABLE LABELS + I002_01 'IOS: Familie' + I002_02 'IOS: Freunde' + I002_03 'IOS: Partner*in' + I002_04 'IOS: Bekannte'. + +MISSING VALUES I002_01 I002_02 I002_03 I002_04 (-9 -1). + +NPAR TESTS + /MISSING=ANALYSIS + /M-W=I002_01 I002_02 I002_03 I002_04 BY sum_HL (0 1). +]) + +AT_CHECK([pspp -O format=csv npar-mann-whitney.sps], [0], [dnl +Table: Ranks +,N,,,Mean Rank,,Sum of Ranks, +,.000,1.000,Total,.000,1.000,.000,1.000 +IOS: Familie,114.000,115.000,229.000,110.018,119.939,12542.000,13793.000 +IOS: Freunde,115.000,115.000,230.000,108.339,122.661,12459.000,14106.000 +IOS: Partner*in,97.000,91.000,188.000,95.351,93.593,9249.000,8517.000 +IOS: Bekannte,115.000,115.000,230.000,111.065,119.935,12772.500,13792.500 + +Table: Test Statistics +,Mann-Whitney U,Wilcoxon W,Z,Asymp. Sig. (2-tailed) +IOS: Familie,5987.000,12542.000,-1.167,.243 +IOS: Freunde,5789.000,12459.000,-1.674,.094 +IOS: Partner*in,4331.000,8517.000,-.245,.807 +IOS: Bekannte,6102.500,12772.500,-1.046,.296 +]) + +AT_CLEANUP + + + AT_SETUP([NPAR TESTS Cochran]) AT_DATA([npar-cochran.sps], [dnl set format f11.3. @@ -1625,3 +1737,117 @@ x,4,24.000,29.500,65.000,15.902,-2.232,.026 ]) AT_CLEANUP + +dnl Checks that (PAIRED) can have lists where the same +dnl variable appears more than once. +AT_SETUP([NPAR TESTS (PAIRED)]) +AT_DATA([npar.sps], [dnl +set format = F12.3. +data list notable list /a * b * c *. +begin data. +1 2 4 +4 5 3 +1 2 2 +4 5 1 +end data. + +npar tests /wilcoxon a b with c c (paired). +]) + +AT_CHECK([pspp -O format=csv npar.sps], [0], [dnl +Table: Ranks +,,N,Mean Rank,Sum of Ranks +a - c,Negative Ranks,2,2.500,5.000 +,Positive Ranks,2,2.500,5.000 +,Ties,0,, +,Total,4,, +b - c,Negative Ranks,1,1.500,1.500 +,Positive Ranks,2,2.250,4.500 +,Ties,1,, +,Total,4,, + +Table: Test Statistics +,a - c,b - c +Z,.000,-.816 +Asymp. Sig. (2-tailed),1.000,.414 +]) + + +AT_CLEANUP + + + +AT_SETUP([NPAR TESTS CHISQUARE crash]) +dnl This syntax had been observed to crash pspp + +AT_DATA([npar.sps], [dnl +data list list /x *. +begin data. +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +end data. + +* This happens to be invalid syntax. But should not crash. +NPAR TEST + /CHISQUARE= x(0.098, 99.098) + /EXPECTED = 1.2. +]) + +AT_CHECK([pspp -O format=csv npar.sps], [1], [ignore]) + +AT_CLEANUP + + +AT_SETUP([NPAR TESTS - crash on invalid syntax]) + +AT_DATA([npar.sps], [dnl +data list notable list /ev * xscore *. +begin data. +2 109 +3 115 +1 61 +1 101 +3 147 +end data. + + +npar tests + /kruskal-wallis xscore by(gv (1, 3). +]) + +AT_CHECK([pspp -O format=csv npar.sps], [1], [ignore]) + +AT_CLEANUP + + + + +AT_SETUP([NPAR TESTS - crash on unterminated string]) + +AT_DATA([npar.sps], [dnl +DATA LIST NOTABLE LIST /x * y * w * . +BEGIN DATA. +3.1 1 4 +3.2 2 1 +4 2 6 +END DATA. + + +NPAR TESTS +" CHISQUARE=x y(-2,5) + /STATISTICS=DESCRIPTIVES + . +]) + +AT_CHECK([pspp -O format=csv npar.sps], [1], [ignore]) + +AT_CLEANUP + \ No newline at end of file