Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник по SPSS.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
2 Мб
Скачать
☆

2.3. Управление работой пакета

Управление работой пакета происходит в основном через меню, при этом соблюдаются стандарты системы WINDOWS. Каждое окно имеет свое меню, многие команды меню доступны из различных окон.

Основные команды меню SPSS:

FILE

Обеспечивает доступ к файлам данных, к выходным файлам и программам преобразования данных. С файлами данных связываются окна. Если текущее окно соответствует данным наблюдений, то команда FILE обслуживает сохранение и замену данных. Если окно содержит файл синтаксиса (SYNTAX) или выдачи результатов счета (OUTPUT), то обеспечивается обработка файла синтаксиса или выдачи.

EDIT

Обеспечивает редактирование командных файлов, выходных файлов и файлов данных статистических наблюдений и др..

DATA

Обеспечивает операции над данными - сортировку, слияние различных файлов данных, агрегирование, организацию подвыборки из данных. Эта команда имеется только в меню окна редактора данных.

TRANSFORM

Обеспечивает преобразование данных. Эта команда также имеется только в меню окна редактора данных.

STATISTICS

Команда обеспечивает доступ и реализацию методов анализа данных; в 9-й версии SPSS она заменена на команду ANALISIS.

GRAPHS

Графическое представление данных.

UTILITIES

Обслуживающие программы.

WINDOOW

Обеспечивает переключение окон.

HELP

Содержит справочную информацию.

Кроме того, при работе с графиками и мобильными таблицами (PIVOT TABLES) появляются меню специального назначения.

Приведенные команды - далеко не полное описание меню, а лишь наиболее используемая его часть.

Как принято в современном интерфейсе программ, под МЕНЮ на верхней части окна в обычном режиме работы находится строка с панелью инструментов - ряд кнопок, с которыми связаны различные действия пакета. При движении курсора по этим кнопкам, на статусной строке внизу во внешней части экрана высвечивается сведения о назначении кнопки. Ниже см. дополнительную информацию о статусной строке.

Статусная строка

Статусная строка показывает, текущее состояние данных и процесса счета, например:

Transformations pending - задержка преобразований (например, если за преобразованиями не следует команда EXECUTE или статистическая процедура).

Weight on - данные взвешены

Split on - данные для проведения расчетов разбиты на группы

Filter on - включена временная выборка данных

Другая информация.

Ввод данных с экрана

При загрузке пакета появляется таблица, похожая на электронные таблицы. Данные можно вводить непосредственно с экрана. По умолчанию переменные будут иметь имена VAR0001.. Var0002 и т.д. Для изменения имен переменных, назначения их типов и расширенных названий (меток) можно щелкнуть мышкой дважды на существующих названиях столбцов. При этом открывается окно диалога по описанию переменной.

Ниже приводятся команды VARIABLE LABELS, VALUE LABELS, MISSING VALUES, дублирующие основные функции этого диалога.

2.4. Режим диалога и командный режим

Самый простой способ работы в пакете - использование диалоговых окон, возникающих при вызове команд из меню.

Более сложный способ - написание программ на языке пакета. Этот способ предпочтителен при достаточно большом объеме преобразований данных. Исследователь должен иметь перед глазами программу выполненных действий для уверенности в правильности результата. Кроме того полезна возможность копирования и редактирования текста программы преобразования и анализа данных.

Впрочем, важно оптимальное сочетание диалоговых окон и языка.

Диалоговый способ удобен тем, что в диалоговом окне всегда присутствует подсказка о параметрах процедуры преобразования или анализа данных, параметры вводятся в жестко закрепленные поля, поэтому ошибки в нем практически невозможны. Этот способ оказывается полезным также для формирования команды в командном файле. Обычно в диалоговом окне присутствуют “кнопки” OK -непосредственное исполнение команды, PASTE - дописать команду в файл SYNTAX. Благодаря последнему можно писать программы не зная синтаксиса языка программирования в пакете.

Для эффективной работы в пакете необходимо знать и понимать язык программирования SPSS.

Командный режим работы с пакетом

