564c8dee402083253fe4202397f5f16908debc57
[pspp] / tests / language / stats / glm.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([GLM procedure])
18
19 AT_SETUP([GLM latin square design])
20 AT_KEYWORDS([categorical categoricals])
21
22 dnl This example comes from :
23 dnl  http://ssnds.uwo.ca/statsexamples/spssanova/latinsquareresults.html
24 AT_DATA([latin.sps], [dnl
25 set format = F20.3.
26 data list notable  fixed /a 1 b 3 c 5 y 7-10(2).
27 begin data.
28 1 1 6  3.5
29 1 2 2  8.9
30 1 3 3  9.6
31 1 4 4 10.5
32 1 5 5  3.1
33 1 6 1  5.9
34 2 1 2  4.2
35 2 2 6  1.9
36 2 3 5  3.7
37 2 4 3 10.2
38 2 5 1  7.2
39 2 6 4  7.6
40 3 1 1  6.7
41 3 2 4  5.8
42 3 3 6 -2.7
43 3 4 2  4.6
44 3 5 3  4.0
45 3 6 5 -0.7
46 4 1 4  6.6
47 4 2 1  4.5
48 4 3 2  3.7
49 4 4 5  3.7
50 4 5 6 -3.3
51 4 6 3  3.0
52 5 1 3  4.1
53 5 2 5  2.4
54 5 3 4  6.0
55 5 4 1  5.1
56 5 5 2  3.5
57 5 6 6  4.0
58 6 1 5  3.8
59 6 2 3  5.8
60 6 3 1  7.0
61 6 4 6  3.8
62 6 5 4  5.0
63 6 6 2  8.6
64 end data.
65
66 variable labels a 'Factor A' b 'Factor B' c 'Factor C' y 'Criterion'.
67
68 glm y by   b a c
69   /intercept=include
70   /criteria=alpha(.05)
71   /design = a b c
72   .
73 ])
74
75 AT_CHECK([pspp -O format=csv latin.sps | sed 's/329.62[[678]]/329.62/'], [0],
76   [dnl
77 Table: Tests of Between-Subjects Effects
78 Source,Type III Sum of Squares,df,Mean Square,F,Sig.
79 Corrected Model,263.064,15,17.538,5.269,.000
80 Intercept,815.103,1,815.103,244.910,.000
81 Factor A,78.869,5,15.774,4.739,.005
82 Factor B,28.599,5,5.720,1.719,.176
83 Factor C,155.596,5,31.119,9.350,.000
84 Error,66.563,20,3.328,,
85 Total,1144.730,36,,,
86 Corrected Total,329.62,35,,,
87 ])
88
89 AT_CLEANUP
90
91 AT_SETUP([GLM 2 by 2 factorial design])
92 AT_KEYWORDS([categorical categoricals])
93
94 AT_DATA([2by2.sps], [dnl
95 set format = F20.3.
96 data list notable  list /Factor0 * Factor1 * points (F10).
97 begin data.
98 1       4       332
99 1       4       380
100 1       4       371
101 1       4       366
102 1       4       354
103 1       0       259.5
104 1       0       302.5
105 1       0       296
106 1       0       349
107 1       0       309
108 2       4       354.67
109 2       4       353.5
110 2       4       304
111 2       4       365
112 2       4       339
113 2       0       306
114 2       0       339
115 2       0       353
116 2       0       351
117 2       0       333
118 end data.
119
120 glm points by Factor0 Factor1
121   /intercept=include
122   /criteria=alpha(.05)
123   .
124 ])
125
126
127 AT_CHECK([pspp -O format=csv 2by2.sps ], [0],
128   [dnl
129 Table: Tests of Between-Subjects Effects
130 Source,Type III Sum of Squares,df,Mean Square,F,Sig.
131 Corrected Model,8667.053,3,2889.018,5.043,.012
132 Intercept,2256018.640,1,2256018.640,3937.693,.000
133 Factor0,313.394,1,313.394,.547,.470
134 Factor1,5157.508,1,5157.508,9.002,.008
135 Factor0 * Factor1,3196.150,1,3196.150,5.579,.031
136 Error,9166.865,16,572.929,,
137 Total,2273852.559,20,,,
138 Corrected Total,17833.918,19,,,
139 ])
140
141 AT_CLEANUP
142
143
144 AT_SETUP([GLM Type I and II Sums of Squares])
145 AT_KEYWORDS([categorical categoricals])
146
147 dnl  The following example comes from 
148 dnl  http://www.uvm.edu/~dhowell/StatPages/More_Stuff/Type1-3.pdf
149 AT_DATA([data-inc.sps], [dnl
150 set decimal = dot.
151 set format=F20.3.
152 data list notable list /dv * Agrp * B0 * B1 * B2 * i0 * i1 * i2 * sss *.
153 begin data.
154 5   1  1  0  0  1  0  0 1.00
155 7   1  1  0  0  1  0  0 1.00
156 9   1  1  0  0  1  0  0 1.00
157 8   1  1  0  0  1  0  0 1.00
158 2   1  0  1  0  0  1  0 1.00
159 5   1  0  1  0  0  1  0 1.00
160 7   1  0  1  0  0  1  0 1.00
161 3   1  0  1  0  0  1  0 1.00
162 9   1  0  1  0  0  1  0 1.00
163 8   1  0  0  1  0  0  1 1.00
164 11  1  0  0  1  0  0  1 1.00
165 12  1  0  0  1  0  0  1 1.00
166 14  1  0  0  1  0  0  1 1.00
167 11  1 -1 -1 -1 -1 -1 -1 1.00
168 15  1 -1 -1 -1 -1 -1 -1 1.00
169 16  1 -1 -1 -1 -1 -1 -1 1.00
170 10  1 -1 -1 -1 -1 -1 -1 1.00
171 9   1 -1 -1 -1 -1 -1 -1 1.00
172 7  -1  1  0  0 -1  0  0 2.00
173 9  -1  1  0  0 -1  0  0 2.00
174 10 -1  1  0  0 -1  0  0 2.00
175 9  -1  1  0  0 -1  0  0 2.00
176 3  -1  0  1  0  0 -1  0 2.00
177 8  -1  0  1  0  0 -1  0 2.00
178 9  -1  0  1  0  0 -1  0 2.00
179 11 -1  0  1  0  0 -1  0 2.00
180 9  -1  0  0  1  0  0 -1 2.00
181 12 -1  0  0  1  0  0 -1 2.00
182 14 -1  0  0  1  0  0 -1 2.00
183 8  -1  0  0  1  0  0 -1 2.00
184 7  -1  0  0  1  0  0 -1 2.00
185 11 -1 -1 -1 -1  1  1  1 2.00
186 14 -1 -1 -1 -1  1  1  1 2.00
187 10 -1 -1 -1 -1  1  1  1 2.00
188 12 -1 -1 -1 -1  1  1  1 2.00
189 13 -1 -1 -1 -1  1  1  1 2.00
190 11 -1 -1 -1 -1  1  1  1 2.00
191 12 -1 -1 -1 -1  1  1  1 2.00
192 end data.
193
194 do if B0 = -1 AND B1 = -1 AND B2 = -1.
195 compute Bgrp = 4.
196 end if.
197
198 do if B0 = 0 AND B1 = 0 AND B2 = 1.
199 compute Bgrp = 3.
200 end if.
201
202 do if B0 = 0 AND B1 = 1 AND B2 = 0.
203 compute Bgrp = 2.
204 end if.
205
206 do if B0 = 1 AND B1 = 0 AND B2 = 0.
207 compute Bgrp = 1.
208 end if.
209 ])
210
211 AT_DATA([type1.sps], [dnl
212 include 'data-inc.sps'.
213
214 glm dv by Agrp Bgrp
215         /method = sstype (1)
216         .
217
218 glm dv by Agrp Bgrp
219         /method = sstype (1)
220         /design Bgrp Agrp Bgrp * Agrp
221         .
222 ])
223
224
225 AT_CHECK([pspp -O format=csv type1.sps], [0],
226   [dnl
227 Table: Tests of Between-Subjects Effects
228 Source,Type I Sum of Squares,df,Mean Square,F,Sig.
229 Corrected Model,216.017,7,30.860,5.046,.001
230 Intercept,,,,,
231 Agrp,9.579,1,9.579,1.566,.220
232 Bgrp,186.225,3,62.075,10.151,.000
233 Agrp * Bgrp,20.212,3,6.737,1.102,.364
234 Error,183.457,30,6.115,,
235 Total,3810.000,38,,,
236 Corrected Total,399.474,37,,,
237
238 Table: Tests of Between-Subjects Effects
239 Source,Type I Sum of Squares,df,Mean Square,F,Sig.
240 Corrected Model,216.017,7,30.860,5.046,.001
241 Intercept,,,,,
242 Bgrp,193.251,3,64.417,10.534,.000
243 Agrp,2.553,1,2.553,.418,.523
244 Bgrp * Agrp,20.212,3,6.737,1.102,.364
245 Error,183.457,30,6.115,,
246 Total,3810.000,38,,,
247 Corrected Total,399.474,37,,,
248 ])
249
250
251 AT_DATA([type2.sps], [dnl
252 include 'data-inc.sps'.
253
254 glm dv by Agrp Bgrp
255         /method = sstype (2)
256         .
257 ])
258
259
260 AT_CHECK([pspp -O format=csv type2.sps], [0],
261   [dnl
262 Table: Tests of Between-Subjects Effects
263 Source,Type II Sum of Squares,df,Mean Square,F,Sig.
264 Corrected Model,216.017,7,30.860,5.046,.001
265 Intercept,,,,,
266 Agrp,2.553,1,2.553,.418,.523
267 Bgrp,186.225,3,62.075,10.151,.000
268 Agrp * Bgrp,20.212,3,6.737,1.102,.364
269 Error,183.457,30,6.115,,
270 Total,3810.000,38,,,
271 Corrected Total,399.474,37,,,
272 ])
273
274 AT_CLEANUP
275
276
277
278 AT_SETUP([GLM excluded intercept])
279 AT_KEYWORDS([categorical categoricals])
280
281 dnl  The following example comes from 
282 dnl
283 dnl Rudolf N. Cardinal
284 dnl Graduate-level statistics for psychology and neuroscience
285 dnl ANOVA in practice, and complex ANOVA designs
286 dnl Version of 2 May 2004
287 dnl
288 dnl Downloaded from: http://egret.psychol.cam.ac.uk/psychology/graduate/Guide_to_ANOVA.pdf
289
290 AT_DATA([intercept-exclude.sps], [dnl
291 set format = F20.3.
292
293 data list notable list /depvar * A *.
294 begin data.
295 10     1
296 14     1
297 8      1
298 7      1
299 2      1
300 10     1
301 1      1
302 3      1
303 2      1
304 8.5    1
305 14.29  2
306 18.49  2
307 12.46  2
308 11.63  2
309 6.66   2
310 14.02  2
311 5.66   2
312 7.06   2
313 6.37   2
314 13.26  2
315 end data.
316
317 GLM depvar by A
318    /intercept = exclude
319   .
320
321
322 GLM depvar by A
323    /intercept = include
324   .
325
326 ])
327
328 AT_CHECK([pspp -O format=csv intercept-exclude.sps], [0],
329   [dnl
330 Table: Tests of Between-Subjects Effects
331 Source,Type III Sum of Squares,df,Mean Square,F,Sig.
332 Model,1636.826,2,818.413,43.556,.000
333 A,1636.826,2,818.413,43.556,.000
334 Error,338.216,18,18.790,,
335 Total,1975.042,20,,,
336
337 Table: Tests of Between-Subjects Effects
338 Source,Type III Sum of Squares,df,Mean Square,F,Sig.
339 Corrected Model,98.568,1,98.568,5.246,.034
340 Intercept,1538.258,1,1538.258,81.867,.000
341 A,98.568,1,98.568,5.246,.034
342 Error,338.216,18,18.790,,
343 Total,1975.042,20,,,
344 Corrected Total,436.784,19,,,
345 ])
346
347 AT_CLEANUP
348
349
350 AT_SETUP([GLM missing values])
351 AT_KEYWORDS([categorical categoricals])
352
353 AT_DATA([glm.data], [dnl
354 1 1 6  3.5
355 1 2 2  8.9
356 1 3 3  9.6
357 1 4 4 10.5
358 1 5 5  3.1
359 1 6 1  5.9
360 2 1 2  4.2
361 2 2 6  1.9
362 2 3 5  3.7
363 2 4 3 10.2
364 2 5 1  7.2
365 2 6 4  7.6
366 3 1 1  6.7
367 3 2 4  5.8
368 3 3 6 -2.7
369 3 4 2  4.6
370 3 5 3  4.0
371 3 6 5 -0.7
372 4 1 4  6.6
373 4 2 1  4.5
374 4 3 2  3.7
375 4 4 5  3.7
376 4 5 6 -3.3
377 4 6 3  3.0
378 5 1 3  4.1
379 5 2 5  2.4
380 5 3 4  6.0
381 5 4 1  5.1
382 5 5 2  3.5
383 5 6 6  4.0
384 6 1 5  3.8
385 6 2 3  5.8
386 6 3 1  7.0
387 6 4 6  3.8
388 6 5 4  5.0
389 6 6 2  8.6
390 ])
391
392 AT_DATA([glm-miss.sps], [dnl
393 set format = F20.3.
394 data list file='glm.data' notable  fixed /a 1 b 3 c 5 y 7-10(2).
395
396 do if a=6.
397 recode y (else=SYSMIS).
398 end if.
399
400 glm y by   b a c
401   /criteria=alpha(.05)
402   /design = a b c
403   .
404 ])
405
406 AT_CHECK([pspp -O format=csv glm-miss.sps], [0],  [dnl
407 Table: Tests of Between-Subjects Effects
408 Source,Type III Sum of Squares,df,Mean Square,F,Sig.
409 Corrected Model,251.621,14,17.973,4.969,.002
410 Intercept,628.376,1,628.376,173.737,.000
411 a,72.929,4,18.232,5.041,.009
412 b,20.703,5,4.141,1.145,.380
413 c,135.179,5,27.036,7.475,.001
414 Error,54.253,15,3.617,,
415 Total,934.250,30,,,
416 Corrected Total,305.874,29,,,
417 ])
418
419
420
421 AT_DATA([glm-miss2.sps], [dnl
422 set format = F20.3.
423 data list file='glm.data' notable  fixed /a 1 b 3 c 5 y 7-10(2).
424
425 select if a <> 6.
426
427 glm y by   b a c
428   /criteria=alpha(.05)
429   /design = a b c
430   .
431 ])
432
433 AT_CHECK([pspp -O format=csv glm-miss2.sps], [0],  [dnl
434 Table: Tests of Between-Subjects Effects
435 Source,Type III Sum of Squares,df,Mean Square,F,Sig.
436 Corrected Model,251.621,14,17.973,4.969,.002
437 Intercept,628.376,1,628.376,173.737,.000
438 a,72.929,4,18.232,5.041,.009
439 b,20.703,5,4.141,1.145,.380
440 c,135.179,5,27.036,7.475,.001
441 Error,54.253,15,3.617,,
442 Total,934.250,30,,,
443 Corrected Total,305.874,29,,,
444 ])
445
446
447 dnl Now for some missing values in the factor variables.
448
449 AT_DATA([glm-miss3.sps], [dnl
450 set format = F20.3.
451 data list file=glm.data notable  fixed /a 1 b 3 c 5 y 7-10(2).
452
453 do if a=6.
454 recode a (else=SYSMIS).
455 end if.
456
457 glm y by   b a c
458   /criteria=alpha(.05)
459   /design = a b c
460   .
461 ])
462
463 AT_CHECK([pspp -O format=csv glm-miss3.sps], [0],  [dnl
464 Table: Tests of Between-Subjects Effects
465 Source,Type III Sum of Squares,df,Mean Square,F,Sig.
466 Corrected Model,251.621,14,17.973,4.969,.002
467 Intercept,628.376,1,628.376,173.737,.000
468 a,72.929,4,18.232,5.041,.009
469 b,20.703,5,4.141,1.145,.380
470 c,135.179,5,27.036,7.475,.001
471 Error,54.253,15,3.617,,
472 Total,934.250,30,,,
473 Corrected Total,305.874,29,,,
474 ])
475
476 AT_CLEANUP
477