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
236 Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
237 s1,1,,Scale,Input,8,Right,F4.0,F4.0,
238 s2,2,,Scale,Input,8,Right,F4.0,F4.0,
239 ROWTYPE_,3,,Nominal,Input,8,Left,A8,A8,
240 VARNAME_,4,,Nominal,Input,8,Left,A8,A8,
241 var01,5,,Scale,Input,8,Right,F10.4,F10.4,
242 var02,6,,Scale,Input,8,Right,F10.4,F10.4,
243 var03,7,,Scale,Input,8,Right,F10.4,F10.4,
246 s1,s2,ROWTYPE_,VARNAME_,var01,var02,var03
247 8,0,mean,,21.4000,5.0000,72.9000
248 8,0,STDDEV,,6.5000,1.6000,22.8000
249 8,0,n,,106.0000,106.0000,106.0000
250 8,0,corr,var01,1.0000,.4100,-.1600
251 8,0,corr,var02,.4100,1.0000,-.2200
252 8,0,corr,var03,-.1600,-.2200,1.0000
253 8,1,mean,,11.4000,1.0000,52.9000
254 8,1,STDDEV,,9.5000,8.6000,12.8000
255 8,1,n,,10.0000,11.0000,12.0000
256 8,1,corr,var01,1.0000,.5100,.3600
257 8,1,corr,var02,.5100,1.0000,-.4100
258 8,1,corr,var03,.3600,-.4100,1.0000
266 AT_SETUP([Matrix data duplicate variable])
268 dnl Negative test to check for sane behaviour in the face of bad syntax
269 AT_DATA([matrix-data.pspp], [dnl
272 variables = s1 s1 rowtype_ var01 var02 var03
288 AT_CHECK([pspp -O format=csv matrix-data.pspp], [1], [dnl
289 matrix-data.pspp:3: error: MATRIX DATA: Variable s1 appears twice in variable list.
291 matrix-data.pspp:6: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
298 AT_SETUP([Matrix data - long variable names])
300 AT_DATA([matrix-data.pspp], [dnl
302 variables = rowtype_ var01 var_two variable_number_three variableFour
303 /format = upper diagonal.
308 n_vector 100 101 102 103
318 AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl
320 ROWTYPE_,VARNAME_,var01,var_two,variable_number_three,variableFour
321 mean,,34.0000,35.0000,36.0000,37.0000
322 STDDEV,,22.0000,11.0000,55.0000,66.0000
323 N,,100.0000,101.0000,102.0000,103.0000
324 corr,var01,1.0000,9.0000,8.0000,7.0000
325 corr,var_two,9.0000,1.0000,6.0000,5.0000
326 corr,variable_number_three,8.0000,6.0000,1.0000,4.0000
327 corr,variableFour,7.0000,5.0000,4.0000,1.0000
334 AT_SETUP([Matrix reader - read integrity])
336 dnl Check that matrices presented are read correctly.
337 dnl The example below is an unlikely one since all
338 dnl covariance/correlation matrices must be symmetrical
339 dnl but it serves a purpose for this test.
340 AT_DATA([matrix-reader.pspp], [dnl
342 variables = rowtype_ var01 to var9
347 sd 100 200 300 400 500 600 700 800 900
348 corr 11 12 13 14 15 16 17 18 19
349 corr 21 22 23 24 25 26 27 28 29
350 corr 31 32 33 34 35 36 37 38 39
351 corr 41 42 43 44 45 46 47 48 49
352 corr 51 52 53 54 55 56 57 58 59
353 corr 61 62 63 64 65 66 67 68 69
354 corr 71 72 73 74 75 76 77 78 79
355 corr 81 82 83 84 85 86 87 88 89
356 corr 91 92 93 94 95 96 97 98 99
359 factor /matrix = in (corr = *)
360 /analysis var02 var04 var06
361 /method = correlation
366 AT_CHECK([pspp -O format=csv matrix-reader.pspp], [0], [dnl
367 Table: Correlation Matrix
369 Correlation,var02,22.000,24.000,26.000
370 ,var04,42.000,44.000,46.000
371 ,var06,62.000,64.000,66.000
373 Table: Component Matrix
384 AT_SETUP([Matrix data - too many rows])
386 dnl Test for a crash which occurred when the matrix had more rows declared
387 dnl than variables to hold them.
388 AT_DATA([matrix-data.pspp], [dnl
391 var01 var02 var03 var04
392 / format = upper diagonal .
394 mean 21.4 5.0 72.9 17.4
397 corr 1.00 .32 .48 .28
398 corr 1.00 .72 .54 .44
399 corr 1.00 .50 .59 .64
400 corr 1.00 .62 .49 -.30
401 corr 1.00 .56 -.38 .52
402 corr 1.00 -.73 .91 .80
412 AT_CHECK([pspp -O format=csv matrix-data.pspp], [1], [dnl
413 matrix-data.pspp:13: error: MATRIX DATA: There are 4 variable declared but the data has at least 5 matrix rows.
415 matrix-data.pspp:20: error: EXECUTE: EXECUTE is allowed only after the active dataset has been defined.
424 AT_SETUP([Matrix data (badly formed)])
426 AT_DATA([data.pspp], [dnl
427 data list list /ROWTYPE_ (a8) VARNAME_(a4) v1 v2 v3 v4xxxxxxxxxxxxxxxxxxxxxzzzzzzzzzzzzzxxxxxxxxx.
434 corr v3 111 222 333 444
440 factor matrix=in(corr = *)
444 AT_CHECK([pspp -O format=csv data.pspp], [1], [ignore])
451 AT_SETUP([Matrix data (N subcommand)])
453 AT_DATA([matrix-data.pspp], [dnl
455 variables = rowtype_ var01 var02 var03 var04
457 /format = upper nodiagonal.
470 AT_CHECK([pspp -O format=csv matrix-data.pspp], [0], [dnl
471 "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."
474 ROWTYPE_,VARNAME_,var01,var02,var03,var04
475 N,,99.0000,99.0000,99.0000,99.0000
476 mean,,34.0000,35.0000,36.0000,37.0000
477 STDDEV,,22.0000,11.0000,55.0000,66.0000
478 corr,var01,1.0000,9.0000,8.0000,7.0000
479 corr,var02,9.0000,1.0000,6.0000,5.0000
480 corr,var03,8.0000,6.0000,1.0000,4.0000
481 corr,var04,7.0000,5.0000,4.0000,1.0000