Основные правила написания команд на языке пакета

  • Команды, имена переменных, ключевые слова могут вводиться большими или маленькими буквами.

  • Список последовательно расположенных в активном файле переменных можно задавать в тексте команды, пользуясь сокращением: <первая переменная TO последняя переменная>

  • Ключевые слова могут усекаться до первых трех символов

  • В метках переменных и значений учитывается регистр буквы

  • Команды могут начинаться с любой позиции и должны кончаться символом конца команды (точкой).

  • Продолжение команды начинается с любой позиции строки.

  • Подкоманды разделяются слэшами (/).

  • Имена файлов заключаются в апострофы или в кавычки.

  • Символ "*" в начале строки означает, что на данной строке расположен комментарий, комментарий также должен заканчиваться точкой.

Редактирование программ осуществляется по правилам, схожим с правилами, принятыми в распространенных редакторах системы WINDOWS.

Набрав программу, ее можно запустить полностью или частично (выделив блок), нажав кнопку     либо воспользовавшись пунктом меню RUN. Этот пункт позволяет запустить на счет SPSS-программу.

Среди инструментов в окне редактирования файла SYNTAX имеется кнопка для вызова подсказки - схемы подкоманд команды. Подсказку можно получить, установив курсор на команде и щелкнув на ней левой клавишей мыши указанную кнопку.

Среди команд SPSS можно выделить три основных типа команд - команды описания данных, команды преобразования данных и статистические процедуры.

Команды описания данных устанавливают метки, неопределенные значения, типы переменных, форматы выдачи и др.

Команды преобразования данных предназначены для вычисления новых переменных и модификации имеющихся. Запуск этих команд не вызывает непосредственного преобразования данных, само преобразование происходит после запуска команды EXECUTE. Такая организация расчетов необходима для уменьшения числа обращений к данным на магнитном носителе.

Статистические процедуры предназначены для получения статистик, оценки параметров моделей, получения графиков и др.

Деление это условно. Например, статистические программы также могут вычислять новые переменные, а команды агрегирования данных, как мы увидим ниже, вычисляют статистики для групп объектов. Кроме того, имеются команды управления данными, манипуляции файлами и другие команды, не вписывающиеся в эти три группы команд.

Порядок выполнения команд

При выполнении команд необходимо, чтобы для них были определены данные. Например, если заранее не вычислена переменная x, нельзя запустить команды

Compute y=x+1.

Descriptive var=y.

Команда compute не может вычислить переменную y, так как отсутствует переменная x, поэтому команда Descriptive не будет выполнена, так как отсутствует y.

команды Вызова Get и сохранения данных save.

Хотя для вызова файла данных удобнее непосредственно использовать меню, команда полезна при многократном использовании данных, или использовании части данных. Примеры:

GET FILE='D:\mydir\city' /KEEP=x1 to x10, x15.

GET FILE='D:\mydir\city' /DROP=Z1, z5, z10.

Ключевое слово KEEP в первом примере говорит о том, что будут использованы лишь переменные с x1 до x10 и x15

Ключевое слово подкоманды DROP во втором примере исключает из анализа Z1, z5, z10.

Сохранение данных производится командой SAVE

SAVE FILE='D:\mydir\city' /KEEP=x1 to x10, x15 /compressed.

Подкоманда /compressed необходима для сжатия информации. Подкоманды KEEP и DROP применяются для сохранения и отбрасывания части переменных.

основные Команды описания данных

Команда VARIABLE LABELS назначает ПЕРЕМЕННЫМ метки (расширенные текстовые наименования), которые используются при оформлении листингов.

VARIABLE LABELS V8 'ПОЛ'

V9 'Возраст'.

Синтаксис: за именем переменной указывается в апострофах ее текстовое наименование - метка. Вы должны помечать каждую переменную отдельно. Максимальная длина метки 255 символов.

Команда VALUE LABELS назначает ЗНАЧЕНИЯМ переменных метки - наименования, которые используются при оформлении листингов

VALUE LABELS V1 1 "расчет на свои силы"

2 "пределы"

3 "помощь"/

V8 1 "МУЖЧИНА"

2 "ЖЕНЩИНА"/

x1 to x10 1 "да" 2 "нет" 3 "не знаю".

Синтаксис: за именем переменной или списком переменных и кодом значения в апострофах следует метка. Максимальная длина метки не больше 60 символа. Такое назначение меток может быть определено и для списка переменных. Назначения меток должны разделяться слэшами, в качестве образца используйте приведенный пример.

