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
71
72
73
74
Решение номер: 23953. Создано 7 марта 2002 года. 
Вопрос: вывод графика функции, заданной пользователем. 
Описание вопроса: можно ли с помощью SPSS построить график функции, заданной пользователем? 
Предмет вопроса: SPSS может лишь отображать данные из файла, функции рисовать не может.
Описание решения: 
Действительно, SPSS может только отображать данные. Однако, макрос "fnplot", приведённый ниже, 
может сгенерировать необходимые данные согласно функции, заданной пользователем и затем отобразить их.

Сохраните открытый файл данных перед запуском макроса, так как рабочий файл будет заменён.

Макрос позволяет пользователю: 

* задать любое выражение, допустимое через команду COMPUTE в качестве уравнения отображаемой функции; 
* задать минимум и максимум аргумента x; 
* задать число наблюдений для отображения на графике; 
* задать имена для переменной-аргумента и переменной, содержащей значения функции. 

Во-первых, сохраните макрос из конца этого файла в файл с именем Fnplot.sps. 

Загрузите макрос в память SPSS: 
Это может быть сделано двумя способами. Либо откройте файл в окне синтаксиса и выполните команду меню Run->All и закройте окно синтаксиса (чтобы избежать случайных изменений файла), либо
используйте команду INCLUDE как это показано ниже. 

Запустите макрос: 
Когда макрос будет загружен в память, вы можете запускать его из окна синтаксиса SPSS столько раз, сколько потребуется.
Откройте окно синтаксиса, запишите команду вызова макроса и используйте меню Run для запуска макроса. 

Пример того, как можно использовать INCLUDE для загрузки макроса и несколько
вариантов его запуска приводятся ниже. 


* Загружаем макрос FNPLOT через INCLUDE. 
* Измените путь к файлу с макросом, если необходимо. 
INCLUDE 'C:\\Program Files\\SPSS\\Fnplot.sps' . 

* Пример вызова макроса fnplot. 
* Перед выполнением этих команд, сохраните "тело" макроса в файл fnplot.sps.. 
* . 
fnplot . 
fnplot 'x ** 2 '. 
fnplot "sin(x)" . 
fnplot 'sin(theta)' /varname='theta' . 
fnplot 'sin(theta)' /varname='theta' /cases=1001 /min=0 /max=6.283 /fnname=sin . 
fnplot 'pdf.normal(x,0,1)' /cases=1001 /min=-3 /max=3 /fnname=z . 
*. 


*. 
* То, что ниже, следует сохранить в файл Fnplot.sps' .................................. 
* . 
DEFINE fnplot (!POSITIONAL !DEFAULT('#x') !CHAREND('/') 
 /min = !DEFAULT(0) !CHAREND('/') 
 /max = !DEFAULT(10) !CHAREND('/') 
 /cases = !DEFAULT(101) !CHAREND('/') 
 /varname = !DEFAULT('x') !CHAREND('/') 
 /fnname = !DEFAULT('fn_x') !CHAREND('/') 
	) . 
new file. 
input program. 
compute #inc = ( !max - !min )/ ( !cases - 1 ) . 
loop #i = 1 to !cases. 
+ compute #x = !min + (#i - 1) * #inc . 
+ compute !UNQUOTE(!varname) = #x . 
+ compute !UNQUOTE(!fnname) = !UNQUOTE(!1) . 
+ end case. 
end loop. 
end file. 
end input program. 
variable label !UNQUOTE(!fnname) !QUOTE(!UNQUOTE(!1)) . 
execute. 
IGRAPH /VIEWNAME='Function Plot' 
  /X1 = VAR(!UNQUOTE(!varname)) /Y = VAR(!UNQUOTE(!fnname)) 
  /SCATTER COINCIDENT = NONE . 
!ENDDEFINE .