dnl PSPP - a program for statistical analysis. dnl Copyright (C) 2017 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 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 You should have received a copy of the GNU General Public License dnl along with this program. If not, see . dnl AT_BANNER([ROC]) AT_SETUP([ROC, free distribution]) AT_DATA([roc.sps], [dnl set format F10.3. data list notable list /x * y * w * a *. begin data. 1 1 2 1 1 2 28 0 2 3 4 1 2 4 14 0 3 5 10 1 . . 1 0 3 1 5 0 4 2 14 1 4 3 2 0 5 4 20 1 5 4 20 . 5 5 1 0 end data. weight by w. roc x by a (1) /plot = none /print = se coordinates /criteria = testpos(large) distribution(free) ci(99) /missing = exclude . ]) AT_CHECK([pspp -o pspp.csv roc.sps]) AT_CHECK([cat pspp.csv], [0], [dnl Table: Case Summary ,Valid N (listwise), a,Unweighted,Weighted Positive,5,50.000 Negative,5,50.000 Table: Area Under the Curve (x) ,,,Asymp. 99% Confidence Interval, Area,Std. Error,Asymptotic Sig.,Lower Bound,Upper Bound .910,.030,.000,.839,.981 Table: Coordinates of the Curve (x) Positive if greater than or equal to,Sensitivity,1 - Specificity .000,1.000,1.000 1.500,.960,.440 2.500,.880,.160 3.500,.680,.060 4.500,.400,.020 6.000,.000,.000 ]) AT_CLEANUP AT_SETUP([ROC, negative exponential distribution]) AT_DATA([roc.sps], [dnl set format F10.3. data list notable list /x * y * w * a *. begin data. 1 1 2 1 1 2 28 0 2 3 4 1 2 4 14 0 3 5 10 1 . . 1 0 3 1 5 0 4 2 14 1 4 3 2 0 5 4 20 1 5 4 20 . 5 5 1 0 end data. weight by w. roc x y by a (1) /plot = curve(reference) /print = se coordinates /criteria = testpos(large) distribution(negexpo) ci(95) /missing = exclude . ]) AT_CHECK([pspp -o pspp.csv roc.sps]) AT_CHECK([cat pspp.csv], [0], [dnl Table: Case Summary ,Valid N (listwise), a,Unweighted,Weighted Positive,5,50.000 Negative,5,50.000 Table: Area Under the Curve ,,,,Asymp. 95% Confidence Interval, Variable under test,Area,Std. Error,Asymptotic Sig.,Lower Bound,Upper Bound x,.910,.030,.000,.860,.960 y,.697,.052,.001,.611,.783 Table: Coordinates of the Curve Test variable,Positive if greater than or equal to,Sensitivity,1 - Specificity x,.000,1.000,1.000 ,1.500,.960,.440 ,2.500,.880,.160 ,3.500,.680,.060 ,4.500,.400,.020 ,6.000,.000,.000 y,.000,1.000,1.000 ,1.500,.960,.900 ,2.500,.680,.340 ,3.000,.600,.340 ,3.500,.600,.300 ,4.500,.200,.020 ,6.000,.000,.000 ]) AT_CLEANUP AT_SETUP([ROC, with anomaly]) AT_DATA([roc.sps], [dnl set format F10.3. data list notable list /x * a * comment (a20). begin data. 0 1 "" 0 0 "" 1 1 "" 1 0 "" 2 1 "" 2 0 "" 5 1 "" 5 0 "" 10 1 "" 10 0 "" 15 1 "" 15 0 "" 20 1 "" 20 1 "" 22 0 "here and" 22 0 "here is the anomaly" 25 1 "" 25 0 "" 30 1 "" 30 0 "" 35 1 "" 35 0 "" 38 1 "" 38 0 "" 39 1 "" 39 0 "" 40 1 "" 40 0 "" end data. roc x by a (1) /plot = none print = se . ]) AT_CHECK([pspp -o pspp.csv roc.sps]) AT_CHECK([cat pspp.csv], [0], [dnl Table: Case Summary ,Valid N (listwise), a,Unweighted,Weighted Positive,14,14.000 Negative,14,14.000 Table: Area Under the Curve (x) ,,,Asymp. 95% Confidence Interval, Area,Std. Error,Asymptotic Sig.,Lower Bound,Upper Bound .490,.111,.927,.307,.673 ]) AT_CLEANUP AT_SETUP([ROC crash on no state variable]) AT_DATA([roc.sps], [dnl data list notable list /x * y * w * a *. begin data. 5 5 1 0 end data. roc x y By(a (1) . ]) AT_CHECK([pspp -o pspp.csv roc.sps], [1], [ignore]) AT_CLEANUP AT_SETUP([ROC crash on invalid syntax]) AT_DATA([roc.sps], [dnl data list notable list /x * y * a *. bggin data. 1 1 2 1 2 28 end data. roc x y by a (1) /criteria = ci(y5) ]) AT_CHECK([pspp -O format=csv roc.sps], [1], [ignore]) AT_CLEANUP