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
Есть ли возможность сделать в SPSS следующее...

Имеется набор из 12 стимулов-раздражителей (например, различных картинок, которые должны вызывать у объекта
какую-то реакцию). Они должны предъявляться испытуемым (их 60) в случайном порядке. Для того, чтобы
рандомизировать мой эксперимент, мне нужно, чтобы SPSS сгенерировал для каждого испытуемого последовательность
из 12 стимулов, перемешанных в случайном порядке, т.е. т.н. выборку БЕЗ возвращения.
Если бы рандомизацию можно было проводить С возвращением, то никаких проблем бы не возникло - я просто использовала бы
равномерное распределение:

COMPUTE X= TRUNC(RV.UNIFORM(1,13)).

Есть способ сделать выборку без возвращения?

Сильвия
*****************************************************.

*Уважаемые Сильвия, Рич и подписчики SPSSX-L,
*Следующий достаточно аккуратный синтаксис решает проблему перестановок. 
*Он также иллюстрирует некоторые способы, как в SPSS... 
1: преобразовать одно наблюдение в несколько
2: осуществить случайные перестановки
3: преобразовать несколько наблюдений в одно
4: ...без лишней нагрузки на мышь и клавиатуру ;-),
(подобные задачи возникают достаточно часто).

*С уважением, David Marso
*Служба консультирования SPSS
-----------------------------------------
* Вот набор стимулов *.
DATA LIST / STIM01 TO STIM13 1-13 (A).
BEGIN DATA
ABCDEFGHIJKLM
END DATA.

* Сделаем 100 копий набора (по одной на каждого испытуемого) *.
VECTOR STIM=STIM01 TO STIM13.
STRING STIMX(A1).
LOOP ID=1 TO 100.
+ LOOP STIMNUM=1 TO 13.
+ COMPUTE STIMX=STIM(STIMNUM).
+ XSAVE OUTFILE 'TMP' / KEEP ID STIMX.
+ END LOOP.
END LOOP.
EXE.
GET FILE 'TMP'.

* Осуществим случайные перестановки * .
COMPUTE JUMBLE=UNIFORM(1).
SORT CASES BY ID JUMBLE.
RANK VARIABLES= JUMBLE BY ID .

* Сведём случайную последовательность стимулов в одну строку для каждого испытуемого *.
STRING STIM01 TO STIM13 (A1).
VECTOR STIM = STIM01 TO STIM13.
COMPUTE STIM(RJUMBLE)=STIMX.
AGGREGATE OUTFILE * 
/ BREAK ID 
/ STIM01 TO STIM13 = MAX(STIM01 TO STIM13).