Команда ADD VALUE LABELS делает то же, что и команда VALUE LABELS, но если VALUE LABELS при повторном запуске замещает все ранее назначенные метки указанных в ней переменных, команда ADD VALUE LABELS назначает метки только указанным кодам.

Команда MISSING VALUES. Как было указано выше, на практике приходится обрабатывать информацию с пропущенными данными. При кодировании неопределенных данных (таких, как ответы "не знаю", отказа ответа) необходимо выбрать символы или цифры - коды отсутствующих значений, и сообщить пакету, что они соответствует пропущенным данным. Это делается командой MISSING VALUES, которая сохраняет в справочной информации файла данных объявленные пользователем коды для неопределенных значений переменной или списка переменных. В дальнейшем, в статистических процедурах и при преобразовании данных эти коды обрабатываются специальным образом. Возможно назначение до 3-х неопределенных кодов или интервал кодов и не более одного кода. Примеры:

MISSING VALUES X Y Z(-1)/ R(9, 99, 999)/ S1 TO S20(999 thru 100000)/ SEX (9).

MISSING VALUES v2 (Lowest thru -1)/ v10 (-1, 900 THRU Highest).

В указанном выше примере -1 назначается кодом неопределенного значения для X, Y и Z; 9, 99, 999 - для R; от 999 до 100000 - коды неопределенности переменных от S1 до S20; 9 - для SEX; от минимального кода до -1 - для v2; -1 и коды от 900 до максимального - для v10.

Ключевое слово thru определяет интервал кодов; Lowest, Highest - минимальный и максимальный коды, соответственно. Возможны сокращения этих ключевых слов до 2-х букв (th, lo, hi).

В команде указывается список переменных (разделять символом "/" необязательно), у которых может встретиться неопределенное значение, и за которым в круглых скобках указан объявленный код. Объекты с такими значениями переменных при выполнении многих пакетных процедур просто исключаются из рассмотрения.

Неопределенные значения, описанные командой MISSING VALUES, называются пользовательскими неопределенными значениями. Однако и в процессе счета могут возникнуть ситуации, когда невозможно осуществить преобразование данных: деление на 0; корень из отрицательного числа; в вычисления попал код отсутствующего значения; при чтении данных нет совпадения типа (число, символ) данных и т.д. Пакет таким неопределенным значениям присваивает специальный системный код, который в данных изображается точкой. Системный код неопределенности в процедурах и командах обозначается ключевым словом SYSMIS.

Объявление пользовательских неопределенных значений можно отменить командой MISSING VALUES с пустыми скобками.

MISSING VALUES X Y Z() R()/ S1 TO S20()/ SEX().

основные команды преобразования данных

Для преобразования данных в меню окна редактора данных имеется пункт TRANSFORMATIONS, и заготовки команд можно получать, пользуясь этим пунктом.

Преобразования в анализе данных одна из самых трудоемких частей работы. Специалист, освоивший технику преобразования данных, имеет существенный шанс для получения содержательных результатов. На практике в большинстве случаев можно обойтись следующими командами:

COMPUTE - арифметические операции над переменными;

IF - условные арифметические операции над переменными;

RECODE - перекодирование переменных;

COUNT - подсчет числа заданных кодов в списке переменных.

Команды COMPUTE и IF

Команда COMPUTE вычисляет новую переменную или заменяет существующую.

Пусть, например, для приведенной в приложении 1 анкеты требуется рассчитать, сколько лет респондент проживал за Уралом (см. анкету в приложении 1).

СOMPUTE Y=V15+V16+V17.

В матрице данных создается новая переменная Y.

В команде указывается имя создаваемой переменной, за которым после обязательного знака "=" следует арифметическое выражение. Создаваемая переменная может быть функцией от других переменных.

После выполнения команды в матрицу данных в активный файл будет дописан столбец с новым именем. Если какой-либо член арифметического выражения не определен, то результатом будет системный код отсутствующего значения (SYSMIS). Например, если в команде COMPUTE Y=X-5/Z. значение переменной X не определено в соответствии с командой MISSING VALUES или имеет системный код неопределенности или, если Z=0, переменной Y присваивается системный код неопределенности SYSMIS.

