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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
* Синтаксис случайным образом приписывает объекты вариантам эксперимента и может быть использована для
* рандомизированного блочного эксперимента (простова или обобщённого), так же как и для 
* полностью рандомизированного эксперимента с равным количеством объектов в каждом варианте эксперимента.

* Для генерации полностью рандомизированных планов эксперимента с неравным количеством объектов 
* в разных вариантах эксперимента можно использовать следующий синтаксис:
http://www.spsstools.ru/Syntax/BlockDesign/CRDesigns.txt

* Для рандомизированных блочных планов (простых) число объектов в блоке равно
* числу вариантов эксперимента (p). План требует наличия w блоков по p объектов в каждом, таким образом.

* Для обобощённого рандомизированного блочного плана (см. пример) число объектов в блоке
* должно быть равно числу вариантов (p), умноженному на некоторую целую константу.
* План требует наличия w блоков по kp объектов в кажом (k>=2).

* Для полностью рандомизированных планов с равным числом объектов на вариант эксперимента, 
* вы должны указать, что число блоков = 1.

* В данном примере (обобщённый рандомизированный блочный план) у нас есть:
* 18 объектов;
* 3 варианта условий эксперимента (p);
* 2 блока (w);
* 9 объектов на блок (9=3p).



DATA LIST FREE /TREAT(A20).
* Enter treatments names (A, B and C in the example).
BEGIN DATA
A B C 
END DATA.
COMPUTE TREATM=$CASENUM.
SAVE OUTFILE=OUTF1.

INPUT PROGRAM.
* Enter number of cases (18 in the example).
LOOP N_CASES=1 TO 18.
* Enter number of treatments (3 in the example).
COMPUTE N_TREATM=3.
* Enter number of blocks (2 in the example).
COMPUTE N_BLOCKS=2.
END CASE.
END LOOP.
END FILE.
END INPUT PROGRAM.

COMPUTE TREATM=MOD($CASENUM,N_TREATM)+1.
SORT CASES BY TREATM (A).
MATCH FILES/FILE=*/TABLE=OUTF1/BY TREATM.
COMPUTE BLOCK=MOD($CASENUM,N_BLOCKS)+1.
SORT CASES BY BLOCK(A) TREAT(A).
SET SEED RANDOM.
COMPUTE RANDOM=RV.UNIFORM(0,1).
SORT CASES BY BLOCK(A) RANDOM(A).
RANK VARIABLES=RANDOM(A) BY BLOCK.
COMPUTE ID=RRANDOM.
FORMATS ID(F8.0) BLOCK(F8.0).
LIST ID BLOCK TREAT.
SORT CASES BY TREAT (A) BLOCK (A) ID (A) .
SPLIT FILE SEPARATE BY TREAT .
LIST BLOCK ID.



* Замечание 1:
* Можно вводить полное название вариантов (до 20 символов). Например,
* для простого рандомизированного блочного эксперимента с 10 блоками и 3 вариантами можно ввести:
*    […]
*    BEGIN DATA
*    Вариант_1 Вариант_2 Вариант_3
*    END DATA.
*    […]
*    LOOP N_CASES=1 TO 30.
*    […]
*    COMPUTE N_TREATM=3.
*    […]
*    COMPUTE N_BLOCKS=10.
*    […]



* Замечание 2:
* Помните ,что для полностью рандомизированного плана надо указать N_BLOCKS = 1.
* Например, в полностью рандомизированном факторном плане с 6 вариантами, 48 объектами и равным числом 
* объектов на вариант, надо указать: 
*    […]
*    BEGIN DATA
*    A1B1 A1B2 A2B1 A2B2 A3B1 A3B2
*    END DATA.
*    […]
*    LOOP N_CASES=1 TO 48.
*    […]
*    COMPUTE N_TREATM=6.
*    […]
*    COMPUTE N_BLOCKS=1.
*    […].