QUICK CLUSTER: Fix infinite loop on bad command name.
[pspp] / tests / language / stats / quick-cluster.at
1 AT_BANNER([QUICK CLUSTER])
2
3 AT_SETUP([QUICK CLUSTER with small data set])
4 AT_DATA([quick-cluster.sps], [dnl
5 DATA LIST LIST /x y z.
6 BEGIN DATA.
7 22,2930,4099
8 17,3350,4749
9 22,2640,3799
10 20, 3250,4816
11 15,4080,7827
12 4,5,4
13 5,6,5
14 6,7,6
15 7,8,7
16 8,9,8
17 9,10,9
18 END DATA.
19 QUICK CLUSTER x y z
20   /CRITERIA=CLUSTER(2) MXITER(20).
21 ])
22 AT_CHECK([pspp -o pspp.csv quick-cluster.sps])
23 AT_CHECK([cat pspp.csv], [0], [dnl
24 Table: Reading free-form data from INLINE.
25 Variable,Format
26 x,F8.0
27 y,F8.0
28 z,F8.0
29
30 Table: Final Cluster Centers
31 ,Cluster,
32 ,,
33 ,1,2
34 ,,
35 x,6.50,19.20
36 y,7.50,3250.00
37 z,6.50,5058.00
38
39 Table: Number of Cases in each Cluster
40 Cluster,1,6
41 ,2,5
42 Valid,,11
43 ])
44 AT_CLEANUP
45
46 AT_SETUP([QUICK CLUSTER with large data set])
47 AT_DATA([quick-cluster.sps], [dnl
48 input program.
49 loop #i = 1 to 500000.
50 compute x = 3.
51 end case.
52 end loop.
53 end file.
54 end input program.
55 QUICK CLUSTER x /CRITERIA = CLUSTER(4) MXITER (100).
56 ])
57 AT_CHECK([pspp -o pspp.csv quick-cluster.sps])
58 AT_CHECK([cat pspp.csv], [0], [dnl
59 Table: Final Cluster Centers
60 ,Cluster,,,
61 ,,,,
62 ,1,2,3,4
63 ,,,,
64 x,.00,.00,.00,3.00
65
66 Table: Number of Cases in each Cluster
67 Cluster,1,0
68 ,2,0
69 ,3,0
70 ,4,500000
71 Valid,,500000
72 ])
73 AT_CLEANUP
74
75
76 AT_SETUP([QUICK CLUSTER with weights])
77 AT_DATA([qc-weighted.sps], [dnl
78 input program.
79 loop #i = 1 to 400.
80  compute x = mod (#i, 4).
81  compute w = 5.
82  end case.
83 end loop.
84 loop #i = 1 to 400.
85  compute x = mod (#i, 4).
86  compute w = 3.
87  end case.
88 end loop.
89 end file.
90 end input program.
91
92 weight by w.
93
94 QUICK CLUSTER x /CRITERIA = CLUSTER(4) MXITER (100).
95 ])
96
97 AT_CHECK([pspp -o pspp-w.csv qc-weighted.sps])
98
99
100 AT_DATA([qc-unweighted.sps], [dnl
101 input program.
102 loop #i = 1 to 3200.
103  compute x = mod (#i, 4).
104  end case.
105 end loop.
106 end file.
107 end input program.
108
109 QUICK CLUSTER x /CRITERIA = CLUSTER(4) MXITER (100).
110 ])
111
112 AT_CHECK([pspp -o pspp-unw.csv qc-unweighted.sps])
113
114 AT_CHECK([diff pspp-w.csv pspp-unw.csv], [0])
115
116 AT_CLEANUP
117
118 AT_SETUP([QUICK CLUSTER with listwise missing])
119 AT_DATA([quick-miss.sps], [dnl
120 data list notable list /x *.
121 begin data.
122 1
123 1
124 2
125 3
126 4
127 .
128 2
129 end data.
130
131 QUICK CLUSTER x /CRITERIA = CLUSTER(4) MXITER (100).
132 ])
133
134 AT_CHECK([pspp -o pspp-m.csv quick-miss.sps])
135
136 AT_DATA([quick-nmiss.sps], [dnl
137 data list notable list /x *.
138 begin data.
139 1
140 1
141 2
142 3
143 4
144 2
145 end data.
146
147 QUICK CLUSTER x /CRITERIA = CLUSTER(4) MXITER (100).
148 ])
149
150 AT_CHECK([pspp -o pspp-nm.csv quick-nmiss.sps])
151
152 AT_CHECK([diff pspp-m.csv pspp-nm.csv], [0])
153
154 AT_CLEANUP
155
156
157 AT_SETUP([QUICK CLUSTER with pairwise missing])
158 AT_DATA([quick-s.sps], [dnl
159 data list notable list /x * y *.
160 begin data.
161 1   2
162 1   2.2
163 1.1 1.9
164 1   9
165 1   10
166 1.3 9.5
167 0.9 8.9
168 3.5 2
169 3.4 3
170 3.5 2.5
171 3.1 2.0
172 3.9 2.5
173 3.8 2.0
174 end data.
175
176 QUICK CLUSTER x y 
177         /CRITERIA = CLUSTER(3) MXITER (100)
178         .
179 ])
180
181 AT_CHECK([pspp -O format=csv quick-s.sps | tail -5 > pspp-s.csv])
182
183 AT_DATA([quick-pw.sps], [dnl
184 data list notable list /x * y *.
185 begin data.
186 1   2
187 1   2.2
188 1.1 1.9
189 1   9
190 1   10
191 1.3 9.5
192 0.9 8.9
193 3.5 2
194 3.4 3
195 3.5 2.5
196 3.1 2.0
197 3.9 .
198 3.8 .
199 end data.
200
201 QUICK CLUSTER x y 
202         /CRITERIA = CLUSTER(3) MXITER (100)
203         /MISSING = PAIRWISE
204         .
205 ])
206
207 AT_CHECK([pspp -O format=csv quick-pw.sps | tail -5 > pspp-pw.csv])
208
209 AT_CHECK([diff pspp-s.csv pspp-pw.csv], [0])
210
211
212 AT_CLEANUP
213
214
215
216 AT_SETUP([QUICK CLUSTER crash on bad cluster quantity])
217 AT_DATA([badn.sps], [dnl
218 data list notable list /x * y *.
219 begin data.
220 1   2
221 1   2.2
222 end data.
223
224 QUICK CLUSTER x y 
225         /CRITERIA = CLUSTER(0)
226         .
227 ])
228
229 AT_CHECK([pspp -O format=csv badn.sps], [1], [ignore])
230
231 AT_CLEANUP
232
233 AT_SETUP([QUICK CLUSTER infinite loop on bad command name])
234 AT_DATA([quick-cluster.sps], [dnl
235 data list notable list /x y.
236 begin data.
237 1   2
238 1   2.2
239 end data.
240
241 QUICK CLUSTER x y /UNSUPPORTED.
242 ])
243 AT_CHECK([pspp -O format=csv quick-cluster.sps], [1], [dnl
244 quick-cluster.sps:7.20-7.30: error: QUICK CLUSTER: Syntax error at `UNSUPPORTED'.
245 ])
246 AT_CLEANUP