Команда IF при выполнении указанного в команде условия создает новые переменные или заменяет существующие переменные арифметическими выражениями

IF (R>D OR (R>=E AND B>0))STATUS=1.

IF (STATE = 'IL') COST=COST +0.07*COST.

В ней указывается логическое выражение, за которым следует арифметическое присвоение. Логическое выражение должно быть заключено в круглые скобки. Логическое выражение в команде IF может быть ложно не только в результате выводов с позиций формальной математической логики, но в случае, если в выражении встретилось неопределенное значение. Для оператора присваивания в случае неопределенных значений переменных действуют те же правила, что и в команде COMPUTE.

В качестве логического выражения может быть и обычная числовая переменная или числовая константа. Считается, что она принимает значение "истина", если она равна 1, в противном случае ее значение - "ложь".

Область действия IF - один оператор присваивания, приведенный в тексте команды.

Пусть, например, требуется вычислить переменную D, характеризующую отклонение веса (W) от нормального (для мужчин (код значения переменной P "пол" равен 1) нормальный вес должен быть равен величине роста минус 100, для женщин (p=2) - величине роста минус 105).

IF (P = 1) d = W - (R-100).

IF (P = 2) d = W - (R-105).

В результате выполнения этих команд появляется переменная D, которая вычисляется в зависимости от значений переменной P.

В диалоговом окне содержится подробный список функций и операторов. Чтобы читатель имел представление о возможностях команд IF и COMPUTE, ниже мы представим их основные типы.

Основные функции и операторы команд COMPUTE и IF:

Арифметические операторы + , -, *, / в этих командах употребляются обычным порядком, две звездочки ** означают возведение в степень.

Результатом логической операции будет 1, если логическое выражение истинно и 0, если выражение ложно (логическое выражение (v9>30) равно 1, если v9>30, и равно 0, если v9<=30).

Допустимы операторы сравнения <, <=,<, <=, ~=, где последний оператор означает "не равно" и логические операторы ~ -отрицание (not), & - логическое "и" (and) и логическое "или" - | (or).

При вычислении логического выражения, если порядок выполнения не задан скобками, сначала выполняются арифметические операции, затем сравнения, затем логические операции. Приоритетность выполнения операций - естественна, как обычно определяется в математике и языках программирования, но следует заметить, что операции сравнения находятся на одном уровне. В частности значение выражения (5>3>2) ,будет равно 0 ("ложь"), так как в соответствии с порядком выполнения операций в этом выражении (5>3>2)=((5>3)>2)=(1>2)=0 !.

Наряду с арифметическими операторами в арифметических выражениях могут использоваться логические выражения, что позволяет достаточно компактно реализовывать преобразования данных:

Compute x=(v9>30)+v10>x+z.

Эта хитроумная команда превращает вначале выражение (v9>30) в 0 или 1 в зависимости от его истинности, затем производит вычисления левой ( (v9>30)+v10 ) и правой ( x+z )частей неравенства и в зависимости от результата сравнения присваивает переменной x значение 0 или 1.

Кроме того, имеется возможность использовать:

Арифметические функции, такие как ABS - абсолютное значение, RND - округление, TRUNC - целая часть, EXP - экспонента, LN натуральный логарифм и др. Например,

Compute LNv9=LN(V9).

Статистические функции: SUM сумма, MEAN - среднее, SD стандартное отклонение, VARIANCE - дисперсия, MIN -минимум и MAX - максимум. Например, команда

Compute S=меаn(d1 to d10).

Вычисляет переменную, равную среднему валидных значений переменных d1,…,d10.

Функции распределения, например:

CDF.CHISQ(q,a) - распределения хи-квадрат, CDF.EXP(q,a) - экспоненциального распределения, CDF.T(q,a) - Стьюдента и др. (q - аргумент функции распределения, a - параметр соответствующего распределения). Команда

Compute y=CDF.T(x,10).

Вычисляет переменную Y, значения которой суть значения функции распределения Стьюдента с 10 степенями свободы от значений переменой x.

Если есть подозрение, что X имеет именно такое распределение, то переменная y должна иметь равномерное на отрезке (0,1) распределение. Благодаря этому можно проверить предположение о распределении X.

То же самое можно сказать о других видах распределений.

