1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
* ВОПРОС:
* Меня интересует построение 800 регрессионных уравнений, так, чтобы 
* пробежать все зависимые переменные от y1 до y800 с одними и теми же
* предикторами: x1, x2, x3.
* В пределах цикла LOOP запускать регрессию нельзя.
* Есть способ обойти это ограничение?

* ОТВЕТ. Автор: rlevesque@videotron.ca, 16.04.2002.

* Создадим пример данных для иллюстрации.
NEW FILE.
INPUT PROGRAM.
VECTOR y(20F8.0).
LOOP v1=1 TO 100.
COMPUTE x1=UNIFORM(5).
COMPUTE x2=UNIFORM(5).
COMPUTE x3=UNIFORM(5).
LOOP #cnt=1 TO 20.
COMPUTE y(#cnt)=UNIFORM(10).
END LOOP.
END CASE.
END LOOP.
END FILE.
END INPUT PROGRAM.
EXECUTE.

SET MPRINT=no.
* Определяем рабочий макрос.
*/////////////////////////////////.
DEFINE !regloop(nby=!TOKENS(1)).
!DO !cnt=1 !TO !nby.
REGRESSION
    /STATISTICS COEFF OUTS R ANOVA
    /DEPENDENT !CONCAT('y',!cnt)
    /METHOD=ENTER x1 x2 x3 .
!DOEND.
!ENDDEFINE.
*/////////////////////////////////.

SET MPRINT=yes.
*Вызов макроса (замените 20 на 800 если имена ваших переменных меняются от y1 до y800).
!regloop nby=20.