1 dnl PSPP - a program for statistical analysis.
2 dnl Copyright (C) 2017 Free Software Foundation, Inc.
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.
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.
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/>.
17 AT_BANNER([MATRIX DATA])
19 AT_SETUP([Matrix data (lower file)])
21 AT_DATA([matrix-data.pspp], [dnl
25 /format = lower diagonal
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
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
47 AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl
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
66 AT_SETUP([Matrix data (upper)])
68 AT_DATA([matrix-data.pspp], [dnl
70 variables = rowtype_ var01 var02 var03 var04
71 /format = upper diagonal.
76 n_vector 100 101 102 103
86 AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl
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
100 AT_SETUP([Matrix data (full)])
102 dnl Just for fun, this one is in a different case.
103 AT_DATA([matrix-data.pspp], [dnl
105 variables = ROWTYPE_ var01 var02 var03 var04
106 /format = full diagonal.
122 AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl
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
137 AT_SETUP([Matrix data (upper nodiagonal)])
139 AT_DATA([matrix-data.pspp], [dnl
141 variables = rowtype_ var01 var02 var03 var04
142 /format = upper nodiagonal.
156 AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl
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
171 AT_SETUP([Matrix data (lower nodiagonal)])
173 AT_DATA([matrix-data.pspp], [dnl
175 variables = rowtype_ var01 var02 var03 var04
176 /format = lower nodiagonal.
190 AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl
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
206 AT_SETUP([Matrix data split data])
208 AT_DATA([matrix-data.pspp], [dnl
210 variables = s1 s2 rowtype_ var01 var02 var03
214 8 0 mean 21.4 5.0 72.9
220 8 1 mean 11.4 1.0 52.9
234 AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl
235 Variable,Description,Position
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
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
265 AT_SETUP([Matrix data duplicate variable])
267 dnl Negative test to check for sane behaviour in the face of bad syntax
268 AT_DATA([matrix-data.pspp], [dnl
271 variables = s1 s1 rowtype_ var01 var02 var03
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.
290 matrix-data.pspp:6: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
297 AT_SETUP([Matrix data - long variable names])
299 AT_DATA([matrix-data.pspp], [dnl
301 variables = rowtype_ var01 var_two variable_number_three variableFour
302 /format = upper diagonal.
307 n_vector 100 101 102 103
317 AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl
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
333 AT_SETUP([Matrix reader - read integrity])
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
341 variables = rowtype_ var01 to var9
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
358 factor /matrix = in (corr = *)
359 /analysis var02 var04 var06
360 /method = correlation
365 AT_CHECK([pspp -O format=csv matrix-reader.pspp], [0], [dnl
366 Table: Correlation Matrix
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
372 Table: Component Matrix
383 AT_SETUP([Matrix data - too many rows])
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
390 var01 var02 var03 var04
391 / format = upper diagonal .
393 mean 21.4 5.0 72.9 17.4
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
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.
414 matrix-data.pspp:20: error: EXECUTE: EXECUTE is allowed only after the active dataset has been defined.
423 AT_SETUP([Matrix data (badly formed)])
425 AT_DATA([data.pspp], [dnl
426 data list list /ROWTYPE_ (a8) VARNAME_(a4) v1 v2 v3 v4xxxxxxxxxxxxxxxxxxxxxzzzzzzzzzzzzzxxxxxxxxx.
433 corr v3 111 222 333 444
439 factor matrix=in(corr = *)
443 AT_CHECK([pspp -O format=csv data.pspp], [1], [ignore])
450 AT_SETUP([Matrix data (N subcommand)])
452 AT_DATA([matrix-data.pspp], [dnl
454 variables = rowtype_ var01 var02 var03 var04
456 /format = upper nodiagonal.
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."
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