Обратные функции распределения, например,

IDF.CHISQ(p,a) - обратная функция распределения (по сути дела квантиль) хи-квадрат, IDF.F(p,a,b) - квантиль распределения Фишера, IDF.T(p,a) - квантиль распределения Стьюдента и др. (p - вероятность, a и b - параметры соответствующего распределения). Например,

Compute z= IDF.CHISQ(X,10).

Вычисляет квантиль порядка X распределения хи квадрат с 10 степенями свободы.

Такие функции полезны для вычисления значимости статистик в массовом порядке, например значимость отклонения среднего возраста по городам, в которых произведен сбор данных.

Датчики случайных чисел, например:

RV.LNORMAL(a,b) - датчик лог-нормального распределения. RV.NORMAL(a,b) - датчик нормального распределения, RV.UNIFORM(a,b) - датчик равномерного распределения (a, b - параметры соответствующего распределения).

Функция, дающая значения переменной на предыдущем объекте LAG. Пример использования (см. рис.1.1, данные "Проблем и жалоб")

COMPUTE age1 = LAG(age) .

COMPUTE age2 = LAG(age,3) .

Execute.

Указанное преобразование дает сдвиг информации, показанный на рис.2.1.

N Анкеты

Пол SEX

Возраст (Age)

Возраст (Age1)

Возраст (Age2)

1

1

20

2

1

25

20

3

2

34

25

4

1

18

34

20

.

.

.

Рис.2.1. Сдвиг, произведенный функцией LAG (данные "Проблем и жалоб")

Функция полезна для анализа временных рядов, при анализе анкетных данных - для поиска повторов объектов, других вспомогательных операций.

Логические функции:

RANGE(v,a1,b1,a2,b2,…) - 1, если значение V попало хотя бы в один из интервалов [a1,b1], [a2,b2],… .

ANY(v,a1,a2,…) - 1, если значение V совпало хотя бы с одним из значений a1, a2, … .

Кроме того, в пакете имеются строчные функции, функции обработки данных типа даты и времени.

Работа с неопределенными значениями

Вообще говоря, если в арифметическом выражении встретится переменная с неопределенным значением, результат будет не определен, однако значения выражения

0*неопределенное значение

и

0/ неопределенное значение

приравниваются к нулю.

Функции для неопределенных значений

VALUE - функция игнорирования назначения пользовательского неопределенного значения;

MISSING - логическая функция для обнаружения пользовательского или системного отсутствующего значения; ее значения - истина (единица), если значение аргумента не определено, ложь (нуль) - в противном случае;

SYSMIS - то же, но только для системных неопределенных значений;

NMISS - число неопределенных значений в списке аргументов;

NVALID - число определенных значений в списке аргументов

Работа с пользовательскими неопределенными значениями

В данных по вопросу о Курильских островах переменные V15, V16, v17 означают время проживания в Западной Сибири, Восточной Сибири и на Дальнем Востоке. Допустим, для удобства проведения текущих расчетов нулевые коды этих переменных объявлены неопределенными

Missing values V15, V16, v17 (0).

Тогда вычисление времени проживания за Уралом командой

COMPUTE Y = V15 + V16 + v17.

приведет в большинстве случаев к неопределенным значениям Y.

В этом случае функция VALUE позволит работу с пользовательскими неопределенными значениями, как с определенными:

COMPUTE Y = VAL(V15) + VAL(V16)+VAL(V17).

Работа с функциями Missing и Sysmis.

В РМЭЗ (российском мониторинге экономики и здоровья), волна 2, имеется переменная BO2a - ответ на вопрос "Сколько времени в течение последних 7 дней Вы потратили на работу …?", причем коды 997, 998, 999 соответствуют ответам "ЗАТРУДНЯЮСЬ ОТВЕТИТЬ", "ОТКАЗ ОТ ОТВЕТА", "НЕТ ОТВЕТА". Имеет смысл эти коды объявить пользовательскими неопределенными, а системные неопределенные коды перекодировать в 0. Делается это следующими командами.

MISSING VALUES BO2a (997, 998, 999).

If (SYSMIS(BO2a)) BO2a=0.

Execute.

Аналогичным путем в других обстоятельствах можно употребить и функцию Missing.

Команда RECODE

