508f954e12cc69cda8a40f17f356d392c1a2db82
[pspp] / tests / language / stats / descriptives.at
1 dnl PSPP - a program for statistical analysis.
2 dnl Copyright (C) 2017 Free Software Foundation, Inc.
3 dnl 
4 dnl This program is free software: you can redistribute it and/or modify
5 dnl it under the terms of the GNU General Public License as published by
6 dnl the Free Software Foundation, either version 3 of the License, or
7 dnl (at your option) any later version.
8 dnl 
9 dnl This program is distributed in the hope that it will be useful,
10 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
11 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 dnl GNU General Public License for more details.
13 dnl 
14 dnl You should have received a copy of the GNU General Public License
15 dnl along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 dnl
17 AT_BANNER([DESCRIPTIVES procedure])
18
19 AT_SETUP([DESCRIPTIVES basics])
20 AT_DATA([descriptives.sps],
21   [title 'Test DESCRIPTIVES procedure'.
22
23 data list / V0 to V16 1-17.
24 begin data.
25 12128989012389023
26 34128080123890128
27 56127781237893217
28 78127378123793112
29 90913781237892318
30 37978547878935789
31 52878237892378279
32 12377912789378932
33 26787654347894348
34 29137178947891888
35 end data.
36
37 descript all/stat=all/format=serial.
38 ])
39 AT_CHECK([pspp -O format=csv descriptives.sps], [0], [dnl
40 Table: Reading 1 record from INLINE.
41 Variable,Record,Columns,Format
42 V0,1,1-  1,F1.0
43 V1,1,2-  2,F1.0
44 V2,1,3-  3,F1.0
45 V3,1,4-  4,F1.0
46 V4,1,5-  5,F1.0
47 V5,1,6-  6,F1.0
48 V6,1,7-  7,F1.0
49 V7,1,8-  8,F1.0
50 V8,1,9-  9,F1.0
51 V9,1,10- 10,F1.0
52 V10,1,11- 11,F1.0
53 V11,1,12- 12,F1.0
54 V12,1,13- 13,F1.0
55 V13,1,14- 14,F1.0
56 V14,1,15- 15,F1.0
57 V15,1,16- 16,F1.0
58 V16,1,17- 17,F1.0
59
60 Table: Valid cases = 10; cases with missing value(s) = 0.
61 Variable,Valid N,Missing N,Mean,S.E. Mean,Std Dev,Variance,Kurtosis,S.E. Kurt,Skewness,S.E. Skew,Range,Minimum,Maximum,Sum
62 V0,10,0,3.80,.84,2.66,7.07,-.03,1.33,.89,.69,8.00,1.00,9.00,38.00
63 V1,10,0,4.60,.96,3.03,9.16,-1.39,1.33,-.03,.69,9.00,.00,9.00,46.00
64 V2,10,0,4.10,1.16,3.67,13.43,-2.02,1.33,.48,.69,8.00,1.00,9.00,41.00
65 V3,10,0,4.10,.87,2.77,7.66,-2.05,1.33,.42,.69,7.00,1.00,8.00,41.00
66 V4,10,0,7.00,.47,1.49,2.22,7.15,1.33,-2.52,.69,5.00,3.00,8.00,70.00
67 V5,10,0,4.90,1.03,3.25,10.54,-1.40,1.33,-.20,.69,9.00,.00,9.00,49.00
68 V6,10,0,5.90,.80,2.51,6.32,-.29,1.33,-.96,.69,7.00,1.00,8.00,59.00
69 V7,10,0,4.70,1.10,3.47,12.01,-1.99,1.33,-.16,.69,9.00,.00,9.00,47.00
70 V8,10,0,4.10,1.10,3.48,12.10,-1.93,1.33,.37,.69,9.00,.00,9.00,41.00
71 V9,10,0,4.30,.87,2.75,7.57,-.87,1.33,.73,.69,8.00,1.00,9.00,43.00
72 V10,10,0,5.50,.85,2.68,7.17,-1.84,1.33,-.33,.69,7.00,2.00,9.00,55.00
73 V11,10,0,6.50,.78,2.46,6.06,-1.28,1.33,-.89,.69,6.00,3.00,9.00,65.00
74 V12,10,0,7.90,.60,1.91,3.66,5.24,1.33,-2.21,.69,6.00,3.00,9.00,79.00
75 V13,10,0,4.30,.99,3.13,9.79,-1.25,1.33,.33,.69,9.00,.00,9.00,43.00
76 V14,10,0,3.60,1.01,3.20,10.27,-.96,1.33,.81,.69,9.00,.00,9.00,36.00
77 V15,10,0,3.70,.92,2.91,8.46,-1.35,1.33,.71,.69,7.00,1.00,8.00,37.00
78 V16,10,0,6.40,.91,2.88,8.27,-1.14,1.33,-.92,.69,7.00,2.00,9.00,64.00
79 ])
80 AT_CLEANUP
81
82 m4_define([DESCRIPTIVES_MISSING_DATA],
83   [data list notable / V1 TO V3 1-3.
84 mis val v1 to v3 (1).
85 begin data.
86 111
87    
88  1 
89 1 1
90 112
91 123
92 234
93 end data.
94 ])
95
96 AT_SETUP([DESCRIPTIVES -- excluding missing data])
97 AT_DATA([descriptives.sps],
98   [DESCRIPTIVES_MISSING_DATA
99 descript all/stat=all/format=serial.
100 ])
101 AT_CHECK([pspp -O format=csv descriptives.sps], [0],
102   [Table: Valid cases = 7; cases with missing value(s) = 6.
103 Variable,Valid N,Missing N,Mean,S.E. Mean,Std Dev,Variance,Kurtosis,S.E. Kurt,Skewness,S.E. Skew,Range,Minimum,Maximum,Sum
104 V1,1,6,2.00,.  ,.  ,.  ,.  ,.  ,.  ,.  ,.00,2.00,2.00,2.00
105 V2,2,5,2.50,.50,.71,.50,.  ,.  ,.  ,.  ,1.00,2.00,3.00,5.00
106 V3,3,4,3.00,.58,1.00,1.00,.  ,.  ,.00,1.22,2.00,2.00,4.00,9.00
107 ])
108 AT_CLEANUP
109
110 AT_SETUP([DESCRIPTIVES -- including missing data])
111 AT_DATA([descriptives.sps],
112   [DESCRIPTIVES_MISSING_DATA
113 descript all/stat=all/format=serial/missing=include.
114 ])
115 AT_CHECK([pspp -O format=csv descriptives.sps], [0],
116   [Table: Valid cases = 7; cases with missing value(s) = 3.
117 Variable,Valid N,Missing N,Mean,S.E. Mean,Std Dev,Variance,Kurtosis,S.E. Kurt,Skewness,S.E. Skew,Range,Minimum,Maximum,Sum
118 V1,5,2,1.20,.20,.45,.20,5.00,2.00,2.24,.91,1.00,1.00,2.00,6.00
119 V2,5,2,1.60,.40,.89,.80,.31,2.00,1.26,.91,2.00,1.00,3.00,8.00
120 V3,5,2,2.20,.58,1.30,1.70,-1.49,2.00,.54,.91,3.00,1.00,4.00,11.00
121 ])
122 AT_CLEANUP
123
124 AT_SETUP([DESCRIPTIVES -- excluding missing data listwise])
125 AT_DATA([descriptives.sps],
126   [DESCRIPTIVES_MISSING_DATA
127 descript all/stat=all/format=serial/missing=listwise.
128 ])
129 AT_CHECK([pspp -O format=csv descriptives.sps], [0],
130   [Table: Valid cases = 1; cases with missing value(s) = 6.
131 Variable,Valid N,Missing N,Mean,S.E. Mean,Std Dev,Variance,Kurtosis,S.E. Kurt,Skewness,S.E. Skew,Range,Minimum,Maximum,Sum
132 V1,1,0,2.00,.  ,.  ,.  ,.  ,.  ,.  ,.  ,.00,2.00,2.00,2.00
133 V2,1,0,3.00,.  ,.  ,.  ,.  ,.  ,.  ,.  ,.00,3.00,3.00,3.00
134 V3,1,0,4.00,.  ,.  ,.  ,.  ,.  ,.  ,.  ,.00,4.00,4.00,4.00
135 ])
136 AT_CLEANUP
137
138 AT_SETUP([DESCRIPTIVES -- including missing data listwise])
139 AT_DATA([descriptives.sps],
140   [DESCRIPTIVES_MISSING_DATA
141 descript all/stat=all/format=serial/missing=listwise include.
142 ])
143 AT_CHECK([pspp -O format=csv descriptives.sps], [0],
144   [Table: Valid cases = 4; cases with missing value(s) = 3.
145 Variable,Valid N,Missing N,Mean,S.E. Mean,Std Dev,Variance,Kurtosis,S.E. Kurt,Skewness,S.E. Skew,Range,Minimum,Maximum,Sum
146 V1,4,0,1.25,.25,.50,.25,4.00,2.62,2.00,1.01,1.00,1.00,2.00,5.00
147 V2,4,0,1.75,.48,.96,.92,-1.29,2.62,.85,1.01,2.00,1.00,3.00,7.00
148 V3,4,0,2.50,.65,1.29,1.67,-1.20,2.62,.00,1.01,3.00,1.00,4.00,10.00
149 ])
150 AT_CLEANUP
151
152 AT_SETUP([DESCRIPTIVES bug calculating mean only])
153 AT_DATA([descriptives.sps],
154   [SET FORMAT F8.3.
155
156 data list notable / X 1.
157 begin data.
158 0
159 1
160 2
161 3
162 4
163 5
164 end data.
165
166 descript all/stat=mean.
167 ])
168 AT_CHECK([pspp -O format=csv descriptives.sps], [0],
169   [Table: Valid cases = 6; cases with missing value(s) = 0.
170 Variable,N,Mean
171 X,6,2.500
172 ])
173 AT_CLEANUP
174
175 dnl Git history shows that this was probably a bug in the PSPP
176 dnl core regarding multipass procedures, not anything specific
177 dnl to DESCRIPTIVES.
178 AT_SETUP([DESCRIPTIVES bug with TEMPORARY])
179 AT_DATA([descriptives.sps], [dnl
180 DATA LIST LIST NOTABLE /id * abc *.
181 BEGIN DATA.
182 1 3.5
183 2 2.0
184 3 2.0
185 4 3.5
186 5 3.0
187 6 4.0
188 7 5.0
189 END DATA.
190
191 TEMPORARY.
192 SELECT IF id < 7 .
193
194 DESCRIPTIVES /VAR=abc.
195 ])
196 AT_CHECK([pspp -O format=csv descriptives.sps], [0], [dnl
197 Table: Valid cases = 6; cases with missing value(s) = 0.
198 Variable,N,Mean,Std Dev,Minimum,Maximum
199 abc,6,3.00,.84,2.00,4.00
200 ])
201 AT_CLEANUP
202
203 AT_SETUP([DESCRIPTIVES -- Z scores])
204 AT_DATA([descriptives.sps], [dnl
205 DATA LIST LIST NOTABLE /a b.
206 BEGIN DATA.
207 1 50
208 2 60
209 3 70
210 END DATA.
211
212 DESCRIPTIVES /VAR=a b /SAVE.
213 LIST.
214 ])
215 AT_CHECK([pspp -O format=csv descriptives.sps], [0], [dnl
216 Table: Mapping of variables to corresponding Z-scores.
217 Source,Target
218 a,Za
219 b,Zb
220
221 Table: Valid cases = 3; cases with missing value(s) = 0.
222 Variable,N,Mean,Std Dev,Minimum,Maximum
223 a,3,2.00,1.00,1.00,3.00
224 b,3,60.00,10.00,50.00,70.00
225
226 Table: Data List
227 a,b,Za,Zb
228 1.00,50.00,-1.00,-1.00
229 2.00,60.00,.00,.00
230 3.00,70.00,1.00,1.00
231 ])
232 AT_CLEANUP
233
234 AT_SETUP([DESCRIPTIVES -- Z scores with SPLIT FILE])
235 AT_DATA([descriptives.sps], [dnl
236 DATA LIST LIST NOTABLE /group a b.
237 BEGIN DATA.
238 1 1 50
239 1 2 60
240 1 3 70
241 2 100 6000
242 2 200 7000
243 2 400 9000
244 2 500 10000
245 END DATA.
246
247 SPLIT FILE BY group.
248 DESCRIPTIVES /VAR=a b /SAVE.
249 LIST.
250 ])
251 AT_CHECK([pspp -O format=csv descriptives.sps], [0], [dnl
252 Table: Mapping of variables to corresponding Z-scores.
253 Source,Target
254 a,Za
255 b,Zb
256
257 Variable,Value,Label
258 group,1.00,
259
260 Table: Valid cases = 3; cases with missing value(s) = 0.
261 Variable,N,Mean,Std Dev,Minimum,Maximum
262 a,3,2.00,1.00,1.00,3.00
263 b,3,60.00,10.00,50.00,70.00
264
265 Variable,Value,Label
266 group,2.00,
267
268 Table: Valid cases = 4; cases with missing value(s) = 0.
269 Variable,N,Mean,Std Dev,Minimum,Maximum
270 a,4,300.00,182.57,100.00,500.00
271 b,4,8000.00,1825.74,6000.00,10000.00
272
273 Variable,Value,Label
274 group,1.00,
275
276 Table: Data List
277 group,a,b,Za,Zb
278 1.00,1.00,50.00,-1.00,-1.00
279 1.00,2.00,60.00,.00,.00
280 1.00,3.00,70.00,1.00,1.00
281
282 Variable,Value,Label
283 group,2.00,
284
285 Table: Data List
286 group,a,b,Za,Zb
287 2.00,100.00,6000.00,-1.10,-1.10
288 2.00,200.00,7000.00,-.55,-.55
289 2.00,400.00,9000.00,.55,.55
290 2.00,500.00,10000.00,1.10,1.10
291 ])
292 AT_CLEANUP
293
294 dnl Ideally DESCRIPTIVES would not make temporary transformations permanent
295 dnl as it does now (bug #38786), so these results are imperfect.  However,
296 dnl this test does verify that DESCRIPTIVES does not crash in this situation
297 dnl (as it once did).
298 AT_SETUP([DESCRIPTIVES -- Z scores bug with TEMPORARY])
299 AT_DATA([descriptives.sps], [dnl
300 DATA LIST LIST NOTABLE /id abc.
301 BEGIN DATA.
302 1 3.5
303 2 2.0
304 3 2.0
305 4 3.5
306 5 3.0
307 6 4.0
308 7 5.0
309 END DATA.
310
311 TEMPORARY.
312 SELECT IF id < 7 .
313
314 DESCRIPTIVES /VAR=abc/SAVE.
315 LIST.
316 ])
317 AT_CHECK([pspp -O format=csv descriptives.sps], [0], [dnl
318 descriptives.sps:15: warning: DESCRIPTIVES: DESCRIPTIVES with Z scores ignores TEMPORARY.  Temporary transformations will be made permanent.
319
320 Table: Mapping of variables to corresponding Z-scores.
321 Source,Target
322 abc,Zabc
323
324 Table: Valid cases = 6; cases with missing value(s) = 0.
325 Variable,N,Mean,Std Dev,Minimum,Maximum
326 abc,6,3.00,.84,2.00,4.00
327
328 Table: Data List
329 id,abc,Zabc
330 1.00,3.50,.60
331 2.00,2.00,-1.20
332 3.00,2.00,-1.20
333 4.00,3.50,.60
334 5.00,3.00,.00
335 6.00,4.00,1.20
336 ])
337 AT_CLEANUP
338
339 dnl This test was supplied by Mindaugus as part of the report for bug #42012.
340 AT_SETUP([DESCRIPTIVES -- Z scores with FILTER])
341 AT_DATA([descriptives.sps], [dnl
342 DATA LIST LIST/filter1 filter2 x.
343 BEGIN DATA.
344 0,0,300
345 0,1,200
346 0,1,100
347 1,0,5
348 1,0,4
349 1,1,3
350 1,1,2
351 1,1,1
352 END DATA.
353
354 FILTER OFF.
355 SPLIT FILE OFF.
356 DESCRIPTIVES /VARIABLES=X /SAVE.
357
358 FILTER BY filter1.
359 SPLIT FILE OFF.
360 DESCRIPTIVES /VARIABLES=X /SAVE.
361
362 FILTER OFF.
363 SORT CASES BY filter1.
364 SPLIT FILE BY filter1.
365 DESCRIPTIVES /VARIABLES=X /SAVE.
366
367 FILTER BY filter2.
368 SPLIT FILE BY filter1.
369 DESCRIPTIVES /VARIABLES=X /SAVE.
370
371 FILTER OFF.
372 SORT CASES BY filter1 filter2.
373 SPLIT FILE BY filter1 filter2.
374 DESCRIPTIVES /VARIABLES=X /SAVE.
375 EXECUTE.
376
377 SPLIT FILE OFF.
378 LIST.
379 ])
380 AT_CHECK([pspp -o pspp.csv descriptives.sps])
381 AT_CHECK([sed -n '/Table: Data List/,$p' < pspp.csv], [0], [dnl
382 Table: Data List
383 filter1,filter2,x,Zx,ZSC001,ZSC002,ZSC003,ZSC004
384 .00,.00,300.00,1.94,.  ,1.00,.  ,.  @&t@
385 .00,1.00,200.00,1.07,.  ,.00,.71,.71
386 .00,1.00,100.00,.20,.  ,-1.00,-.71,-.71
387 1.00,.00,5.00,-.62,1.26,1.26,.  ,.71
388 1.00,.00,4.00,-.63,.63,.63,.  ,-.71
389 1.00,1.00,3.00,-.64,.00,.00,1.00,1.00
390 1.00,1.00,2.00,-.65,-.63,-.63,.00,.00
391 1.00,1.00,1.00,-.66,-1.26,-1.26,-1.00,-1.00
392 ])
393 AT_CLEANUP