Quick Cluster: Avoid crash when presented with missing values
[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
155 AT_CLEANUP