3.Spss. Создание переменных с вычислением его начальных значений
Довольно часто при анализе данных нужно работать с переменными, значение которых можно вычислить по значению других переменных. Например, при анализе состава клеток крови можно ввести количество клеток того или другого типа, а потом перевести их в доли от общего числа. При этом не надо делать это «руками» — SPSSможет сделать это сам.
С помощью команды Transform/Compute можно вычислять переменные на основе уже введенных переменных. Имя новой переменной должно быть записано в строкеTarget Variable , при этом, следует иметь в виду, что, если имя переменной совпадает с уже существующей, то данные новой переменной будут записаны на место старой. В окнеNumericExpression: формируется формула для расчета переменной. В столбце слева можно выбрать переменные, которые участвуют в вычислении и перенести в формулу с помощью стрелки вправо 
, знаки математических функций и цифры расположены в центре, а справа список функций, которые также могут быть использованы в вычислении.
Обратите внимание:
- если будут добавляться новые случаи или меняться исходные данные в таблице, то автоматического перевычисления в новой переменной происходить не будет – его надо делать еще раз.
- при закрытии SPSSформулыTransform/Computeзабываются, поэтому имеет смысл хранить их в специальном текстовом файле (формулы – текст, который можно копировать, вставлять и править)
Откройте файл, созданный ранее, с данными на «виртуалов». Выполните команду Transform/Computeи по имеющимся данным оросте ивесе вычислимросто-весовой коэффициенткаквес, деленный на квадратростав метрах. Так какростзадан в сантиметрах, то при вычислении нужноростразделить на 100.
Проанализируйте полученные значения (норма росто-весового индекса – от 23 до 26). Откройте файл Pnevmo.sav, сохраните его под своим именем в своей папке, вычислите новую переменнуюage10, получающуюся округлением возраста (переменнаяageofpatient) до 10 лет. Для округления возраста используйте функциюTRUNC.
Но функция TRUNCпозволяет округлять только с фиксированным шагом, тогда как часто нужно вычислять групповую принадлежность с переменным шагом. Например, переменную возраст нужно разбить на группы: 1 группа – до 17 лет включительно, 2 – 18-27, 3 – 28-59, 4 – 60 и старше. Для этого создайте переменную возгр, вычислив ее значения по формуле: 1+(age>17)+(age>27)+(age>59).
Из переменных sexofpatientи «умер» сделайте новую переменную ПОЛИУМЕР по формуле 10*sex+умер. Выясните, какое значение соответствует умершим мужчинам, какое – выжившим мужчинам, какое – умершим женщинам и какое – выжившим женщинам. 
4. Вычисление частот в Excel.
Расчет частоты значений переменной

