Rewrite PSPP output engine.
[pspp-builds.git] / tests / command / npar-binomial.sh
1 #!/bin/sh
2
3 # This program tests the BINOMIAL subcommand of the NPAR TESTS 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
62 # Tests for exact calculations
63 activity="create file 1"
64 cat <<EOF > $TESTFILE
65 ECHO 'P < 0.5; N1/N2 < 1' .
66
67 NEW FILE.
68
69 DATA LIST LIST NOTABLE /x * w *.
70 BEGIN DATA.
71 1   6
72 2   15
73 END DATA.
74
75 WEIGHT BY w.
76
77 SET FORMAT F8.3.
78
79 NPAR TESTS
80         /BINOMIAL(0.3) = x
81         .
82
83
84 ECHO 'P < 0.5; N1/N2 > 1' .
85
86 NEW FILE.
87
88
89
90 DATA LIST LIST NOTABLE /x (F8.0) w (F8.0).
91 BEGIN DATA.
92 1   7
93 2   6
94 END DATA.
95
96 WEIGHT BY w.
97
98 NPAR TESTS
99         /BINOMIAL(0.4) = x
100         .
101
102
103
104 ECHO 'P < 0.5; N1/N2 = 1' .
105
106 NEW FILE.
107
108 DATA LIST LIST NOTABLE /x (F8.0) w (F8.0).
109 BEGIN DATA.
110 1   8
111 2   8
112 END DATA.
113
114 WEIGHT BY w.
115
116 NPAR TESTS
117         /BINOMIAL(0.4) = x
118         .
119
120 ECHO 'P > 0.5; N1/N2 < 1' .
121
122 NEW FILE.
123
124 DATA LIST LIST NOTABLE /x (F8.0) w (F8.0).
125 BEGIN DATA.
126 1   11
127 2   12
128 END DATA.
129
130 WEIGHT BY w.
131
132 NPAR TESTS
133         /BINOMIAL(0.6) = x
134         .
135
136
137 ECHO 'P > 0.5; N1/N2 > 1' .
138
139 NEW FILE.
140
141 DATA LIST LIST NOTABLE /x (F8.0) w (F8.0).
142 BEGIN DATA.
143 1   11
144 2   9
145 END DATA.
146
147 WEIGHT BY w.
148
149 NPAR TESTS
150         /BINOMIAL(0.6) = x
151
152 ECHO 'P > 0.5; N1/N2 == 1' .
153
154 NEW FILE.
155
156 DATA LIST LIST NOTABLE /x (F8.0) w (F8.0).
157 BEGIN DATA.
158 1   11
159 2   11
160 END DATA.
161
162 WEIGHT BY w.
163
164 NPAR TESTS
165         /BINOMIAL(0.6) = x
166         .
167
168 ECHO 'P == 0.5; N1/N2 < 1' .
169
170 NEW FILE.
171
172 DATA LIST LIST NOTABLE /x (F8.0) w (F8.0).
173 BEGIN DATA.
174 1   8
175 2   15
176 END DATA.
177
178 WEIGHT BY w.
179
180 NPAR TESTS
181         /BINOMIAL(0.5) = x
182         .
183
184
185 ECHO 'P == 0.5; N1/N2 > 1' .
186
187 NEW FILE.
188
189 DATA LIST LIST NOTABLE /x (F8.0) w (F8.0).
190 BEGIN DATA.
191 1   12
192 2   6
193 END DATA.
194
195 WEIGHT BY w.
196
197 NPAR TESTS
198         /BINOMIAL(0.5) = x
199
200 ECHO 'P == 0.5; N1/N2 == 1' .
201
202 NEW FILE.
203
204 DATA LIST LIST NOTABLE /x (F8.0) w (F8.0).
205 BEGIN DATA.
206 1   10
207 2   10
208 END DATA.
209
210 WEIGHT BY w.
211
212 NPAR TESTS
213         /BINOMIAL(0.5) = x
214         .
215
216 ECHO 'P == 0.5; N1/N2 == 1 Cutpoint' .
217
218 DATA LIST LIST NOTABLE /x * w *.
219 BEGIN DATA.
220 9    3
221 10   7
222 11   16
223 END DATA.
224
225 WEIGHT BY w.
226
227 NPAR TESTS
228         /BINOMIAL(0.5) = x (10)
229         .
230
231 ECHO 'P == 0.5; N1/N2 == 1 Named values' .
232
233 DATA LIST LIST NOTABLE /x * w *.
234 BEGIN DATA.
235 10   10
236 15   45
237 20   13
238 END DATA.
239
240 WEIGHT BY w.
241
242 NPAR TESTS
243         /BINOMIAL(0.5) = x (10, 20)
244         .
245 EOF
246 if [ $? -ne 0 ] ; then no_result ; fi
247
248
249 activity="run program 1"
250 $SUPERVISOR $PSPP --testing-mode $TESTFILE
251 if [ $? -ne 0 ] ; then no_result ; fi
252
253 activity="compare output 1"
254 diff -c $TEMPDIR/pspp.csv - << EOF
255 P < 0.5; N1/N2 < 1
256
257 Table: Binomial Test
258 ,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (1-tailed)
259 x,Group1,1.00,6.00,.286,.300,.551
260 ,Group2,2.00,15.00,.714,,
261 ,Total,,21.00,1.000,,
262
263 P < 0.5; N1/N2 > 1
264
265 Table: Binomial Test
266 ,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (1-tailed)
267 x,Group1,1,7,.538,.400,.229
268 ,Group2,2,6,.462,,
269 ,Total,,13,1.000,,
270
271 P < 0.5; N1/N2 = 1
272
273 Table: Binomial Test
274 ,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (1-tailed)
275 x,Group1,1,8,.500,.400,.284
276 ,Group2,2,8,.500,,
277 ,Total,,16,1.000,,
278
279 P > 0.5; N1/N2 < 1
280
281 Table: Binomial Test
282 ,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (1-tailed)
283 x,Group1,1,11,.478,.600,.164
284 ,Group2,2,12,.522,,
285 ,Total,,23,1.000,,
286
287 P > 0.5; N1/N2 > 1
288
289 Table: Binomial Test
290 ,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (1-tailed)
291 x,Group1,1,11,.550,.600,.404
292 ,Group2,2,9,.450,,
293 ,Total,,20,1.000,,
294
295 P > 0.5; N1/N2 == 1
296
297 Table: Binomial Test
298 ,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (1-tailed)
299 x,Group1,1,11,.500,.600,.228
300 ,Group2,2,11,.500,,
301 ,Total,,22,1.000,,
302
303 P == 0.5; N1/N2 < 1
304
305 Table: Binomial Test
306 ,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (2-tailed)
307 x,Group1,1,8,.348,.500,.210
308 ,Group2,2,15,.652,,
309 ,Total,,23,1.000,,
310
311 P == 0.5; N1/N2 > 1
312
313 Table: Binomial Test
314 ,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (2-tailed)
315 x,Group1,1,12,.667,.500,.238
316 ,Group2,2,6,.333,,
317 ,Total,,18,1.000,,
318
319 P == 0.5; N1/N2 == 1
320
321 Table: Binomial Test
322 ,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (2-tailed)
323 x,Group1,1,10,.500,.500,1.000
324 ,Group2,2,10,.500,,
325 ,Total,,20,1.000,,
326
327 P == 0.5; N1/N2 == 1 Cutpoint
328
329 Table: Binomial Test
330 ,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (2-tailed)
331 x,Group1,<= 10,10.000,.385,.500,.327
332 ,Group2,,16.000,.615,,
333 ,Total,,26.000,1.000,,
334
335 P == 0.5; N1/N2 == 1 Named values
336
337 Table: Binomial Test
338 ,,Category,N,Observed Prop.,Test Prop.,Exact Sig. (2-tailed)
339 x,Group1,10.000,10.000,.435,.500,.678
340 ,Group2,20.000,13.000,.565,,
341 ,Total,,23.000,1.000,,
342 EOF
343 if [ $? -ne 0 ] ; then fail ; fi
344
345
346 pass;