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
*(Вопрос) Мне требуется добавить в файл данных 2 новые переменные. Одну, содержащую
нижнюю границу доверительного интервала для среднего значения переменной из файла данных и другую,
содержащую верхнюю границу того же интервала.

*(Ответ) Автор: Raynald Levesque, размещён в SPSSX-L 03.06.2003.

*//////////////.
DEFINE !AddCInt (vname=!TOKENS(1) /conf=!TOKENS(1) /fname=!TOKENS(1))

SET MPRINT=yes.
GET FILE=!fname.
/* следующая команда просто для проверки результата работы макроса (посмотреть на доверит. интервал) */

SELECT IF NOT MISSING(!vname).
EXAMINE
  VARIABLES=!vname
  /COMPARE GROUP /PLOT=NONE
  /STATISTICS DESCRIPTIVES
  /CINTERVAL !conf
  /MISSING LISTWISE
  /NOTOTAL.

COMPUTE nobreak=1.
AGGREGATE OUTFILE=*
	/BREAK=nobreak
	/N=n /sd_var=SD(!vname) /mean_var=MEAN(!vname).
COMPUTE se_mean=sd_var/SQRT(n).


COMPUTE lowCI=mean_var - se_mean * IDF.T(1-(100-!conf)/200,n-1).
COMPUTE upCI =mean_var + se_mean * IDF.T(1-(100-!conf)/200,n-1).
VARIABLE LABELS lowCI !QUOTE(!CONCAT("НГ ",!conf,"% ДИ для среднего значения ",!vname)).
VARIABLE LABELS upCI !QUOTE(!CONCAT("ВГ ",!conf,"% ДИ для среднего значения ",!vname)).
SAVE OUTFILE='c:\\temp\\temp.sav' /KEEP=nobreak lowCI upCI.

GET FILE=!fname.
COMPUTE nobreak=1.
MATCH FILES FILE=*
	/TABLE='c:\\temp\\temp.sav' 
	/BY=nobreak.
EXECUTE.
SET MPRINT=no.
!ENDDEFINE.
*//////////////.

** Пример 1 (95% ДИ для большой выборки).
!addCInt 	vname=salary 
		conf=95 
		fname='c:\\Program Files\\SPSS\\Employee data.sav'.


** Пример 2 (90% ДИ для малой выборки).
GET FILE='c:\\Program Files\\SPSS\\Employee data.sav'.
N OF CASES 15.
SAVE OUTFILE='c:\\temp\\eee data.sav'.
!addCInt 	vname=salbegin
		conf=90 
		fname='c:\\temp\\eee data.sav'.

** Пример 3 (95% ДИ при наличии пропущенных значений).
GET FILE='c:\\Program Files\\SPSS\\Employee data.sav'.

* "Сделаем" несколько пропусков.
IF UNIFORM(1)<.2 salbegin=$SYSMIS.

SAVE OUTFILE='c:\\temp\\eee data2.sav'.
!addCInt 	vname=salbegin
		conf=95 
		fname='c:\\temp\\eee data2.sav'.