Назначение команды: перекодирование существующей переменной. Формат команды:

RECODE V9 (0 THRU 25 = 1) (26 THRU 45 = 2) (ELSE =3).

или

RECODE V9 (0 THRU 25 = 1) (26 THRU 45 = 2) (ELSE =3) INTO W9.

Указывается переменная или список переменных со спецификациями в круглых скобках. Перекодируемые переменные в списке разделяются слэшами (/). По этой команде значения перечисленных переменных в указанных пределах будут заменены числами, следующими за знаком равенства.

Ключевое слово INTO указывает, в какую переменную (список переменных) переслать результат перекодирования, при этом соответствие между исходным списком переменных и переменными результата устанавливаются естественным образом.

Список переменных можно задать через ключевое слово TO, но всегда следует указывать переменные в том порядке, в каком они вводились либо вычислялись в программе.

Ключевые слова для задания входных значений команды RECODE:

LOWEST или LO - наименьшее значение переменной;

THRU или THR - значения переменной из указанного диапазона;

HIGHEST или HI - наибольшее значение переменной;

MISSING - отсутствующее значение, определяемое пользователем;

SYSMIS - отсутствующее значение, определяемое системой;

ELSE -все не специфицированные значения (не включаемые в SYSMIS).

Результат перекодирования - обычно код или системный код неопределенности SYSMIS, если вместе с ключевым словом ELSE употребляется слово COPY, то результатом становятся значения не включенные в списки перекодирования. Слово COPY имеет смысл употреблять, когда результат перекодирования записывается в другую переменную:

Recode educat (1=2)(2=1)(else=copy) into educat1.

Без (else=copy) в переменную educat1 будут внесены лишь перекодированные значения.

Заметим, что если переменная назначения за ключевым словом INTO ранее существовала, то она не изменит своих значений, если команда Recode не заносит в нее никаких кодов.

Среди списка значений для переменной, имеющей неопределенные значения, могут стоять слова MISSING и SYSMIS.

RECODE K9 ТO K12 (0 THRU 25 = 1)(MISSING = 10)(SYSMIS = 5).

Команда RECODE позволяет также интервалировать, группировать значения.

RECODE V11 V13 ( 8, 9, 2, 4, 7 = 1) (else=2).

Рис.2.2. Перекодирование данных

Что происходит при этом с матрицей данных? Как видно из приведенной выше схемы, происходит замена значений в соответствии с приведенными в команде списками значений.

Рассмотрим примеры перекодирования кодов неопределенности. При ответах на вопросы анкеты "Курильские острова" (приложение 1) кто-то не ответил на первый вопрос, кто-то сказал "Затрудняюсь". Объединим этих респондентов. Это можно осуществить командой

RECODE V1 (SYSMIS = 4). и, таким образом, перекодировать системный код неопределенности в код 4. Можно провести обратную операцию:

RECODE V1 (4 = SYSMIS).

Этой командой код 4 перекодируется в системный код неопределенности. При обработке данных по этому признаку объекты, для которых значение V1 было когда-то равно 4, будут исключены из статистической обработки.

Тот же эффект можно получить, воспользовавшись командой

MISSING VALUES V1(4).

При этом таблица данных не изменится; но во внутренней для SPSS информации сохранятся сведения о том, что указанный в данной команде код является пользовательским кодом неопределенности для V1.

В SPSS запрещено писать MISSING справа от знака равенства, т.е. команда

RECODE V1(4=MISSING). недопустима!

Имеется еще вариант выполнения команды RECODE с созданием новой переменной. Для этого используется уключевое слово INTO:

RECODE V11 ( 8, 9, 2, 4, 7 = 1) (else=2) INTO W11.

При таком использовании команды в большинстве случаев необходимо перечислять все коды исходной переменной, поскольку не указанные значения переходят в системные неопределенные.

Команда COUNT

Команда СOUNT подсчитывает число появлений указанных в ней кодов в заданном списке переменных и размещает результат в новую переменную или заменяет содержимое существующей.

Пусть нам необходимо вычислить число разумных вариантов решения проблемы островов (неальтернативный вопрос 7 анкеты о Курильских островах), а затем подсчитать число ответов на все неальтернативные вопросы анкеты.

COUNT nofvari= v7s1 to v7s7 (1 thru 11)/

