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
* Опубликован: 30.12.2005.
*ВОПРОС: Требуется макрос, показывающий изменчивость результатов в выборках одного и того же объёма (скажем, 100), позволяющий изменять количество выборок, принимаемых к рассмотрению. Я имею в виду, что хотелось бы подсчитать среднее жалованье по 5 выборкам объёма 100, 10 выборкам того же объёма, 50 выборкам и т.д. (да-да, я хочу продемонстрировать некоторые свойства выборочных распределений, действие теоремы о центральном пределе и т.д., и т.д.).

* РЕШЕНИЕ размещено в SPSSX-L Raynald Levesque rlevesque@videotron.ca 09 августа 2001.

SET MPRINT=yes.


* -------------------DEFINE MACRO ---------------------------------------------.
DEFINE !sample(myvar !TOKENS(1) 
		/size !TOKENS(1)
		/nbsampl !CMDEND)
/* myvar = интересующая нас переменная (тут мы хотим узнать среднее жалованье) */
/* nbsampl = количество выборок */
/* size = объём выборок */.

!LET !first='1'
!DO !ss !IN (!nbsampl)
!DO !count = 1 !TO !ss.

GET FILE='c:\\Program Files\\SPSS\\employee data.sav'.

COMPUTE draw=uniform(1).
SORT CASES BY draw.
N OF CASES !size.

COMPUTE samplenb=!count. 
COMPUTE ss=!ss.

AGGREGATE
  /OUTFILE=*
/BREAK=samplenb
  /!myvar = MEAN(!myvar) /ss=FIRST(ss).

!IF (!first !NE '1') !THEN
ADD FILES /FILE=*  /FILE='c:\\temp\\sample.sav'.
!IFEND
SAVE OUTFILE='c:\\temp\\sample.sav'.
!LET !first='0'

!DOEND. 
!DOEND. 

VARIABLE LABEL ss !QUOTE(!CONCAT('Количество выборок объёма ',!size)).
EXAMINE
  VARIABLES=salary BY ss /PLOT=BOXPLOT/STATISTICS=NONE/NOTOTAL
  /MISSING=REPORT.

!ENDDEFINE.
* ----------------END OF MACRO ----------------------------------------------.


* Вызываем макрос (параметры: количество выборок (здесь 5 10 25 35 50) и размер каждой выборки (здесь 10). 
* Т.е. будет сделано 5 выборок объёма 10.
* 10 выборок объёма 10 и т.д.
!sample myvar=salary size=10 nbsampl=5 10 25 35 50.