Rewrite PSPP output engine.
[pspp-builds.git] / tests / command / npar-chisquare.sh
1 #!/bin/sh
2
3 # This program tests the chisquare subcommand of the NPAR command.
4
5 TEMPDIR=/tmp/pspp-tst-$$
6 TESTFILE=$TEMPDIR/`basename $0`.sps
7
8 # ensure that top_srcdir and top_builddir  are absolute
9 if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
10 if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
11 top_srcdir=`cd $top_srcdir; pwd`
12 top_builddir=`cd $top_builddir; pwd`
13
14 PSPP=$top_builddir/src/ui/terminal/pspp
15
16 STAT_CONFIG_PATH=$top_srcdir/config
17 export STAT_CONFIG_PATH
18
19 LANG=C
20 export LANG
21
22
23 cleanup()
24 {
25      if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then 
26         echo "NOT cleaning $TEMPDIR"
27         return ; 
28      fi
29      cd /
30      rm -rf $TEMPDIR
31 }
32
33
34 fail()
35 {
36     echo $activity
37     echo FAILED
38     cleanup;
39     exit 1;
40 }
41
42
43 no_result()
44 {
45     echo $activity
46     echo NO RESULT;
47     cleanup;
48     exit 2;
49 }
50
51 pass()
52 {
53     cleanup;
54     exit 0;
55 }
56
57 mkdir -p $TEMPDIR
58
59 cd $TEMPDIR
60
61 activity="create file 1"
62 cat <<EOF > $TESTFILE
63 DATA LIST NOTABLE LIST /x * y * w *.
64 BEGIN DATA.
65 1   2  1
66 2   1  3
67 3.1 1  4
68 3.2 2  1
69 4   2  2
70 5   3  1
71 1   4  2
72 END DATA.
73
74 WEIGHT BY w.
75
76 NPAR TESTS
77   CHISQUARE=x y
78   .
79
80 NPAR TESTS
81   CHISQUARE=y
82   /EXPECTED=3 4 5 4
83   .
84
85 NPAR TESTS
86   CHISQUARE=x y(2, 4)
87   /EXPECTED = 6 10 3
88   .
89
90 EOF
91 if [ $? -ne 0 ] ; then no_result ; fi
92
93
94 activity="run program 1"
95 $SUPERVISOR $PSPP --testing-mode $TESTFILE
96 if [ $? -ne 0 ] ; then no_result ; fi
97
98 activity="compare output 1"
99 diff -c $TEMPDIR/pspp.csv - << EOF
100 Table: x
101 ,Observed N,Expected N,Residual
102 1.00,3.00,2.33,.67
103 2.00,3.00,2.33,.67
104 3.10,4.00,2.33,1.67
105 3.20,1.00,2.33,-1.33
106 4.00,2.00,2.33,-.33
107 5.00,1.00,2.33,-1.33
108 Total,14.00,,
109
110 Table: y
111 ,Observed N,Expected N,Residual
112 1.00,7.00,3.50,3.50
113 2.00,4.00,3.50,.50
114 3.00,1.00,3.50,-2.50
115 4.00,2.00,3.50,-1.50
116 Total,14.00,,
117
118 Table: Test Statistics
119 ,x,y
120 Chi-Square,3.14,6.00
121 df,5,3
122 Asymp. Sig.,.68,.11
123
124 Table: y
125 ,Observed N,Expected N,Residual
126 1.00,7.00,2.63,4.38
127 2.00,4.00,3.50,.50
128 3.00,1.00,4.38,-3.38
129 4.00,2.00,3.50,-1.50
130 Total,14.00,,
131
132 Table: Test Statistics
133 ,y
134 Chi-Square,10.61
135 df,3
136 Asymp. Sig.,.01
137
138 Table: Frequencies
139 ,x,,,,y,,,
140 ,Category,Observed N,Expected N,Residual,Category,Observed N,Expected N,Residual
141 1,2.00,3.00,3.16,-.16,2.00,4.00,2.21,1.79
142 2,3.00,5.00,5.26,-.26,3.00,1.00,3.68,-2.68
143 3,4.00,2.00,1.58,.42,4.00,2.00,1.11,.89
144 Total,,10.00,,,,7.00,,
145
146 Table: Test Statistics
147 ,x,y
148 Chi-Square,.13,4.13
149 df,2,2
150 Asymp. Sig.,.94,.13
151 EOF
152 if [ $? -ne 0 ] ; then fail ; fi
153
154
155 activity="create file 2"
156 cat <<EOF > $TESTFILE
157 DATA LIST NOTABLE LIST /x * y * w *.
158 BEGIN DATA.
159 1   2  1
160 2   1  3
161 3.1 1  4
162 3.2 2  1
163 4   2  2
164 5   3  1
165 1   4  2
166 END DATA.
167
168 WEIGHT BY w.
169
170 NPAR TESTS
171   CHISQUARE=y
172   /EXPECTED = 3 4 5 4 3 1
173   .
174 EOF
175 if [ $? -ne 0 ] ; then no_result ; fi
176
177
178 activity="run program 2"
179 $SUPERVISOR $PSPP --testing-mode $TESTFILE  > $TEMPDIR/output
180 if [ $? -eq 0 ] ; then no_result ; fi
181
182 activity="compare errors 2"
183 perl -pi -e 's/^\s*$//g' $TEMPDIR/output
184 diff -b  $TEMPDIR/output - << EOF
185 error: CHISQUARE test specified 6 expected values, but 4 distinct values were encountered in variable y.
186 EOF
187 if [ $? -ne 0 ] ; then fail ; fi
188
189
190 activity="create file 3"
191 cat <<EOF > $TESTFILE
192 DATA LIST NOTABLE LIST /x * y * w * .
193 BEGIN DATA.
194 1   2  1 
195 2   1  3
196 3.1 1  4
197 3.2 2  1
198 4   2  2
199 5   3  1
200 1   4  2
201 .   5  1
202 END DATA.
203
204 WEIGHT BY w.
205
206 MISSING VALUES x (4).
207
208 NPAR TESTS
209   CHISQUARE=x y(-2,5)
210   /MISSING=ANALYSIS
211   /STATISTICS=DESCRIPTIVES
212   .
213 EOF
214 if [ $? -ne 0 ] ; then no_result ; fi
215
216
217 activity="run program 3"
218 $SUPERVISOR $PSPP --testing-mode $TESTFILE 
219 if [ $? -ne 0 ] ; then no_result ; fi
220
221
222 activity="compare output 3"
223 diff -c $TEMPDIR/pspp.csv - <<EOF
224 Table: Frequencies
225 ,x,,,,y,,,
226 ,Category,Observed N,Expected N,Residual,Category,Observed N,Expected N,Residual
227 1,-2.00,.00,1.50,-1.50,-2.00,.00,1.88,-1.88
228 2,-1.00,.00,1.50,-1.50,-1.00,.00,1.88,-1.88
229 3,.00,.00,1.50,-1.50,.00,.00,1.88,-1.88
230 4,1.00,3.00,1.50,1.50,1.00,7.00,1.88,5.13
231 5,2.00,3.00,1.50,1.50,2.00,4.00,1.88,2.13
232 6,3.00,5.00,1.50,3.50,3.00,1.00,1.88,-.88
233 7,4.00,.00,1.50,-1.50,4.00,2.00,1.88,.13
234 8,5.00,1.00,1.50,-.50,5.00,1.00,1.88,-.88
235 Total,,12.00,,,,15.00,,
236
237 Table: Test Statistics
238 ,x,y
239 Chi-Square,17.33,22.87
240 df,7,7
241 Asymp. Sig.,.02,.00
242
243 Table: Descriptive Statistics
244 ,N,Mean,Std. Deviation,Minimum,Maximum
245 ,,,,,
246 x,12.00,2.47,1.19,1.00,5.00
247 y,15.00,2.07,1.33,1.00,5.00
248 EOF
249 if [ $? -ne 0 ] ; then fail ; fi
250
251
252 activity="create file 4"
253 cat <<EOF > $TESTFILE
254 DATA LIST NOTABLE LIST /x * y * w * .
255 BEGIN DATA.
256 1   2  1 
257 2   1  3
258 3.1 1  4
259 3.2 2  1
260 4   2  2
261 5   3  1
262 1   4  2
263 .   5  1
264 END DATA.
265
266 WEIGHT BY w.
267
268 * MISSING VALUES x (4).
269
270 NPAR TESTS
271   CHISQUARE=x y(-2,5)
272   /MISSING=LISTWISE
273   /STATISTICS=DESCRIPTIVES
274   .
275 EOF
276 if [ $? -ne 0 ] ; then no_result ; fi
277
278
279 activity="run program 4"
280 $SUPERVISOR $PSPP --testing-mode $TESTFILE 
281 if [ $? -ne 0 ] ; then no_result ; fi
282
283
284 activity="compare output 4"
285 diff -c $TEMPDIR/pspp.csv - <<EOF
286 Table: Frequencies
287 ,x,,,,y,,,
288 ,Category,Observed N,Expected N,Residual,Category,Observed N,Expected N,Residual
289 1,-2.00,.00,1.75,-1.75,-2.00,.00,1.75,-1.75
290 2,-1.00,.00,1.75,-1.75,-1.00,.00,1.75,-1.75
291 3,.00,.00,1.75,-1.75,.00,.00,1.75,-1.75
292 4,1.00,3.00,1.75,1.25,1.00,7.00,1.75,5.25
293 5,2.00,3.00,1.75,1.25,2.00,4.00,1.75,2.25
294 6,3.00,5.00,1.75,3.25,3.00,1.00,1.75,-.75
295 7,4.00,2.00,1.75,.25,4.00,2.00,1.75,.25
296 8,5.00,1.00,1.75,-.75,5.00,.00,1.75,-1.75
297 Total,,14.00,,,,14.00,,
298
299 Table: Test Statistics
300 ,x,y
301 Chi-Square,13.43,26.00
302 df,7,7
303 Asymp. Sig.,.06,.00
304
305 Table: Descriptive Statistics
306 ,N,Mean,Std. Deviation,Minimum,Maximum
307 ,,,,,
308 x,14.00,2.69,1.23,1.00,5.00
309 y,14.00,1.86,1.10,1.00,4.00
310 EOF
311 if [ $? -ne 0 ] ; then fail ; fi
312
313
314 pass;