Fix ROC behaviour in the presence of missing values.
[pspp-builds.git] / tests / command / roc.sh
1 #!/bin/sh
2
3 # This program tests  the ROC command.
4
5 TEMPDIR=/tmp/pspp-tst-$$
6 TESTFILE=$TEMPDIR/`basename $0`.sps
7
8 # ensure that top_builddir  are absolute
9 if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
10 if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
11 top_builddir=`cd $top_builddir; pwd`
12 PSPP=$top_builddir/src/ui/terminal/pspp
13
14 # ensure that top_srcdir is absolute
15 top_srcdir=`cd $top_srcdir; pwd`
16
17 STAT_CONFIG_PATH=$top_srcdir/config
18 export STAT_CONFIG_PATH
19
20 LANG=C
21 export LANG
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 program"
62 cat > $TESTFILE <<EOF
63 set format F10.3.
64 data list notable list /x * y * w * a *.
65 begin data.
66 1 1 2  1
67 1 2 28 0
68 2 3 4  1
69 2 4 14 0
70 3 5 10 1
71 . . 1  0
72 3 1 5  0
73 4 2 14 1
74 4 3 2  0
75 5 4 20 1
76 5 5 1  0
77 end data.
78
79 weight by w.
80
81 roc x by a (1)
82         /plot = none
83         /print = se coordinates
84         /criteria = testpos(large) distribution(free) ci(99)
85         /missing = exclude .
86
87 roc x y by a (1)
88         /plot = curve(reference)
89         /print = se coordinates
90         /criteria = testpos(large) distribution(negexpo) ci(95)
91         /missing = exclude .
92 EOF
93 if [ $? -ne 0 ] ; then no_result ; fi
94
95 activity="run program"
96 $SUPERVISOR $PSPP --testing-mode $TESTFILE
97 if [ $? -ne 0 ] ; then no_result ; fi
98
99
100 activity="compare results"
101 perl -pi -e 's/^\s*$//g' $TEMPDIR/pspp.list
102 diff -b  $TEMPDIR/pspp.list - << EOF
103 1.1 ROC.  Case Summary
104 #========#===================#
105 #        # Valid N (listwise)#
106 #        #==========#========#
107 #a       #Unweighted|Weighted#
108 #========#==========#========#
109 #Positive#         5|  50.000#
110 #Negative#         5|  50.000#
111 #========#==========#========#
112 1.2 ROC.  Area Under the Curve (x)
113 #====#==========#===============#=======================#
114 #    |          |               | Asymp. 99% Confidence #
115 #    |          |               +-----------+-----------#
116 #Area|Std. Error|Asymptotic Sig.|Lower Bound|Upper Bound#
117 #====#==========#===============#===========#===========#
118 #.910|      .030|           .000|       .839|       .981#
119 #====#==========#===============#===========#===========#
120 1.3 ROC.  Coordinates of the Curve (x)
121 #====================================#===========#===============#
122 #Positive if greater than or equal to|Sensitivity|1 - Specificity#
123 #====================================#===========#===============#
124 #                                .000|      1.000|          1.000#
125 #                               1.500|       .960|           .440#
126 #                               2.500|       .880|           .160#
127 #                               3.500|       .680|           .060#
128 #                               4.500|       .400|           .020#
129 #                               6.000|       .000|           .000#
130 #====================================#===========#===============#
131 2.1 ROC.  Case Summary
132 #========#===================#
133 #        # Valid N (listwise)#
134 #        #==========#========#
135 #a       #Unweighted|Weighted#
136 #========#==========#========#
137 #Positive#         5|  50.000#
138 #Negative#         5|  50.000#
139 #========#==========#========#
140 See pspp-1.png for a chart.
141 2.2 ROC.  Area Under the Curve
142 #===================#====#==========#===============#=======================#
143 #                   #    |          |               | Asymp. 95%            #
144 #                   #    |          |               +-----------+-----------#
145 #Variable under test#Area|Std. Error|Asymptotic Sig.|Lower Bound|Upper Bound#
146 #===================#====#==========#===============#===========#===========#
147 #                  x#.910|      .030|           .000|       .860|       .960#
148 #                  y#.697|      .052|           .001|       .611|       .783#
149 #===================#====#==========#===============#===========#===========#
150 2.3 ROC.  Coordinates of the Curve
151 #=============#====================================#===========#===============#
152 #Test variable#Positive if greater than or equal to|Sensitivity|1 - Specificity#
153 #=============#====================================#===========#===============#
154 #            x#                                .000|      1.000|          1.000#
155 #             #                               1.500|       .960|           .440#
156 #             #                               2.500|       .880|           .160#
157 #             #                               3.500|       .680|           .060#
158 #             #                               4.500|       .400|           .020#
159 #             #                               6.000|       .000|           .000#
160 #-------------#------------------------------------+-----------+---------------#
161 #            y#                                .000|      1.000|          1.000#
162 #             #                               1.500|       .960|           .900#
163 #             #                               2.500|       .680|           .340#
164 #             #                               3.000|       .600|           .340#
165 #             #                               3.500|       .600|           .300#
166 #             #                               4.500|       .200|           .020#
167 #             #                               6.000|       .000|           .000#
168 #=============#====================================#===========#===============#
169 EOF
170 if [ $? -ne 0 ] ; then fail ; fi
171
172 pass