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
* Как мне сравнить (наложить) 2 гистограммы?

******************************.
* Первый метод.
******************************.
* Автор ответа: Raynald Levesque, размещено в новостной группе 13.02.2003.

GET FILE='c:\\program files\\spss\\employee data.sav'.
* В данном примере сопоставляются распределения начальных (salbegin) и текущих (salary) заработков. Делим на интервалы в 5000 единиц.
COMPUTE beg=TRUNC(salbegin/5000).
COMPUTE sal=TRUNC(salary/5000).

*Считаем частоты каждого интервала для каждой переменной с помощью команды агрегирования.
SORT CASES BY beg.
AGGREGATE OUTFILE='c:\\temp\\beg.sav'
	/PRESORTED
	/BREAK=beg
	/nbeg=n.
SORT CASES BY sal.
AGGREGATE OUTFILE=*
	/PRESORTED
	/BREAK=sal
	/nsal=n.

*Сливаем файлы с частотами так, чтобы одинаковые уровни заработков находились в одном наблюдении.
MATCH FILES FILE=*
	/RENAME=(sal=beg)
	/FILE='c:\\temp\\beg.sav'
	/BY=beg.

* Отображаем два распределения с помощью линейного графика.
GRAPH
  /LINE(MULTIPLE)= VALUE( nbeg nsal ) BY beg .


******************************.
* Второй метод.
******************************.

Date:         Fri, 23 Jun 2000 20:38:37 -0400 
Sender:       "SPSSX(r) Discussion" <SPSSX-L@LISTSERV.UGA.EDU> 
From:         Raynald Levesque <rlevesque@VIDEOTRON.CA> 
Subject:      Re: наложенные гистограммы 

Привет, Артур!   Вот возможное решение:   

*Сгенерируем файл данных для демонстрации работы синтаксиса.   
NEW file. 
SET SEED=975316421. 
INPUT PROGRAM. 
- LOOP id=1 TO 50. 
-   COMPUTE income=RV.NORMAL(35,5).  
-   COMPUTE group=UNIFORM(1)>.5.  
-   END CASE. 
- END LOOP. 
- END FILE. 
END INPUT PROGRAM. 
EXECUTE. 
SAVE OUTFILE='temp.sav'.     
GRAPH  /HISTOGRAM=income . 

* далее мы смотрим на получившуюся диаграмму для оценки общего распределения переменной. В данном случае мы видим, что значения переменной лежат в интервале примерно от 25 до 50 единиц. Изменяя соответствующим образом параметры синтаксиса, приведённого ниже, мы управляем количеством интервалов, которые будут выведены на совмещённой гистограмме. В данном случае, прогоняя переменную cnt от 25 до 50 единиц мы задаём количество интервалов, а с помощью функции RANGE определяем ширину каждого интервала, которая в данном случае составит 5 единиц, т.е. центральная точка интервала +/- 2.5.

LOOP cnt=25 TO 50 BY 5. 
- IF RANGE(income,cnt-2.5,cnt+2.4999) income1=cnt. 
END LOOP. 
EXECUTE.   
GRAPH   
  /BAR(GROUPED)=COUNT BY income1 BY group   
  /MISSING=REPORT.