nofans = v3s1 to v3s8 (1 thru 8) v5s1 to v6s8 (1 thru 8).

Еще пример, по результатам сессии (объекты - студенты, переменные - результаты экзаменов по информатике (I), математике (M), микроэкономике (E), и социологии (S)) необходимо создать переменную M45, в которой будет число пятерок и четверок, встречающихся в перечисленных переменных.

COUNT M45 = I M E S (4,5).

В команде указывается имя переменной, куда будет заноситься результат подсчета, затем, после обязательного знака "=", приводится список переменных, для которых нужно вести подсчет, и далее в круглых скобках приводится список значений переменных, число которых следует пересчитать. Значения строковых переменных должны быть заключены в апострофы. Ключевое слово SYSMIS используется для подсчета системных отсутствующих значений; MISSING позволяет подсчитать все отсутствующие значения - и пользовательские и системные. Команда допускает также ключевые слова LOWEST, HIGHEST и THRU.

Условное выполнение команд.

Команды DO IF, ELSE IF, ELSE и ENDIF используются для того, чтобы сделать преобразование переменных на подмножествах объектов сразу несколькими командами.

Пусть, например, в файле "Курильские острова" требуется проинтервалировать возраст (v9), но так, чтобы интервалы отделяли пенсионный возраст, который различен для мужчин и женщин (v8):

Таблица 2.1. Интервалы для мужчин и женщин

Интервалы возраста

1

2

3

4

5

Мужчины

до 18

до 33

до 45

До 60

>60 лет

Женщины

до 18

до 33

до 45

До 55

>55 лет

DO IF (v8=1).

Recode v9 (lo thru 18=1)(18 thru 33=2)(33 thru 45=3)(45 thru 60=4)(60 thru hi=5) into w9.

Else if (v8=2).

Recode v9 (lo thru 18=1)(18 thru 33=2)(33 thru 45=3)(45 thru 55=4)(55 thru hi=5) into w9.

END IF.

Здесь для мужчин в переменной w9 получаются одни интервалы значений, для женщин - другие. Если бы не было неопределенных значений v8, можно было бы вместо "Else if (v8=2)." использовать просто "Else".

Заметим, что команды RECODE и COUNT непосредственно не могут выполняться на подвыборках объектов, но с командами DO IF и END IF их выполнение возможно. Именно это используется при задании таких условных команд из диалоговых окон.

Напомним, что команды, запущенные без команды Execute, накапливаются в памяти, но не выполняются (Transformations pending в статусной строке). Поэтому, из-за ошибки между DO IF и END IF, в память попадает только DO IF. После исправления ошибки и запуска программы оказывается больше запущенных команд DO IF, чем END IF, и сообщение об ошибке повторяется. Это следствие того, что команды IF, COMPUTE, COUNT, RECODE преобразуют данные не сразу, а после запуска команды EXECUTE.

Для того, чтобы справиться с этой ситуацией, следует запустить отдельно команду

CLEAR TRANSFORMATIONS.

Эта команда очистит память от невыполненных команд.

Команда RANK

Анализируя доходы населения, мы можем работать непосредственно с доходами, вычисляя средние, корреляции и др., можем изучать иерархию семей или индивидуумов по этой переменной. Для этого нужно перейти к порядковым номерам объектов, упорядоченным по доходам. Такие порядковые номера называются рангами. Иерархию семей можно изучать, определив для каждой семьи долю (процент) семей, которые беднее ее. Наконец при этом анализе, можно разбить семьи по уровню доходов на равные 5 частей (квентили) или на 10 частей (децили). Ранги, процентили, n-тили суть преобразованные в соответствии с ранжированием объектов переменные.

Команда RANK весьма полезна, когда нужно перейти от исходных значений любых количественных переменных к рангам объектов, процентилям, децилям и квентилям и др., а может быть перекодировать переменную в соответствии с нормальным распределением.

Пусть нам необходимо получить переменные "ранг по доходам", "процентили по доходам" и "квинтильные группы по доходам".("Курильские" данные) Команда RANK создаст нам нужные переменные:

RANK VARIABLES=v14 (A) /RANK into rangv14/NTILES (5)into v14_5 /PERCENT percv14/PRINT=YES /TIES=MEAN .