33e2311bc9b49bfcd3756b5ccc91373d35db4fc1
[pspp-builds.git] / 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 perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.list
100 diff -b $TEMPDIR/pspp.list - << EOF
101 1.1 NPAR TESTS.  x
102 +--------#----------+----------+--------+
103 |        #Observed N|Expected N|Residual|
104 +--------#----------+----------+--------+
105 |    1.00#      3.00|      2.33|     .67|
106 |    2.00#      3.00|      2.33|     .67|
107 |    3.10#      4.00|      2.33|    1.67|
108 |    3.20#      1.00|      2.33|   -1.33|
109 |    4.00#      2.00|      2.33|    -.33|
110 |    5.00#      1.00|      2.33|   -1.33|
111 |Total   #     14.00|          |        |
112 +--------#----------+----------+--------+
113 1.2 NPAR TESTS.  y
114 +--------#----------+----------+--------+
115 |        #Observed N|Expected N|Residual|
116 +--------#----------+----------+--------+
117 |    1.00#      7.00|      3.50|    3.50|
118 |    2.00#      4.00|      3.50|     .50|
119 |    3.00#      1.00|      3.50|   -2.50|
120 |    4.00#      2.00|      3.50|   -1.50|
121 |Total   #     14.00|          |        |
122 +--------#----------+----------+--------+
123 1.3 NPAR TESTS.  Test Statistics
124 +-----------#----+----+
125 |           #  x |  y |
126 +-----------#----+----+
127 |Chi-Square #3.14|6.00|
128 |df         #   5|   3|
129 |Asymp. Sig.# .68| .11|
130 +-----------#----+----+
131 2.1 NPAR TESTS.  y
132 +--------#----------+----------+--------+
133 |        #Observed N|Expected N|Residual|
134 +--------#----------+----------+--------+
135 |    1.00#      7.00|      2.63|    4.38|
136 |    2.00#      4.00|      3.50|     .50|
137 |    3.00#      1.00|      4.38|   -3.38|
138 |    4.00#      2.00|      3.50|   -1.50|
139 |Total   #     14.00|          |        |
140 +--------#----------+----------+--------+
141 2.2 NPAR TESTS.  Test Statistics
142 +-----------#-----+
143 |           #  y  |
144 +-----------#-----+
145 |Chi-Square #10.61|
146 |df         #    3|
147 |Asymp. Sig.#  .01|
148 +-----------#-----+
149 3.1 NPAR TESTS.  Frequencies
150 +-----#---------------------------------------#---------------------------------------+
151 |     #                   x                   #                   y                   |
152 |     #--------+----------+----------+--------#--------+----------+----------+--------+
153 |     #Category|Observed N|Expected N|Residual#Category|Observed N|Expected N|Residual|
154 +-----#--------+----------+----------+--------#--------+----------+----------+--------+
155 |1    #    2.00|      3.00|      3.16|    -.16#    2.00|      4.00|      2.21|    1.79|
156 |2    #    3.00|      5.00|      5.26|    -.26#    3.00|      1.00|      3.68|   -2.68|
157 |3    #    4.00|      2.00|      1.58|     .42#    4.00|      2.00|      1.11|     .89|
158 |Total#        |     10.00|          |        #        |      7.00|          |        |
159 +-----#--------+----------+----------+--------#--------+----------+----------+--------+
160 3.2 NPAR TESTS.  Test Statistics
161 +-----------#---+----+
162 |           # x |  y |
163 +-----------#---+----+
164 |Chi-Square #.13|4.13|
165 |df         #  2|   2|
166 |Asymp. Sig.#.94| .13|
167 +-----------#---+----+
168 EOF
169 if [ $? -ne 0 ] ; then fail ; fi
170
171
172 activity="create file 2"
173 cat <<EOF > $TESTFILE
174 DATA LIST NOTABLE LIST /x * y * w *.
175 BEGIN DATA.
176 1   2  1
177 2   1  3
178 3.1 1  4
179 3.2 2  1
180 4   2  2
181 5   3  1
182 1   4  2
183 END DATA.
184
185 WEIGHT BY w.
186
187 NPAR TESTS
188   CHISQUARE=y
189   /EXPECTED = 3 4 5 4 3 1
190   .
191 EOF
192 if [ $? -ne 0 ] ; then no_result ; fi
193
194
195 activity="run program 2"
196 $SUPERVISOR $PSPP --testing-mode $TESTFILE  > $TEMPDIR/output
197 if [ $? -eq 0 ] ; then no_result ; fi
198
199 activity="compare errors 2"
200 perl -pi -e 's/^\s*$//g' $TEMPDIR/output
201 diff -b  $TEMPDIR/output - << EOF
202 error: CHISQUARE test specified 6 expected values, but 4 distinct values were encountered in variable y.
203 EOF
204 if [ $? -ne 0 ] ; then fail ; fi
205
206
207 activity="create file 3"
208 cat <<EOF > $TESTFILE
209 DATA LIST NOTABLE LIST /x * y * w * .
210 BEGIN DATA.
211 1   2  1 
212 2   1  3
213 3.1 1  4
214 3.2 2  1
215 4   2  2
216 5   3  1
217 1   4  2
218 .   5  1
219 END DATA.
220
221 WEIGHT BY w.
222
223 MISSING VALUES x (4).
224
225 NPAR TESTS
226   CHISQUARE=x y(-2,5)
227   /MISSING=ANALYSIS
228   /STATISTICS=DESCRIPTIVES
229   .
230 EOF
231 if [ $? -ne 0 ] ; then no_result ; fi
232
233
234 activity="run program 3"
235 $SUPERVISOR $PSPP --testing-mode $TESTFILE 
236 if [ $? -ne 0 ] ; then no_result ; fi
237
238
239 activity="compare output 3"
240 perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.list
241 diff -b $TEMPDIR/pspp.list - <<EOF
242 1.1 NPAR TESTS.  Frequencies
243 +-----#---------------------------------------#---------------------------------------+
244 |     #                   x                   #                   y                   |
245 |     #--------+----------+----------+--------#--------+----------+----------+--------+
246 |     #Category|Observed N|Expected N|Residual#Category|Observed N|Expected N|Residual|
247 +-----#--------+----------+----------+--------#--------+----------+----------+--------+
248 |1    #   -2.00|       .00|      1.50|   -1.50#   -2.00|       .00|      1.88|   -1.88|
249 |2    #   -1.00|       .00|      1.50|   -1.50#   -1.00|       .00|      1.88|   -1.88|
250 |3    #     .00|       .00|      1.50|   -1.50#     .00|       .00|      1.88|   -1.88|
251 |4    #    1.00|      3.00|      1.50|    1.50#    1.00|      7.00|      1.88|    5.13|
252 |5    #    2.00|      3.00|      1.50|    1.50#    2.00|      4.00|      1.88|    2.13|
253 |6    #    3.00|      5.00|      1.50|    3.50#    3.00|      1.00|      1.88|    -.88|
254 |7    #    4.00|       .00|      1.50|   -1.50#    4.00|      2.00|      1.88|     .13|
255 |8    #    5.00|      1.00|      1.50|    -.50#    5.00|      1.00|      1.88|    -.88|
256 |Total#        |     12.00|          |        #        |     15.00|          |        |
257 +-----#--------+----------+----------+--------#--------+----------+----------+--------+
258 1.2 NPAR TESTS.  Test Statistics
259 +-----------#-----+-----+
260 |           #  x  |  y  |
261 +-----------#-----+-----+
262 |Chi-Square #17.33|22.87|
263 |df         #    7|    7|
264 |Asymp. Sig.#  .02|  .00|
265 +-----------#-----+-----+
266 1.3 NPAR TESTS.  Descriptive Statistics
267 +-#-----+----+----+----+----+
268 | #  N  |Mean|Std.|Mini|Maxi|
269 | #     |    |Devi| mum| mum|
270 #=#=====#====#====#====#====#
271 |x#12.00|2.47|1.19|1.00|5.00|
272 |y#15.00|2.07|1.33|1.00|5.00|
273 +-#-----+----+----+----+----+
274 EOF
275 if [ $? -ne 0 ] ; then fail ; fi
276
277
278 activity="create file 4"
279 cat <<EOF > $TESTFILE
280 DATA LIST NOTABLE LIST /x * y * w * .
281 BEGIN DATA.
282 1   2  1 
283 2   1  3
284 3.1 1  4
285 3.2 2  1
286 4   2  2
287 5   3  1
288 1   4  2
289 .   5  1
290 END DATA.
291
292 WEIGHT BY w.
293
294 * MISSING VALUES x (4).
295
296 NPAR TESTS
297   CHISQUARE=x y(-2,5)
298   /MISSING=LISTWISE
299   /STATISTICS=DESCRIPTIVES
300   .
301 EOF
302 if [ $? -ne 0 ] ; then no_result ; fi
303
304
305 activity="run program 4"
306 $SUPERVISOR $PSPP --testing-mode $TESTFILE 
307 if [ $? -ne 0 ] ; then no_result ; fi
308
309
310 activity="compare output 4"
311 perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.list
312 diff -b $TEMPDIR/pspp.list - <<EOF
313 1.1 NPAR TESTS.  Frequencies
314 +-----#---------------------------------------#---------------------------------------+
315 |     #                   x                   #                   y                   |
316 |     #--------+----------+----------+--------#--------+----------+----------+--------+
317 |     #Category|Observed N|Expected N|Residual#Category|Observed N|Expected N|Residual|
318 +-----#--------+----------+----------+--------#--------+----------+----------+--------+
319 |1    #   -2.00|       .00|      1.75|   -1.75#   -2.00|       .00|      1.75|   -1.75|
320 |2    #   -1.00|       .00|      1.75|   -1.75#   -1.00|       .00|      1.75|   -1.75|
321 |3    #     .00|       .00|      1.75|   -1.75#     .00|       .00|      1.75|   -1.75|
322 |4    #    1.00|      3.00|      1.75|    1.25#    1.00|      7.00|      1.75|    5.25|
323 |5    #    2.00|      3.00|      1.75|    1.25#    2.00|      4.00|      1.75|    2.25|
324 |6    #    3.00|      5.00|      1.75|    3.25#    3.00|      1.00|      1.75|    -.75|
325 |7    #    4.00|      2.00|      1.75|     .25#    4.00|      2.00|      1.75|     .25|
326 |8    #    5.00|      1.00|      1.75|    -.75#    5.00|       .00|      1.75|   -1.75|
327 |Total#        |     14.00|          |        #        |     14.00|          |        |
328 +-----#--------+----------+----------+--------#--------+----------+----------+--------+
329 1.2 NPAR TESTS.  Test Statistics
330 +-----------#-----+-----+
331 |           #  x  |  y  |
332 +-----------#-----+-----+
333 |Chi-Square #13.43|26.00|
334 |df         #    7|    7|
335 |Asymp. Sig.#  .06|  .00|
336 +-----------#-----+-----+
337 1.3 NPAR TESTS.  Descriptive Statistics
338 +-#-----+----+----+----+----+
339 | #  N  |Mean|Std.|Mini|Maxi|
340 | #     |    |Devi| mum| mum|
341 #=#=====#====#====#====#====#
342 |x#14.00|2.69|1.23|1.00|5.00|
343 |y#14.00|1.86|1.10|1.00|4.00|
344 +-#-----+----+----+----+----+
345 EOF
346 if [ $? -ne 0 ] ; then fail ; fi
347
348
349 pass;