Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Статистика в SPSS: за пределами кнопочного интерфейса. Выпуск 49


В рассылке используются материалы веб-сайта www.spsstools.ru

14.03.2007

Содержание выпуска

Новое на сайте www.spsstools.ru

 

Здравствуйте, уважаемые подписчики!

 

Новое на сайте www.spsstools.ru

Переведены и добавлены примеры синтаксиса (страница http://www.spsstools.ru/SampleSyntax.htm#RankingLargestValuesSortingGrouping)

Вычислить проценты на основе значений первого наблюдения.SPS

Для каждого наблюдения найти наиболее раннее значение за предшествующие 7 дней.SPS

Найти 5 наибольших значений в пределах одного наблюдения.SPS

 

Советую заглянуть в каждый из примеров. Все они по-своему интересны. В каждом на определённом этапе возникает потребность сопоставить значения между разными наблюдениями. В первом и втором примерах это решается путём временного "поворота" (транспонирования) файла данных командой FLIP с последующим его разворотом этой же командой. В результате, после разворота, наблюдения становятся переменными, и их сравнение можно осуществлять стандартными средствами сравнения переменных в пределах одного наблюдения. Третий пример идёт дальше и задействует возможности матричного языка SPSS MATRIX.

Первый пример, кроме прочего, в очередной раз заставляет нас обратить внимание на особенности использования команды EXECUTE и системной переменной $casenum при условном отборе наблюдений (SELECT IF):

COMPUTE counter=$casenum.

EXECUTE.

SELECT IF (counter=1 or counter ge 27).

EXECUTE.

Сначала мы вычисляем вспомогательную переменную counter как текущий номер наблюдения, выполняем отложенные вычисления и, только потом, пользуясь вновь созданной переменной, отбираем строки с нужными номерами. Пользоваться переменной $casenum в команде SELECT IF в данном случае было бы не правильно: начиная со второго наблюдения, ни одно не удовлетворяло бы условию отбора, удалялось бы, а на его место помещалось бы следующее наблюдение, также не удовлетворяющее условию. В результате в файле осталось бы лишь одно (первое) наблюдение. Отсутствие EXECUTE между инструкциями COMPUTE и SELECT IF привело бы к таким же результатам, поскольку обе инструкции выполнялись бы последовательно внутри каждого наблюдения. В этом случае, начиная со второго наблюдения, значение $casenum (а значит - и переменной counter) также не превзошла бы 2.

Кстати, "ge" - одно из ключевых слов SPSS, означающее "greater than or equal to..." (больше или равно). Так же как и слово "or", это одно из обозначений операторов. Вместо "ge" можно использовать ">=", а вместо "or" - вертикальную черту "|". Такие же (или подобные) синонимы имеют и другие операторы в SPSS и многих других языках: "and"(&), "not"(~), "gt" (>), "lt"(<), "eq"(=), "le" (<=), "ne"(~=, <>).

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

В третьем примере - "инженерный" подход к поиску максимальных значений. Очередной найденный максимум заменяется "достаточно малым" значением (автор синтаксиса не без оснований посчитал, что -1*10100 будет достаточно), после чего поиск следующего максимума продолжается в том же массиве. При желании - поэкспериментируйте с этим файлом. Установка параметру mxloop слишком малого значения, либо попытка найти 5 наибольших значений среди меньшего числа переменных будет давать предсказуемые результаты в итоговом файле.

 

Всего доброго.

Ведущий рассылки,

Антон Балабанов

 

© См. www.spsstools.ru, 2005-2007


В избранное