Расчет частоты значений переменной – простая базовая операция статистического анализа. Если при Nнаблюдениях событии наблюдалось вnслучаях, то частота события равнаn/N. Для проведения расчета частот откройте электронную таблицу Excel. Заполните ее в соответствии с образцом: Например, общее число студентов 45 запишите в ячейку A2, число студентов сдавших зачет вовремя 12 запишите в ячейкуB2. В ячейкуC2 запишите формулу расчета частоты успеха: =B2/A2. После нажатия клавишиEnterв ячейке С2 будет записан результат счета. Если поставить курсор в ячейку с полученным числом, то в строке формул появится формула.
Вычисление новых переменных
Для проведения анализа часто бывает необходимо выполнить преобразование данных. На основе первоначально собранных данных можно создать новые переменные и изменить кодирование. Подобные преобразования называются модификацией данных.
В SPSS существует много возможностей для модификации данных. К важнейшим из них относятся:
- Вычисление новых переменных путем использования различных арифметических выражений (математических формул)
- Подсчет частоты появлений определенных значений
- Перекодирование значений
- Вычисление новых переменных при выполнении определенного условия
- Агрегирование данных
- Ранговые преобразования
- Вычисление весов наблюдений
Путем вычислений в SPSS можно образовать новые переменные и добавить их в файл данных. Так, например, в медицинском исследовании (см. главу 9, файл hyper.sav) в два момента времени (до и после приема лекарства) проводились измерения систолического кровяного давления, которые фиксировались в переменных rrs0 и rrsl.
Если нас интересует изменение давления между двумя этими моментами, было бы глупо каждый раз вычислять разницу двух значений и вручную вводить ее в новую переменную. Эту работу можно переложить на компьютер, который сделает ее быстро и, главное, без ошибок. Для этого поступите следующим образом:
- Загрузите файл hyper.sav в редактор данных.
- Выберите в меню команды Transform (Преобразовать) Compute. (Вычислить) Откроется диалоговое окно Compute Variable (Вычислить переменную).
Рис. 8.1: Диалоговое окно Compute Variable
В поле Target Variable (Выходная переменная) указывается имя переменной, которой присваивается вычисленное значение. В качестве выходной переменной может служить уже существующая или новая переменная. В поле Numeric Expression (Численное выражение) вводится выражение, применяемое для определения значения выходной переменной. 3 этом выражении могут использоваться имена существующих переменных, константы, арифметические операторы и функции.
- Введите в поле Target Variable имя rrsdiff, а в поле Numeric Expression формулу rrs0— rrsl. Зту формулу можно ввести либо вручную, либо используя список переменных и клавиатуру диалогового окна. Кнопка с треугольником позволяет копировать в поле формулы имена переменных, а кнопки клавиатуры — вставлять цифры и знаки.
- Щелкните на кнопке Type&Label. (Тип и метка).
Откроется диалоговое окно Compute Variable: Type and Label (Вычислить переменную: Тип и метка).
Здесь можно задать метку для новой переменной rrsdiff. В поле Label введите текст Изменение сист. кровяного давления и щелкните на кнопке Continue.
- В диалоговом окне Compute Variable щелкните на кнопке ОК.
Рис. 8.2: Диалоговое окно Compute Variable: Type and Label
Примечание: Выбранные опции соответствуют следующему командному синтаксису:
COMPOTE rrsdiff = rrs0 - rrsl.
VARIABLE LABELS rrsdiff = "Изменение сист. кровяного давления".
EXECUTE.
Общий формат команды COMPUTE имеет следующий вид:
COMPUTE целевая_переменная = арифметическое_выражение.
Команда EXECUTE считывает данные и выполняет предшествующие команды преобразования. В файл данных добавляется новая переменная rrsdiff. Теперь ее, как и прочие переменные, можно применять для вычислений. Для SPSS нет разницы, введены ли значения переменных через редактор данных или вычислены по формуле.
Вместо слова формула мы будем использовать в дальнейшем понятие численное выражение. При формулировке таких численных выражений нужно соблюдать определенные правила, которые представлены в следующем разделе.
Вычисление новых переменных
Вычисление новых переменных может быть поставлено в зависимость от определенных условий. Во втором разделе этого параграфа приводится практический пример использования условного вычисления — создание индекса.
Формулировка условий
В файле studium.sav (психологическое состояние и социальное положение студентов), в частности, содержатся переменные alter (возраст), fach (специальность), semester (количество семестров) и sex (пол).
Допустим, нам требуется образовать из переменных alter и semester новую переменную, которая будет показывать возраст студента в начале обучения. Кроме того, это значение следует вычислять только для старших курсов (semester>6).
- Загрузите файл Studium.sav и выберите команды меню Transform (Преобразовать) Compute. (Вычислить)
- В открывшемся диалоговом окне в поле выходной переменной (см. раздел 8.1) задайте, например, studbeg, а для численного выражения — alter — semester /2.
- Щелкните на кнопке If. (Если). Откроется диалоговое окно Compute Variable: If Cases (Вычислить переменную: Если выполняется условие). Измените начальную настройку Include all cases (Включить все наблюдения) на Include if case satisfies condition (Включить, если для наблюдения выполняется условие). В поле под этой опцией введите условие: semester>6.
- Закройте это диалоговое окно, щелкнув на кнопке Continue, и диалог Compute Variable кнопкой ОК.
Теперь в файле данных появилась переменная studbeg, которая в случаях, когда заданное условие не выполняется, содержит системное отсутствующее значение.
Примечание: Выбранные опции соответствуют следующему командному синтаксису:
IF (semester > 6) studbeg = alter - semester /2 .
EXECUTE .
Ниже приведен другой типичный пример условного вычисления новых переменных.
Если, к примеру, требуется определить, значительно ли отличаются юристы (fach = 1) от гуманитариев (fach = 3) по количеству семестров, которые прозанимались эти студенты, можно использовать переменную fach как группирующую и сравнить результаты U-теста по Манну и Уитни для переменной semester при значениях fach=l и fach=3 (см. раздел 14.1). Если же требуется сравнить юристов-мужчин с гуманитариями-мужчинами, то оба набора значений надо дополнительно ограничить условием sex = 2 (см. раздел 7. 1).
Однако, когда надо сравнить, например, юристов-мужчин со студентками-гуманитариями, возникает проблема — в этом случае появляются две группирующих переменных. В подобных ситуациях помогает создание вспомогательной переменной. Этой переменной присваивается значение 1, когда наблюдение соответствует студенту-юристу, и 2 — когда студентке гуманитарной специальности. Затем вспомогательная переменная используется как группирующая при проведении теста по Манну и Уитни.
- Чтобы построить такую переменную, выберите в меню команды Transform (Преобразовать) Compute. (Вычислить)
- Задайте выходную переменную, например, gruppe, а в поле численного выражения введите значение 1. В диалоговом окне If. укажите условие fach=l and sex=2.
- Закройте диалоги кнопками Continue и ОК.
- Повторите процесс; снова задайте выходную переменную gruppe, но численное выражение 2. В диалоге If. сформулируйте условие fach=3 and sex=l. На вопрос Change existing variables?, который появляется после закрытия диалогов, ответьте утвердительно (ОК).
В редакторе данных появится новая переменная gruppe, которая в наблюдениях, соответствующих сформулированным условиям, имеет значения ] или 2, Эту операцию можно выполнить быстрее при помощи командного синтаксиса SPSS.
- Для этого командами меню File (Файл) New (Создать) Syntax (Синтаксис) откройте редактор синтаксиса и введите следующие команды:
IF (fach = 1 and sex = 2) gruppe = 1.
IF (fach = 3 and sex = 1) gruppe = 2. EXECUTE.
- После выделения всех строк командами меню Edit (Правка) Select All (Выделить все) и щелчка на значке запуска (Run) в открытый файл данных будет добавлена новая переменная со значениями 1 (мужчины-юристы) и 2 (женщины-гуманитарии), которая может служить группирующей переменной, например, при U-тесте Манна и Уитни.
Создание индекса
Индексом называют объединение нескольких отдельных вопросов (элементов) в едином показателе, который характеризует сложные, многоплановые состояния — например, показатель уровня жизни или уровня интеллекта. Создание такого индекса мы рассмотрим на примере теоремы об изменении ценностей американского политолога Рональда Инглхарта (Inglehart).
В своей работе «Культурный сдвиг. Смена ценностей в западном мире» (см. список литературы) Инглхарт выдвинул положение о том, что представления о ценностях в западном обществе претерпели значительное изменение. Ранее на первом месте стояли материальное благополучие и физическая безопасность, тогда как сегодня больше значения придается качеству жизни. Таким образом, ценностные приоритеты сместились от материализма к постматериализму. Это смещение Инглхарт объясняет, в частности, тем, что после второй мировой войны, прежде всего в западноевропейских странах и США, люди ощутили большую экономическую и физическую безопасность чем когда-либо до сих пор. Более молодые поколения, годы формирования которых пришлись на период безопасности и стабильности, будут постепенно отдаляться от традиционных норм и представлений о ценностях, свойственных старшим поколениям. Основываясь на факте достижения высокой экономической безопасности и стабильности, Инглхарт делает вывод о смене ценностей между поколениями, которая влечет за собой значительные социальные последствия.
Далее мы построим индекс, который будет указывать, придерживается ли респондент материалистических или же постматериалистических ценностей, согласно Рональду Ингчарту. Этот индекс будет построен на основе опроса ALLBUS, проведенного в 1991 г. В опpoce ALLBUS фигурировало четыре вопроса, касающиеся теоремы Инглхарта об изменении ценностей. В частности, респондента спрашивали, какое значение он придает ценностям «Спокойствие и порядок в стране» (переменная v108), «Увеличение степеничастая народа в решениях власти» (переменная v109), «Борьба с ростом цен» (переменная v110) и «Право на свободное выражение мнения» (переменная v111). Респондент, :гавнивая эти четыре ценности между собой, мог указать для каждой из них один из четырех приоритетов: первостепенное значение, второстепенное значение, значение третье степени и значение четвертой степени. Данные находятся в файле ingle.sav.
- Загрузите файл ingle.sav.
- Чтобы получить первоначальное представление, проведите частотный анализ переменных v108, v109, v110 и v111. В окне просмотра вы увидите следующие результаты:
ВАЖНОСТЬ СПОКОЙСТВИЯ И ПОРЯДКА
Как создать ключевую переменную, ID?
(Вопрос) Я хочу создать новую идентифицирующую переменную, которая перенумерует все наблюдения от 1 до n (числа наблюдений в файле). Как это сделать?
(Ответ)
— Используя синтаксис: COMPUTE >. (Если ничего не происходит, выберите TRANSFORM>RUN PENDING TRANSFORM )
— Используя меню: выберите TRANSFORM>COMPUTE затем введите id в поле Target Variable и $casenum в поле Numeric Expression. Нажмите OK . (Если ничего не происходит, выберите TRANSFORM>RUN PENDING TRANSFORM )
Отметим, что $CASENUM является специальной, системной переменной. Наиболее просто узнать все про специальные переменные — открыть Справку SPSS и поискать, например, «$casenum».
Вторая ситуация
(Вопрос) Что, если в файле ещё нет вовсе данных, но мне надо создать идентификаторную переменную со значениями от 1 до 10.
(Ответ): Это нельзя сделать через меню, используйте синтаксис:
— Используя синтаксис:
INPUT PROGRAM. LOOP id=1 TO 10. END CASE. END LOOP. END FILE. END INPUT PROGRAM. LIST.
Третья ситуация
(Вопрос) У меня есть много наблюдений с одинаковыми кодами и я хочу создать переменную, которая нумеровала бы последовательно наблюдения внутри каждого кода.