Fix some typos (found by codespell)
[pspp] / tests / language / data-io / matrix-data.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([MATRIX DATA])
18
19 AT_SETUP([Matrix data (lower file)])
20
21 AT_DATA([matrix-data.pspp], [dnl
22 matrix data
23     variables = rowtype_
24     var01 TO var08
25     /format = lower diagonal
26     /file = 'matrix.dat'
27     .
28
29 list.
30 ])
31
32 AT_DATA([matrix.dat], [dnl
33 mean  24.3  5.4  69.7  20.1  13.4  2.7  27.9  3.7
34 sd    5.7   1.5  23.5  5.8   2.8   4.5  5.4   1.5
35 n     92    92   92    92    92    92   92    92
36 corr 1.00
37 corr .18  1.00
38 corr -.22  -.17  1.00
39 corr .36  .31  -.14  1.00
40 corr .27  .16  -.12  .22  1.00
41 corr .33  .15  -.17  .24  .21  1.00
42 corr .50  .29  -.20  .32  .12  .38  1.00
43 corr .17  .29  -.05  .20  .27  .20  .04  1.00
44 ])
45
46
47 AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl
48 Table: Data List
49 ROWTYPE_,VARNAME_,var01,var02,var03,var04,var05,var06,var07,var08
50 mean    ,,24.3000,5.4000,69.7000,20.1000,13.4000,2.7000,27.9000,3.7000
51 STDDEV  ,,5.7000,1.5000,23.5000,5.8000,2.8000,4.5000,5.4000,1.5000
52 n       ,,92.0000,92.0000,92.0000,92.0000,92.0000,92.0000,92.0000,92.0000
53 corr    ,var01,1.0000,.1800,-.2200,.3600,.2700,.3300,.5000,.1700
54 corr    ,var02,.1800,1.0000,-.1700,.3100,.1600,.1500,.2900,.2900
55 corr    ,var03,-.2200,-.1700,1.0000,-.1400,-.1200,-.1700,-.2000,-.0500
56 corr    ,var04,.3600,.3100,-.1400,1.0000,.2200,.2400,.3200,.2000
57 corr    ,var05,.2700,.1600,-.1200,.2200,1.0000,.2100,.1200,.2700
58 corr    ,var06,.3300,.1500,-.1700,.2400,.2100,1.0000,.3800,.2000
59 corr    ,var07,.5000,.2900,-.2000,.3200,.1200,.3800,1.0000,.0400
60 corr    ,var08,.1700,.2900,-.0500,.2000,.2700,.2000,.0400,1.0000
61 ])
62 AT_CLEANUP
63
64
65
66 AT_SETUP([Matrix data (upper)])
67
68 AT_DATA([matrix-data.pspp], [dnl
69 matrix data
70     variables = rowtype_  var01 var02 var03 var04
71     /format = upper diagonal.
72
73 begin data
74 mean        34 35 36 37
75 sd          22 11 55 66
76 n_vector    100 101 102 103
77 corr        1 9 8 7
78 corr        1 6 5
79 corr        1 4
80 corr        1
81 end data.
82
83 list.
84 ])
85
86 AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl
87 Table: Data List
88 ROWTYPE_,VARNAME_,var01,var02,var03,var04
89 mean    ,,34.0000,35.0000,36.0000,37.0000
90 STDDEV  ,,22.0000,11.0000,55.0000,66.0000
91 N       ,,100.0000,101.0000,102.0000,103.0000
92 corr    ,var01,1.0000,9.0000,8.0000,7.0000
93 corr    ,var02,9.0000,1.0000,6.0000,5.0000
94 corr    ,var03,8.0000,6.0000,1.0000,4.0000
95 corr    ,var04,7.0000,5.0000,4.0000,1.0000
96 ])
97
98 AT_CLEANUP
99
100 AT_SETUP([Matrix data (full)])
101
102 dnl Just for fun, this one is in a different case.
103 AT_DATA([matrix-data.pspp], [dnl
104 matrix data
105     variables = ROWTYPE_  var01 var02 var03 var04
106     /format = full diagonal.
107
108 begin data
109 MEAN 34 35 36 37
110 SD   22 11 55 66
111 N    100 101 102 103
112 CORR 1 9 8 7
113 CORR 9 1 6 5
114 CORR 8 6 1 4
115 CORR 7 5 4 1
116 end data.
117
118 list.
119 ])
120
121
122 AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl
123 Table: Data List
124 ROWTYPE_,VARNAME_,var01,var02,var03,var04
125 MEAN    ,,34.0000,35.0000,36.0000,37.0000
126 STDDEV  ,,22.0000,11.0000,55.0000,66.0000
127 N       ,,100.0000,101.0000,102.0000,103.0000
128 CORR    ,var01,1.0000,9.0000,8.0000,7.0000
129 CORR    ,var02,9.0000,1.0000,6.0000,5.0000
130 CORR    ,var03,8.0000,6.0000,1.0000,4.0000
131 CORR    ,var04,7.0000,5.0000,4.0000,1.0000
132 ])
133
134 AT_CLEANUP
135
136
137 AT_SETUP([Matrix data (upper nodiagonal)])
138
139 AT_DATA([matrix-data.pspp], [dnl
140 matrix data
141     variables = rowtype_  var01 var02 var03 var04
142     /format = upper nodiagonal.
143
144 begin data
145 mean 34 35 36 37
146 sd   22 11 55 66
147 n    100 101 102 103
148 corr  9 8 7
149 corr  6 5
150 corr  4
151 end data.
152
153 list.
154 ])
155
156 AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl
157 Table: Data List
158 ROWTYPE_,VARNAME_,var01,var02,var03,var04
159 mean    ,,34.0000,35.0000,36.0000,37.0000
160 STDDEV  ,,22.0000,11.0000,55.0000,66.0000
161 n       ,,100.0000,101.0000,102.0000,103.0000
162 corr    ,var01,1.0000,9.0000,8.0000,7.0000
163 corr    ,var02,9.0000,1.0000,6.0000,5.0000
164 corr    ,var03,8.0000,6.0000,1.0000,4.0000
165 corr    ,var04,7.0000,5.0000,4.0000,1.0000
166 ])
167
168 AT_CLEANUP
169
170
171 AT_SETUP([Matrix data (lower nodiagonal)])
172
173 AT_DATA([matrix-data.pspp], [dnl
174 matrix data
175     variables = rowtype_  var01 var02 var03 var04
176     /format = lower nodiagonal.
177
178 begin data
179 mean 34 35 36 37
180 sd   22 11 55 66
181 n    100 101 102 103
182 corr  9
183 corr  8 6
184 corr  7 5 4
185 end data.
186
187 list.
188 ])
189
190 AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl
191 Table: Data List
192 ROWTYPE_,VARNAME_,var01,var02,var03,var04
193 mean    ,,34.0000,35.0000,36.0000,37.0000
194 STDDEV  ,,22.0000,11.0000,55.0000,66.0000
195 n       ,,100.0000,101.0000,102.0000,103.0000
196 corr    ,var01,1.0000,9.0000,8.0000,7.0000
197 corr    ,var02,9.0000,1.0000,6.0000,5.0000
198 corr    ,var03,8.0000,6.0000,1.0000,4.0000
199 corr    ,var04,7.0000,5.0000,4.0000,1.0000
200 ])
201
202 AT_CLEANUP
203
204
205
206 AT_SETUP([Matrix data split data])
207
208 AT_DATA([matrix-data.pspp], [dnl
209 matrix data
210     variables = s1 s2 rowtype_  var01 var02 var03
211     /split=s1 s2.
212
213 begin data
214 8 0   mean     21.4  5.0  72.9
215 8 0   sd       6.5   1.6  22.8
216 8 0   n        106   106  106
217 8 0   corr     1
218 8 0   corr    .41  1
219 8 0   corr    -.16  -.22  1
220 8 1   mean     11.4  1.0  52.9
221 8 1   sd       9.5   8.6  12.8
222 8 1   n        10   11  12
223 8 1   corr     1
224 8 1   corr    .51  1
225 8 1   corr    .36  -.41  1
226 end data.
227
228 display dictionary.
229
230 list.
231 ])
232
233
234 AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl
235 Variable,Description,Position
236 s1,Format: F4.0,1
237 s2,Format: F4.0,2
238 ROWTYPE_,Format: A8,3
239 VARNAME_,Format: A8,4
240 var01,Format: F10.4,5
241 var02,Format: F10.4,6
242 var03,Format: F10.4,7
243
244 Table: Data List
245 s1,s2,ROWTYPE_,VARNAME_,var01,var02,var03
246 8,0,mean    ,,21.4000,5.0000,72.9000
247 8,0,STDDEV  ,,6.5000,1.6000,22.8000
248 8,0,n       ,,106.0000,106.0000,106.0000
249 8,0,corr    ,var01,1.0000,.4100,-.1600
250 8,0,corr    ,var02,.4100,1.0000,-.2200
251 8,0,corr    ,var03,-.1600,-.2200,1.0000
252 8,1,mean    ,,11.4000,1.0000,52.9000
253 8,1,STDDEV  ,,9.5000,8.6000,12.8000
254 8,1,n       ,,10.0000,11.0000,12.0000
255 8,1,corr    ,var01,1.0000,.5100,.3600
256 8,1,corr    ,var02,.5100,1.0000,-.4100
257 8,1,corr    ,var03,.3600,-.4100,1.0000
258 ])
259
260 AT_CLEANUP
261
262
263
264
265 AT_SETUP([Matrix data duplicate variable])
266
267 dnl Negative test to check for sane behaviour in the face of bad syntax
268 AT_DATA([matrix-data.pspp], [dnl
269 set decimal = dot .
270 matrix data
271     variables = s1 s1 rowtype_  var01 var02 var03
272     /split=s1.
273
274 begin data
275 0   mean     21.4  5.0  72.9
276 0   sd       6.5   1.6  22.8
277 0   n        106   106  106
278 0   corr     1
279 0   corr    .41  1
280 0   corr    -.16  -.22  1
281 end data .
282
283 list.
284 ])
285
286
287 AT_CHECK([pspp -O format=csv matrix-data.pspp], [1], [dnl
288 matrix-data.pspp:3: error: MATRIX DATA: Variable s1 appears twice in variable list.
289
290 matrix-data.pspp:6: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
291 ])
292
293 AT_CLEANUP
294
295
296
297 AT_SETUP([Matrix data - long variable names])
298
299 AT_DATA([matrix-data.pspp], [dnl
300 matrix data
301     variables = rowtype_  var01 var_two variable_number_three variableFour
302     /format = upper diagonal.
303
304 begin data
305 mean         34  35  36  37
306 sd           22  11  55  66
307 n_vector    100 101 102 103
308 corr          1   9   8   7
309 corr              1   6   5
310 corr                  1   4
311 corr                      1
312 end data.
313
314 list.
315 ])
316
317 AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl
318 Table: Data List
319 ROWTYPE_,VARNAME_,var01,var_two,variable_number_three,variableFour
320 mean    ,,34.0000,35.0000,36.0000,37.0000
321 STDDEV  ,,22.0000,11.0000,55.0000,66.0000
322 N       ,,100.0000,101.0000,102.0000,103.0000
323 corr    ,var01,1.0000,9.0000,8.0000,7.0000
324 corr    ,var_two,9.0000,1.0000,6.0000,5.0000
325 corr    ,variable_number_three,8.0000,6.0000,1.0000,4.0000
326 corr    ,variableFour,7.0000,5.0000,4.0000,1.0000
327 ])
328
329 AT_CLEANUP
330
331
332
333 AT_SETUP([Matrix reader - read integrity])
334
335 dnl Check that matrices presented are read correctly.
336 dnl The example below is an unlikely one since all
337 dnl covariance/correlation matrices must be symmetrical
338 dnl but it serves a purpose for this test.
339 AT_DATA([matrix-reader.pspp], [dnl
340 matrix data
341     variables = rowtype_  var01 to var9
342     /format = full.
343
344 begin data
345 n    1  2  3  4  5  6  7  8  9
346 sd   100 200 300 400 500 600 700 800 900
347 corr 11 12 13 14 15 16 17 18 19
348 corr 21 22 23 24 25 26 27 28 29
349 corr 31 32 33 34 35 36 37 38 39
350 corr 41 42 43 44 45 46 47 48 49
351 corr 51 52 53 54 55 56 57 58 59
352 corr 61 62 63 64 65 66 67 68 69
353 corr 71 72 73 74 75 76 77 78 79
354 corr 81 82 83 84 85 86 87 88 89
355 corr 91 92 93 94 95 96 97 98 99
356 end data.
357
358 factor  /matrix = in (corr = *)
359         /analysis var02 var04 var06
360         /method = correlation
361         /rotation = norotate
362         /print correlation.
363 ])
364
365 AT_CHECK([pspp -O format=csv matrix-reader.pspp], [0], [dnl
366 Table: Correlation Matrix
367 ,,var02,var04,var06
368 Correlations,var02,22.00,24.00,26.00
369 ,var04,42.00,44.00,46.00
370 ,var06,62.00,64.00,66.00
371
372 Table: Component Matrix
373 ,Component,
374 ,1,2
375 var02,6.73,-2.23
376 var04,6.95,2.15
377 var06,9.22,.01
378 ])
379
380 AT_CLEANUP
381
382
383 AT_SETUP([Matrix data - too many rows])
384
385 dnl Test for a crash which occurred when the matrix had more rows declared
386 dnl than variables to hold them.
387 AT_DATA([matrix-data.pspp], [dnl
388 matrix data
389     variables = rowtype_
390     var01 var02 var03 var04
391     / format = upper diagonal .
392 begin data
393     mean     21.4  5.0  72.9  17.4
394     sd       6.5  1.6  22.8  5.7
395     n       106  106  106  106
396     corr    1.00  .32  .48  .28
397     corr    1.00  .72  .54  .44
398     corr    1.00  .50  .59  .64
399     corr    1.00  .62  .49  -.30
400     corr    1.00  .56  -.38  .52
401     corr    1.00  -.73  .91  .80
402     corr    1.00  -.65  -.60
403     corr    1.00  .70
404     corr    1.00
405 end data .
406
407 execute.
408 ])
409
410
411 AT_CHECK([pspp -O format=csv matrix-data.pspp], [1], [dnl
412 matrix-data.pspp:13: error: MATRIX DATA: There are 4 variable declared but the data has at least 5 matrix rows.
413
414 matrix-data.pspp:20: error: EXECUTE: EXECUTE is allowed only after the active dataset has been defined.
415 ])
416
417
418 AT_CLEANUP
419
420
421
422
423 AT_SETUP([Matrix data (badly formed)])
424
425 AT_DATA([data.pspp], [dnl
426 data list list /ROWTYPE_ (a8) VARNAME_(a4) v1 v2 v3 v4xxxxxxxxxxxxxxxxxxxxxzzzzzzzzzzzzzxxxxxxxxx.
427 begin data
428 mean ""                          1 2 3 4
429 sd   ""                          5 6 7 8
430 n    ""                          2 3 4 5
431 corr v1                          11 22 33 44
432 corr v2                          55 66 77 88
433 corr v3                          111 222 333 444
434 corr v4                           4 3 21 1
435 end data.
436
437 list.
438
439 factor matrix=in(corr = *)
440         .
441 ])
442
443 AT_CHECK([pspp -O format=csv data.pspp], [1], [ignore])
444
445 AT_CLEANUP
446
447
448
449
450 AT_SETUP([Matrix data (N subcommand)])
451
452 AT_DATA([matrix-data.pspp], [dnl
453 matrix data
454     variables = rowtype_  var01 var02 var03 var04
455     /n = 99
456     /format = upper nodiagonal.
457 begin data
458 mean 34 35 36 37
459 sd   22 11 55 66
460 n_vector 1 2 3 4
461 corr  9 8 7
462 corr  6 5
463 corr  4
464 end data.
465
466 list.
467 ])
468
469 AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl
470 "matrix-data.pspp:12: warning: MATRIX DATA: The N subcommand was specified, but a N record was also found in the data.  The N record will be ignored."
471
472 Table: Data List
473 ROWTYPE_,VARNAME_,var01,var02,var03,var04
474 N       ,,99.0000,99.0000,99.0000,99.0000
475 mean    ,,34.0000,35.0000,36.0000,37.0000
476 STDDEV  ,,22.0000,11.0000,55.0000,66.0000
477 corr    ,var01,1.0000,9.0000,8.0000,7.0000
478 corr    ,var02,9.0000,1.0000,6.0000,5.0000
479 corr    ,var03,8.0000,6.0000,1.0000,4.0000
480 corr    ,var04,7.0000,5.0000,4.0000,1.0000
481 ])
482
483 AT_CLEANUP