* Опубликован: 30.12.2005. SET MPRINT=yes. *Автор кода: Raynald Levesque rlevesque@videotron.ca. * -------------------ОПРЕДЕЛЕНИЕ МАКРОСА ---------------------------------------------. DEFINE !sample(myvar !TOKENS(1) /nbsampl !TOKENS(1) /size !CMDEND). * myvar = переменная, статистика которой нас интересует (тут нам интересен средний уровень жалованья (salary)). * nbsampl = количество выборок. * size = объём выборок. !LET !first='1' !DO !ss !IN (!size) !DO !count = 1 !TO !nbsampl. GET FILE='c:\\Program Files\\SPSS\\employee data.sav'. COMPUTE draw=uniform(1). SORT CASES BY draw. N OF CASES !ss. * Случайная выборка указанного объёма. 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 'Sample size'. EXAMINE VARIABLES=salary BY ss /PLOT=BOXPLOT/STATISTICS=NONE/NOTOTAL /MISSING=REPORT. !ENDDEFINE. * ----------------КОНЕЦ МАКРОСА ----------------------------------------------. * Вызов макроса (параметры: количество выборок (здесь - 20) и объёмы выборок (здесь 5, 10,15,30,50). * То есть 20 выборок объёма 5. * 20 выборок объёма 10 и т.д.. !sample myvar=salary nbsampl=20 size= 5 10 15 30 50.