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
* Этот синтаксис - пример использования макроса из файла "dograph.sps".
* Я полагаю, что синтаксис "dograph.sps" и  шаблон графика "dograph.sct" помещены в c:\\temp.
* Автор: rlevesque@videotron.ca.

* Синтаксис генерирует случайные данные и строит несколько гистограмм для разных категорий некоторой переменной в одинаковом масштабе по горизонтали и вертикали.
* Надо отметить, что в современных версиях SPSS (например, 13), подобная работа может быть произведена достаточно легко (с использованием "группирующей" (Panel) переменной в меню Histogram, например). 
* Поэтому данный синтаксис и вызываемый из него макрос служат, скорее, демонстрацией различных преобразований, которые можно осуществлять с помощью синтаксиса и макросов - А.Б.


SET MPRINT=yes.
* Сгенерируем данные для демонстрации работы.
NEW file.
INPUT PROGRAM.
SET SEED=986431.
LOOP id=1 TO 500.
COMPUTE region=RND(UNIFORM(5)+.5).
COMPUTE job_cat=RND(UNIFORM(5)+.5).

* Суть следующих вычислений - получить разное количество наблюдений и разные интервалы значений числовой переменной в разных категориях.
DO IF UNIFORM(1)<region/5.
COMPUTE value1=RND(region*10+UNIFORM(60)).
COMPUTE value9=RND(job_cat*25+UNIFORM(60+region*2)).
END CASE.
+END IF.
END LOOP.
END FILE.
END INPUT PROGRAM.
EXECUTE.
SAVE OUTFILE='c:\\temp\\data0.sav'.

********************.
* Использование макроса.
********************.

* Для примера вызываем макрос пару раз, и он целиком выполняет требуемые действия.
SET MPRINT=yes.
INCLUDE FILE="c:\\temp\\dograph.sps".

* Строим гистограмму для value1 по разным регионам (region) (допустим, нам нужны 20 столбцов везде).
GET FILE='C:\\temp\\data0.sav'.
!dograph cat=region val=value1 nbbins=22 title="Histograms by Regions".

* Строим гистограмму для value9 по категориям служащих (job_cat) (скажем, нужны 10 столбцов на всех гистограммах).
GET FILE='C:\\temp\\data0.sav'.
!dograph cat=job_cat val=value9 nbbins=10 title="Histograms by Job Categories".

* Однако примерно те же результаты мы бы получили без дополнительных макросов, используя расширенные возможности современной версии SPSS - А.Б.:.
GET FILE='C:\\temp\\data0.sav'.
IGRAPH /VIEWNAME='Histogram' /X1 = VAR(value1) TYPE = SCALE /Y = $count /COORDINATE = VERTICAL /PANEL VAR(region)
 /X1LENGTH=3.0 /YLENGTH=3.0 /X2LENGTH=3.0 /CHARTLOOK='C:\\Program Files\\SPSSEVAL\\Looks\\Chalkboard.clo' /CATORDER VAR(region)
  (ASCENDING VALUES OMITEMPTY) /Histogram  SHAPE = HISTOGRAM CURVE = OFF X1INTERVAL AUTO X1START = 0.
EXE.

* Это мы использовали интерактивные графики.

GRAPH
  /HISTOGRAM=job_cat
  /PANEL ROWVAR=region ROWOP=CROSS .

* Это мы использовали обычные графики.