dnl PSPP - a program for statistical analysis.
-dnl Copyright (C) 2017 Free Software Foundation, Inc.
-dnl
+dnl Copyright (C) 2017, 2020 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 <http://www.gnu.org/licenses/>.
-dnl AT_BANNER([ONEWAY procedure])
+dnl
+AT_BANNER([ONEWAY procedure])
AT_SETUP([ONEWAY basic operation])
+AT_KEYWORDS([categorical categoricals])
AT_DATA([oneway.sps],
[DATA LIST NOTABLE LIST /QUALITY * BRAND * .
BEGIN DATA
ONEWAY
quality BY brand
/STATISTICS descriptives homogeneity
- /CONTRAST = -2 1 1
+ /CONTRAST = -2 1 1
/CONTRAST = 0 -1 1
.
])
-AT_CHECK([pspp -O format=csv oneway.sps], [0], [dnl
+AT_CHECK([pspp -o pspp.csv -o pspp.txt oneway.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
Table: Descriptives
-,,,,,,95% Confidence Interval for Mean,,,
-,,N,Mean,Std. Deviation,Std. Error,Lower Bound,Upper Bound,Minimum,Maximum
+,Manufacturer,N,Mean,Std. Deviation,Std. Error,95% Confidence Interval for Mean,,Minimum,Maximum
+,,,,,,Lower Bound,Upper Bound,,
Breaking Strain,Aspeger,5,2.20,1.30,.58,.58,3.82,1.00,4.00
,Bloggs,5,3.20,1.30,.58,1.58,4.82,2.00,5.00
,Charlies,5,5.00,1.58,.71,3.04,6.96,3.00,7.00
,Total,43.73,14,,,
Table: Contrast Coefficients
-,,Manufacturer,,
-,,Aspeger,Bloggs,Charlies
-Contrast,1,-2,1,1
-,2,0,-1,1
+Contrast,Manufacturer,,
+,Aspeger,Bloggs,Charlies
+1,-2,1,1
+2,0,-1,1
Table: Contrast Tests
,,Contrast,Value of Contrast,Std. Error,t,df,Sig. (2-tailed)
-Breaking Strain,Assume equal variances,1,3.80,1.54,2.47,12,.029
-,,2,1.80,.89,2.03,12,.065
-,Does not assume equal,1,3.80,1.48,2.56,8.74,.031
+Breaking Strain,Assume equal variances,1,3.80,1.54,2.47,12.00,.029
+,,2,1.80,.89,2.03,12.00,.065
+,Does not assume equal variances,1,3.80,1.48,2.56,8.74,.031
,,2,1.80,.92,1.96,7.72,.086
])
AT_CLEANUP
AT_SETUP([ONEWAY with splits])
+AT_KEYWORDS([categorical categoricals])
AT_DATA([oneway-splits.sps],
[DATA LIST NOTABLE LIST /QUALITY * BRAND * S *.
BEGIN DATA
.
])
-AT_CHECK([pspp -O format=csv oneway-splits.sps], [0],
-[Variable,Value,Label
-S,1.00,
+AT_CHECK([pspp -o pspp.csv -o pspp.txt oneway-splits.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Split Values
+Variable,Value
+S,1.00
Table: Descriptives
-,,,,,,95% Confidence Interval for Mean,,,
-,,N,Mean,Std. Deviation,Std. Error,Lower Bound,Upper Bound,Minimum,Maximum
+,Manufacturer,N,Mean,Std. Deviation,Std. Error,95% Confidence Interval for Mean,,Minimum,Maximum
+,,,,,,Lower Bound,Upper Bound,,
Breaking Strain,Aspeger,5,2.20,1.30,.58,.58,3.82,1.00,4.00
,Bloggs,2,3.50,2.12,1.50,-15.56,22.56,2.00,5.00
,Total,7,2.57,1.51,.57,1.17,3.97,1.00,5.00
,Total,13.71,6,,,
Table: Contrast Coefficients
-,,Manufacturer,
-,,Aspeger,Bloggs
-Contrast,1,-2,2
-,2,-1,1
+Contrast,Manufacturer,
+,Aspeger,Bloggs
+1,-2,2
+2,-1,1
Table: Contrast Tests
,,Contrast,Value of Contrast,Std. Error,t,df,Sig. (2-tailed)
-Breaking Strain,Assume equal variances,1,2.60,2.52,1.03,5,.349
-,,2,1.30,1.26,1.03,5,.349
-,Does not assume equal,1,2.60,3.22,.81,1.32,.539
+Breaking Strain,Assume equal variances,1,2.60,2.52,1.03,5.00,.349
+,,2,1.30,1.26,1.03,5.00,.349
+,Does not assume equal variances,1,2.60,3.22,.81,1.32,.539
,,2,1.30,1.61,.81,1.32,.539
-Variable,Value,Label
-S,2.00,
+Table: Split Values
+Variable,Value
+S,2.00
Table: Descriptives
-,,,,,,95% Confidence Interval for Mean,,,
-,,N,Mean,Std. Deviation,Std. Error,Lower Bound,Upper Bound,Minimum,Maximum
+,Manufacturer,N,Mean,Std. Deviation,Std. Error,95% Confidence Interval for Mean,,Minimum,Maximum
+,,,,,,Lower Bound,Upper Bound,,
Breaking Strain,Bloggs,3,3.00,1.00,.58,.52,5.48,2.00,4.00
,Charlies,5,5.00,1.58,.71,3.04,6.96,3.00,7.00
,Total,8,4.25,1.67,.59,2.85,5.65,2.00,7.00
,Total,19.50,7,,,
Table: Contrast Coefficients
-,,Manufacturer,
-,,Bloggs,Charlies
-Contrast,1,-2,2
-,2,-1,1
+Contrast,Manufacturer,
+,Bloggs,Charlies
+1,-2,2
+2,-1,1
Table: Contrast Tests
,,Contrast,Value of Contrast,Std. Error,t,df,Sig. (2-tailed)
-Breaking Strain,Assume equal variances,1,4.00,2.07,1.94,6,.101
-,,2,2.00,1.03,1.94,6,.101
-,Does not assume equal,1,4.00,1.83,2.19,5.88,.072
+Breaking Strain,Assume equal variances,1,4.00,2.07,1.94,6.00,.101
+,,2,2.00,1.03,1.94,6.00,.101
+,Does not assume equal variances,1,4.00,1.83,2.19,5.88,.072
,,2,2.00,.91,2.19,5.88,.072
])
-
AT_CLEANUP
AT_SETUP([ONEWAY with missing values])
+AT_KEYWORDS([categorical categoricals])
dnl Check that missing are treated properly
AT_DATA([oneway-missing1.sps],
[DATA LIST NOTABLE LIST /v1 * v2 * dep * vn *.
ONEWAY
v1 v2 BY dep
/STATISTICS descriptives homogeneity
- /MISSING ANALYSIS
+ /MISSING ANALYSIS
.
])
AT_DATA([oneway-missing2.sps],
[DATA LIST NOTABLE LIST /v1 * v2 * dep * vn * .
BEGIN DATA
-4 . 1 2
+4 . 1 2
3 3 1 2
2 2 1 2
1 1 1 2
AT_DATA([oneway-missing3.sps],
[DATA LIST NOTABLE LIST /v1 * v2 * dep * vn * .
BEGIN DATA
-4 2 . 2
+4 2 . 2
3 3 1 2
2 2 1 2
1 1 1 2
AT_SETUP([ONEWAY descriptives subcommand])
+AT_KEYWORDS([categorical categoricals])
AT_DATA([oneway-descriptives.sps],
[DATA LIST NOTABLE LIST /QUALITY * BRAND * .
.
])
-AT_CHECK([pspp -O format=csv oneway-descriptives.sps], [0],
+AT_CHECK([pspp -O format=csv oneway-descriptives.sps], [0],
[Table: Descriptives
-,,,,,,95% Confidence Interval for Mean,,,
-,,N,Mean,Std. Deviation,Std. Error,Lower Bound,Upper Bound,Minimum,Maximum
+,BRAND,N,Mean,Std. Deviation,Std. Error,95% Confidence Interval for Mean,,Minimum,Maximum
+,,,,,,Lower Bound,Upper Bound,,
QUALITY,11.00,5,12.20,1.30,.58,10.58,13.82,11.00,14.00
,25.00,5,13.20,1.30,.58,11.58,14.82,12.00,15.00
,301.00,5,15.00,1.58,.71,13.04,16.96,13.00,17.00
AT_SETUP([ONEWAY homogeneity subcommand])
+AT_KEYWORDS([categorical categoricals])
AT_DATA([oneway-homogeneity.sps],
[DATA LIST NOTABLE LIST /QUALITY * BRAND * .
.
])
-AT_CHECK([pspp -O format=csv oneway-homogeneity.sps], [0],
+AT_CHECK([pspp -O format=csv oneway-homogeneity.sps], [0],
[Table: Test of Homogeneity of Variances
,Levene Statistic,df1,df2,Sig.
QUALITY,.09,2,12,.913
AT_SETUP([ONEWAY multiple variables])
+AT_KEYWORDS([categorical categoricals])
dnl check that everything works ok when several different dependent variables are specified.
dnl This of course does not mean that we're doing a multivariate analysis. It's just like
dnl running several tests at once.
.
])
-AT_CHECK([pspp -o pspp.csv multivar.sps])
+AT_CHECK([pspp -o pspp.csv -o pspp.txt multivar.sps])
dnl Some machines return 3.88 instead of 3.87 below (see bug #31611).
-AT_CHECK([sed 's/^,Within Groups,3.88/,Within Groups,3.87/' pspp.csv], [0], [dnl
-Table: Descriptives
-,,,,,,95% Confidence Interval for Mean,,,
-,,N,Mean,Std. Deviation,Std. Error,Lower Bound,Upper Bound,Minimum,Maximum
+AT_CHECK([sed -e 's/^,Within Groups,3.88/,Within Groups,3.87/' pspp.csv], [0],
+ [Table: Descriptives
+,g,N,Mean,Std. Deviation,Std. Error,95% Confidence Interval for Mean,,Minimum,Maximum
+,,,,,,Lower Bound,Upper Bound,,
x,10.00,3,3.67,4.62,2.67,-7.81,15.14,1.00,9.00
,20.00,5,.80,.45,.20,.24,1.36,.00,1.00
,30.00,8,.88,.64,.23,.34,1.41,.00,2.00
,Total,205.33,23,,,
Table: Contrast Coefficients
-,,g,,,
-,,10.00,20.00,30.00,40.00
-Contrast,1,3,2,0,-5
-,2,2,-9,7,0
+Contrast,g,,,
+,10.00,20.00,30.00,40.00
+1,3,2,0,-5
+2,2,-9,7,0
Table: Contrast Tests
,,Contrast,Value of Contrast,Std. Error,t,df,Sig. (2-tailed)
-x,Assume equal variances,1,-7.40,6.67,1.11,20,.280
-,,2,6.26,12.32,.51,20,.617
-,Does not assume equal,1,-7.40,10.04,-.74,4.53,.497
+x,Assume equal variances,1,-7.40,6.67,-1.11,20.00,.280
+,,2,6.26,12.32,.51,20.00,.617
+,Does not assume equal variances,1,-7.40,10.04,-.74,4.53,.497
,,2,6.26,5.85,1.07,2.87,.366
-y,Assume equal variances,1,-6.88,1.16,5.94,20,.000
-,,2,3.50,2.14,1.63,20,.118
-,Does not assume equal,1,-6.88,.91,-7.51,7.00,.000
+y,Assume equal variances,1,-6.88,1.16,-5.94,20.00,.000
+,,2,3.50,2.14,1.63,20.00,.118
+,Does not assume equal variances,1,-6.88,.91,-7.51,7.00,.000
,,2,3.50,1.32,2.65,7.00,.033
-z,Assume equal variances,1,-9.70,8.07,1.20,20,.243
-,,2,11.73,14.91,.79,20,.440
-,Does not assume equal,1,-9.70,9.57,-1.01,3.64,.373
+z,Assume equal variances,1,-9.70,8.07,-1.20,20.00,.243
+,,2,11.73,14.91,.79,20.00,.440
+,Does not assume equal variances,1,-9.70,9.57,-1.01,3.64,.373
,,2,11.73,14.53,.81,9.88,.438
])
dnl Tests that everything treats weights properly
AT_SETUP([ONEWAY vs. weights])
+AT_KEYWORDS([categorical categoricals])
AT_DATA([oneway-unweighted.sps],
[DATA LIST NOTABLE LIST /QUALITY * BRAND * W *.
AT_SETUP([ONEWAY posthoc LSD and BONFERRONI])
+AT_KEYWORDS([categorical categoricals])
AT_DATA([oneway-pig.sps],[dnl
SET FORMAT F12.3.
data list notable list /pigmentation * family *.
.
])
-AT_CHECK([pspp -O format=csv oneway-pig.sps], [0],
-[Table: Descriptives
-,,,,,,95% Confidence Interval for Mean,,,
-,,N,Mean,Std. Deviation,Std. Error,Lower Bound,Upper Bound,Minimum,Maximum
+AT_CHECK([pspp -o pspp.csv -o pspp.txt oneway-pig.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Descriptives
+,family,N,Mean,Std. Deviation,Std. Error,95% Confidence Interval for Mean,,Minimum,Maximum
+,,,,,,Lower Bound,Upper Bound,,
pigmentation,1.000,5,38.600,2.702,1.208,35.245,41.955,36.000,43.000
,2.000,5,46.000,1.732,.775,43.849,48.151,43.000,47.000
,3.000,5,46.400,4.336,1.939,41.016,51.784,40.000,50.000
,Total,676.550,19,,,
Table: Multiple Comparisons (pigmentation)
-,,,Mean Difference,,,95% Confidence Interval,
-,(I) family,(J) family,(I - J),Std. Error,Sig.,Lower Bound,Upper Bound
+,(J) Family,(J) Family,Mean Difference (I - J),Std. Error,Sig.,95% Confidence Interval,
+,,,,,,Lower Bound,Upper Bound
LSD,1.000,2.000,-7.400,2.223,.004,-12.112,-2.688
,,3.000,-7.800,2.223,.003,-12.512,-3.088
,,4.000,-13.800,2.223,.000,-18.512,-9.088
,,2.000,6.400,2.223,.065,-.286,13.086
,,3.000,6.000,2.223,.095,-.686,12.686
])
-
AT_CLEANUP
AT_SETUP([ONEWAY posthoc Tukey HSD and Games-Howell])
+AT_KEYWORDS([categorical categoricals])
AT_DATA([oneway-tukey.sps],[dnl
set format = f11.3.
data list notable list /libido * dose *.
/posthoc tukey gh.
])
-AT_CHECK([pspp -O format=csv oneway-tukey.sps], [0],
-[Table: ANOVA
+AT_CHECK([pspp -o pspp.csv -o pspp.txt oneway-tukey.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: ANOVA
,,Sum of Squares,df,Mean Square,F,Sig.
libido,Between Groups,20.133,2,10.067,5.119,.025
,Within Groups,23.600,12,1.967,,
,Total,43.733,14,,,
Table: Multiple Comparisons (libido)
-,,,Mean Difference,,,95% Confidence Interval,
-,(I) Dose of Viagra,(J) Dose of Viagra,(I - J),Std. Error,Sig.,Lower Bound,Upper Bound
+,(J) Family,(J) Family,Mean Difference (I - J),Std. Error,Sig.,95% Confidence Interval,
+,,,,,,Lower Bound,Upper Bound
Tukey HSD,Placebo,1 Dose,-1.000,.887,.516,-3.366,1.366
,,2 Doses,-2.800,.887,.021,-5.166,-.434
,1 Dose,Placebo,1.000,.887,.516,-1.366,3.366
AT_CLEANUP
AT_SETUP([ONEWAY posthoc Sidak])
+AT_KEYWORDS([categorical categoricals])
AT_DATA([oneway-sidak.sps],[dnl
SET FORMAT F20.4.
/POSTHOC = SIDAK.
])
-AT_CHECK([pspp -O format=csv oneway-sidak.sps], [0],
+AT_CHECK([pspp -O format=csv oneway-sidak.sps], [0],
[Table: ANOVA
,,Sum of Squares,df,Mean Square,F,Sig.
score,Between Groups,54.9500,3,18.3167,7.0449,.003
,Total,96.5500,19,,,
Table: Multiple Comparisons (score)
-,,,Mean Difference,,,95% Confidence Interval,
-,(I) program,(J) program,(I - J),Std. Error,Sig.,Lower Bound,Upper Bound
+,(J) Family,(J) Family,Mean Difference (I - J),Std. Error,Sig.,95% Confidence Interval,
+,,,,,,Lower Bound,Upper Bound
Šidák,1.0000,2.0000,3.0000,1.0198,.056,-.0575,6.0575
,,3.0000,-.4000,1.0198,.999,-3.4575,2.6575
,,4.0000,3.2000,1.0198,.038,.1425,6.2575
AT_CLEANUP
AT_SETUP([ONEWAY posthoc Scheffe])
+AT_KEYWORDS([categorical categoricals])
AT_DATA([oneway-scheffe.sps],[dnl
set format = f11.3.
data list notable list /usage * group *.
/posthoc scheffe.
])
-AT_CHECK([pspp -O format=csv oneway-scheffe.sps], [0],
+AT_CHECK([pspp -O format=csv oneway-scheffe.sps], [0],
[Table: ANOVA
,,Sum of Squares,df,Mean Square,F,Sig.
Days of Use,Between Groups,555.275,3,185.092,6.663,.001
,Total,1555.375,39,,,
Table: Multiple Comparisons (Days of Use)
-,,,Mean Difference,,,95% Confidence Interval,
-,(I) group,(J) group,(I - J),Std. Error,Sig.,Lower Bound,Upper Bound
+,(J) Family,(J) Family,Mean Difference (I - J),Std. Error,Sig.,95% Confidence Interval,
+,,,,,,Lower Bound,Upper Bound
Scheffé,one,two,3.800,2.357,.467,-3.112,10.712
,,three,10.300,2.357,.001,3.388,17.212
,,four,6.000,2.357,.110,-.912,12.912
AT_SETUP([ONEWAY bad contrast count])
+AT_KEYWORDS([categorical categoricals])
AT_DATA([oneway-bad-contrast.sps],[dnl
DATA LIST NOTABLE LIST /height * weight * temperature * sex *.
END DATA.
ONEWAY /VARIABLES= height weight temperature BY sex
- /CONTRAST = -1 1
- /CONTRAST = -3 3
+ /CONTRAST = -1 1
+ /CONTRAST = -3 3
/CONTRAST = 2 -2 1
/CONTRAST = -9 9
- .
+ .
])
-AT_CHECK([pspp -O format=csv oneway-bad-contrast.sps], [0], [dnl
+AT_CHECK([pspp -o pspp.csv -o pspp.txt oneway-bad-contrast.sps], [0], [dnl
+oneway-bad-contrast.sps:18: warning: ONEWAY: In contrast list 3, the number of coefficients (3) does not equal the number of groups (2). This contrast list will be ignored.
+])
+AT_CHECK([cat pspp.csv], [0], [dnl
"oneway-bad-contrast.sps:18: warning: ONEWAY: In contrast list 3, the number of coefficients (3) does not equal the number of groups (2). This contrast list will be ignored."
Table: ANOVA
,Total,86.36,7,,,
Table: Contrast Coefficients
-,,sex,
-,,.00,1.00
-Contrast,1,-1,1
-,2,-3,3
-,3,-9,9
+Contrast,sex,
+,.00,1.00
+1,-1,1
+2,-3,3
+3,-9,9
Table: Contrast Tests
,,Contrast,Value of Contrast,Std. Error,t,df,Sig. (2-tailed)
-height,Assume equal variances,1,-222.27,20.23,10.99,6,.000
-,,2,-666.80,60.68,10.99,6,.000
-,,3,-2000.40,182.03,10.99,6,.000
-,Does not assume equal,1,-222.27,27.67,-8.03,2.00,.015
+height,Assume equal variances,1,-222.27,20.23,-10.99,6.00,.000
+,,2,-666.80,60.68,-10.99,6.00,.000
+,,3,-2000.40,182.03,-10.99,6.00,.000
+,Does not assume equal variances,1,-222.27,27.67,-8.03,2.00,.015
,,2,-666.80,83.02,-8.03,2.00,.015
,,3,-2000.40,249.07,-8.03,2.00,.015
-weight,Assume equal variances,1,-36.16,2.74,13.21,6,.000
-,,2,-108.48,8.21,13.21,6,.000
-,,3,-325.44,24.63,13.21,6,.000
-,Does not assume equal,1,-36.16,2.19,-16.48,5.42,.000
+weight,Assume equal variances,1,-36.16,2.74,-13.21,6.00,.000
+,,2,-108.48,8.21,-13.21,6.00,.000
+,,3,-325.44,24.63,-13.21,6.00,.000
+,Does not assume equal variances,1,-36.16,2.19,-16.48,5.42,.000
,,2,-108.48,6.58,-16.48,5.42,.000
,,3,-325.44,19.75,-16.48,5.42,.000
-temperature,Assume equal variances,1,-.98,2.74,.36,6,.733
-,,2,-2.94,8.22,.36,6,.733
-,,3,-8.83,24.67,.36,6,.733
-,Does not assume equal,1,-.98,2.07,-.47,4.19,.660
+temperature,Assume equal variances,1,-.98,2.74,-.36,6.00,.733
+,,2,-2.94,8.22,-.36,6.00,.733
+,,3,-8.83,24.67,-.36,6.00,.733
+,Does not assume equal variances,1,-.98,2.07,-.47,4.19,.660
,,2,-2.94,6.22,-.47,4.19,.660
,,3,-8.83,18.66,-.47,4.19,.660
])
-
AT_CLEANUP
AT_SETUP([ONEWAY crash on single category independent variable])
+AT_KEYWORDS([categorical categoricals])
AT_DATA([crash.sps],[
input program.
loop #i = 1 to 10.
AT_SETUP([ONEWAY crash on missing dependent variable])
+AT_KEYWORDS([categorical categoricals])
AT_DATA([crash2.sps],[dnl
data list notable list /dv1 * dv2 * y * .
begin data.
-2 . 2
-1 . 2
-1 . 1
-2 . 4
+2 . 2
+1 . 2
+1 . 1
+2 . 4
3 . 4
-4 . 4
-5 . 4
+4 . 4
+5 . 4
end data.
-ONEWAY
+ONEWAY
/VARIABLES= dv1 dv2 BY y
/STATISTICS = DESCRIPTIVES
/POSTHOC = BONFERRONI LSD SCHEFFE SIDAK TUKEY
- /MISSING = ANALYSIS
+ /MISSING = ANALYSIS
.
])
AT_SETUP([ONEWAY Games-Howell test with few cases])
+AT_KEYWORDS([categorical categoricals])
AT_DATA([crash3.sps],[dnl
data list notable list /dv * y * .
begin data.
ONEWAY
/VARIABLES= dv BY y
/POSTHOC = GH
- .
+ .
])
AT_CHECK([pspp -O format=csv crash3.sps], [0], [ignore])
AT_SETUP([ONEWAY Crash on empty data])
+AT_KEYWORDS([categorical categoricals])
AT_DATA([crash4.sps],[dnl
DATA LIST NOTABLE LIST /height * weight * temperature * sex *.
BEGIN DATA.
AT_SETUP([ONEWAY Crash on invalid dependent variable])
+AT_KEYWORDS([categorical categoricals])
AT_DATA([crash5.sps],[dnl
data list notable list /a * b *.
begin data.
AT_SETUP([ONEWAY Crash on unterminated string])
+AT_KEYWORDS([categorical categoricals])
AT_DATA([crash6.sps], [dnl
DATA LIST NOTABLE LIST /height * weight * temperature * sex *.
AT_CHECK([pspp -O format=csv crash6.sps], [1], [ignore])
AT_CLEANUP
+
+
+AT_SETUP([ONEWAY contrast bug])
+
+AT_KEYWORDS([categorical categoricals])
+
+
+
+dnl this example comes from: https://case.truman.edu/files/2015/06/SPSS-One-Way-ANOVA.pdf
+AT_DATA([contrasts.sps],
+[
+SET FORMAT=F10.3.
+
+DATA LIST notable LIST /relieftime drugs *.
+begin data.
+12 0
+15 0
+18 0
+16 0
+20 0
+20 1
+21 1
+22 1
+19 1
+20 1
+17 2
+16 2
+19 2
+15 2
+19 2
+14 3
+13 3
+12 3
+14 3
+11 3
+end data.
+
+ONEWAY relieftime by drugs
+ /CONTRAST 3 -1 -1 -1
+ /CONTRAST 0 2 -1 -1
+ /CONTRAST 0 0 1 -1
+ .
+])
+
+AT_CHECK([pspp -O format=csv contrasts.sps], [0], [Table: ANOVA
+,,Sum of Squares,df,Mean Square,F,Sig.
+relieftime,Between Groups,146.950,3,48.983,12.723,.000
+,Within Groups,61.600,16,3.850,,
+,Total,208.550,19,,,
+
+Table: Contrast Coefficients
+Contrast,drugs,,,
+,.000,1.000,2.000,3.000
+1,3,-1,-1,-1
+2,0,2,-1,-1
+3,0,0,1,-1
+
+Table: Contrast Tests
+,,Contrast,Value of Contrast,Std. Error,t,df,Sig. (2-tailed)
+relieftime,Assume equal variances,1,-1.800,3.040,-.592,16.000,.562
+,,2,10.800,2.149,5.025,16.000,.000
+,,3,4.400,1.241,3.546,16.000,.003
+,Does not assume equal variances,1,-1.800,4.219,-.427,4.611,.689
+,,2,10.800,1.421,7.599,10.158,.000
+,,3,4.400,.990,4.445,7.315,.003
+])
+
+AT_CLEANUP