75dd52cb19f89a0a584ab3281bc9c24334ae7953
[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
247
248
249
250 AT_SETUP([QUICK CLUSTER /PRINT subcommand])
251 AT_DATA([quick-cluster.sps], [dnl
252 data list notable list /cluster (A8) x (F) y (F).
253 begin data.
254 A 10.45 9.38
255 A 10.67 9.17
256 A 10.86 9.63
257 A 8.77 8.45
258 A 8.04 11.77
259 A 10.34 9.83
260 A 10.37 10.54
261 A 11.49 8.18
262 A 10.17 11.10
263 A 11.37 9.16
264 A 10.25 8.83
265 A 8.69 9.92
266 A 10.36 10.39
267 A 10.89 10.51
268 A 9.9 11.39
269 A 11.1 10.91
270 A 11.77 8.47
271 A 9.5 10.46
272 B -11.01 -9.21
273 B -10.8 -11.76
274 B -10.03 -10.29
275 B -9.54 -9.17
276 B -10.16 -9.82
277 B -10.01 -8.63
278 B -9.6 -10.22
279 B -11.36 -10.93
280 B -10.63 -10.97
281 B -9.53 -10.78
282 B -9.40 -10.26
283 B -10.76 -9.76
284 B -9.9 -10.11
285 B -10.16 -9.75
286 B -8.65 -11.31
287 B -10.10 -10.90
288 B -11.67 -9.89
289 B -11.11 -9.23
290 B -8.7 -8.43
291 B -11.35 -8.68
292 C -10.20 9.00
293 C -10.12 9.92
294 C -10.41 10.16
295 C -9.86 10.12
296 C -10.31 10.12
297 C -9.57 10.16
298 C -9.69 9.93
299 C -9.14 10.84
300 C -9.8 10.19
301 C -9.97 10.22
302 C -11.65 10.81
303 C -9.80 11.39
304 C -10.31 10.74
305 C -10.26 10.38
306 C -11.57 10.02
307 C -10.50 9.75
308 C -9.06 9.63
309 C -10.17 10.82
310 C -10.22 9.99
311 end data.
312
313 QUICK CLUSTER x y
314   /CRITERIA=CLUSTERS(3)
315   /PRINT=INITIAL CLUSTER.
316 ])
317
318 AT_CHECK([pspp -O format=csv quick-cluster.sps], [0], [dnl
319 Table: Initial Cluster Centers
320 ,Cluster,,
321 ,,,
322 ,1,2,3
323 ,,,
324 x,0,0,1
325 y,0,1,0
326
327 Table: Final Cluster Centers
328 ,Cluster,,
329 ,,,
330 ,1,2,3
331 ,,,
332 x,-10,-10,10
333 y,-10,10,10
334
335 Table: Number of Cases in each Cluster
336 Cluster,1,20
337 ,2,19
338 ,3,18
339 Valid,,57
340
341 Table: Cluster Membership
342 Case Number,Cluster
343 1,3
344 2,3
345 3,3
346 4,3
347 5,3
348 6,3
349 7,3
350 8,3
351 9,3
352 10,3
353 11,3
354 12,3
355 13,3
356 14,3
357 15,3
358 16,3
359 17,3
360 18,3
361 19,1
362 20,1
363 21,1
364 22,1
365 23,1
366 24,1
367 25,1
368 26,1
369 27,1
370 28,1
371 29,1
372 30,1
373 31,1
374 32,1
375 33,1
376 34,1
377 35,1
378 36,1
379 37,1
380 38,1
381 39,2
382 40,2
383 41,2
384 42,2
385 43,2
386 44,2
387 45,2
388 46,2
389 47,2
390 48,2
391 49,2
392 50,2
393 51,2
394 52,2
395 53,2
396 54,2
397 55,2
398 56,2
399 57,2
400 ])
401
402 AT_CLEANUP