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

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


Информационный Канал Subscribe.Ru

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

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

 

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

Команды BEGIN DATA - END DATA и DATA LIST
Новое на сайте www.spsstools.ru

 

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

Команды BEGIN DATA - END DATA и DATA LIST

В этом выпуске мы с вами более подробно остановимся на рассмотрении команды BEGIN DATA - END DATA, которая встретилась нам в синтаксисе из первого выпуска.

Между BEGIN DATA и END DATA в синтаксисе помещают данные, которые необходимо ввести в редактор данных SPSS. Зачем это нужно? Ведь обычно данные вводятся в SPSS либо непосредственно в редакторе, либо с помощью специальных приложений SPSS (например, DATA ENTRY), либо экспортируются из других программ, например MS Excel, Access и т.д., либо мы открываем уже готовый файл данных *.sav. Это так, однако в ряде случаев удобнее задать данные непосредственно в синтаксисе. Например, в нашем случае, где мы демонстрируем действие конкретной программы и для этого нужно в качестве примера заполнить матрицу данных какими-то значениями. Комментируя синтаксис, мы могли бы указать ссылку на файл данных, который он обрабатывает, или предложить вам самостоятельно "придумать" свои данные чтобы посмотреть на работу программы. Но проще будет прямо в синтаксисе "набросать" для примера данные и все пользователи получат одинаковый результат, который можно будет прокомментировать. Часто ввод данных через команды BEGIN DATA - END DATA удобнее осуществлять и в ходе отладки синтаксиса, пробуя различные конфигурации, не переключаясь между окнами. Особенно полезной оказывается комбинация BEGIN DATA - END DATA, если вы задаёте вопрос относительно обработки данных своему коллеге, в форум или список рассылки. Вряд ли вы будете отсылать вместе с вопросом и файл данных, который может содержать слишком ценную информацию или быть слишком большим или сложным. И всё же гораздо проще отвечать на вопрос если имеется "живой" пример данных с которым можно начинать экспериментировать. Если данные имеют сложную структуру, её проще показать на примере, чем объяснять как хитроумно сгруппированы ваши наблюдения. С помощью рассматриваемой команды вы можете сделать такой пример, который займёт всего несколько строчек в тексте письма. В конце концов, создавая свой синтаксис, полезно включить в него пример обрабатываемых данных для того, чтобы быстро посмотреть и вспомнить в будущем что же делает эта программа.

Будем считать, что вы теперь убеждены в необходимости использования команды BEGIN DATA - END DATA. Рассмотрим, как с ней работать.

Собственно, в использовании команды BEGIN DATA - END DATA никаких сложностей нет. Обычно данные вводятся практически так, как они должны выглядеть в редакторе.

Например, видя запись

BEGIN DATA

1 2 -4

1.3 0

3 3 3

END DATA.


мы можем предположить, что в результате в редакторе появятся 3 переменные и 3 наблюдения. При этом во втором наблюдении первой переменной значение будет равно 1.3, а второе наблюдение третьей переменной будет пропущено. Однако это будет так, если мы предварительно опишем характер вводимых данных с помощью другой команды: DATA LIST. Именно она (да в некоторых случаях еще MATRIX DATA) может (и должна) предшествовать конструкции BEGIN DATA - END DATA чтобы та сработала без ошибок. Для приведённого примера "правильный" вариант синтаксиса должен выглядеть как

DATA LIST LIST / x y z.

BEGIN DATA

1 2 -4

1.3 0

3 3 3

END DATA.


В редакторе данных будут созданы 3 переменных (с именами x, y и z). Первая будет иметь вектор-столбец значений 1, 1.3, 3, вторая: 2, 0, 3, третья: -4, "пропуск", 3. Заметьте, что после слов BEGIN DATA точка отсутствует! Команда заканчивается лишь после слов END DATA.

В таком виде комбинация DATA LIST - BEGIN DATA - END DATA встречается наиболее часто. Также распространены ситуации когда некоторые переменные нужно ввести как строковые (по умолчанию программа интерпретирует все переменные как числа). Тогда описание немного усложнится:

DATA LIST LIST / x(A5) y(F2.0) z(F3.1).

BEGIN DATA

abc 2 -4

dfddfd 0

3 3.6 3.2

END DATA.

Теперь переменная x является строковой с длиной 5 символов. Так, последняя "d" (шестая буква) во втором наблюдении будет утеряна, а тройка из третьего наблюдения будет рассматриваться как текст, а не число. Значение 3.6 из третьего наблюдения будет отображаться как 4 (округлено до целого), так как числовой формат переменной y F2.0 не предусматривает знаков после запятой. Однако сама дробная часть будет сохранена (число 3.6 вы можете увидеть в строке ввода если подведёте курсор в соответствующую ячейку редактора данных) и при необходимости десятые доли можно будет отобразить. Переменная z также будет числовой и программа отобразит 1 знак после запятой. Кстати, те же правила вывода переменных сохраняются и при выводе значений переменных в окне результатов.

Если вводимые строки содержат пробелы, при вводе данных возникнут трудности. Обычно пробелы (а также несколько пробелов подряд, символы табуляции и запятые) понимаются как разделители значений. Решение может состоять в "закавычивании" текстовых значений или задании специальных разделителей в параметрах DATA LIST. Например, команды

DATA LIST LIST / x(A5) y(F2.0) z(F3.1).

BEGIN DATA

abc 2 -4

"dfd d" 0

3 3.6 3.2

END DATA.

и

DATA LIST LIST (",") / x(A5) y(F2.0) z(F3.1).

BEGIN DATA

abc, 2, -4

dfd d, 0,

3, 3.6, 3.2

END DATA.

дадут одинаковые (нужные нам) результаты. Во втором случае мы заставляем SPSS обращать внимание лишь на запятые в качестве разделителей. Тогда пробел между dfd и d во втором наблюдении не воспринимается как разделитель.

В жизни случаются разные ситуации. Иногда бывает, что данные мы взяли в буфер обмена из какой-то другой программы и при вставке в синтаксис они оказались "вытянутыми" в одну строку: abc 2 -4 "dfd d" 0 3 3.6 3.2. И в этом случае проблем с вводом не возникнет, если в команде DATA LIST в качестве параметра мы укажем ключевое слово FREE:

DATA LIST FREE / x(A5) y(F2.0) z(F3.1).

BEGIN DATA

abc 2 -4 "dfd d" 0 ,, 3 3.6 3.2

END DATA.

Программа последовательно читает значения и заносит их сначала в первое наблюдение первой переменной, затем в первое наблюдение переменной y, затем в первое наблюдение z, потом во второе наблюдение x и так далее. Есть тонкость. Если в предыдущем случае пустое наблюдение стояло в последней колонке и интерпретировалось правильно, в данном случае пропуск должен быть в явном виде обозначен двойными разделителями, например, запятыми. Как вариант - одной десятичной точкой. Внимание! Если двойные запятые убрать, программа прочитает в качестве второго наблюдения переменной z тройку, а последнее наблюдение исключит как неполное.

Тут нам приоткрывается сакральный смысл ключевых слов LIST и FREE. В первом случае одна строка интерпретируется как одно наблюдение, и конец строки означает переход к следующему наблюдению. Во втором случае в одной строке мы можем последовательно задать значения более чем одного наблюдения. Выбирайте наиболее удобный вариант.

Существует ещё одно значение параметра, составляющее альтернативу LIST и FREE. Это ключевое слово FIXED, используемое по умолчанию, если в явном виде параметр структуры данных не указан. Пример использования FIXED:

DATA LIST FIXED / x 1-5 (A) y 6-8(F) z 9-11 (F) .

BEGIN DATA

abc 2 -4

dfd d 0

3 3.6 3.2

END DATA.

Как видно, в данной команде мы указываем лишь формат переменных без указания правил их отображения. Кроме этого, мы явно указываем в каких колонках находятся значения той или иной переменной. Например, значения переменной x составляют первые 5 символов каждой строки между командами BEGIN DATA - END DATA.

Таким образом, мы рассмотрели наиболее часто используемые приёмы ввода данных с помощью команд BEGIN DATA - END DATA. При этом мы затронули более сложную команду DATA LIST, которая носит более универсальный характер и способна читать данные не только из текста синтаксиса, но и из внешних текстовых файлов. Кроме этого, она имеет параметры, позволяющие относить к одному и тому же наблюдению несколько строк данных, пропускать строки, содержащие заголовки переменных и т.д. За подробной спецификацией программы DATA LIST следует обратиться к справочнику.

Примеры комбинирования DATA LIST - BEGIN DATA - END DATA можно найти в следующих файлах синтаксиса на сайте www.spsstools.ru:
http://www.spsstools.ru/Syntax/BlockDesign/CRDesigns.txt
http://www.spsstools.ru/Syntax/AUC/IncrementalAUC.txt
http://www.spsstools.ru/Syntax/ChartsTables/GraphCumulativePcRetiredByCategoricalVar.txt

... и многих других.

Отметим, что существуют и альтернативные способы ввода данных через синтаксис. Среди самых распространённых - ссылка на "стандартные" файлы данных, поставляемые обычно в комплекте с SPSS. Так, например, обычно SPSS инсталлируется в директорию Program Files на жестком диске C: компьютера. У большинства пользователей SPSS, таким образом, существует файл C:\Program Files\SPSS\employee data.sav, который содержит множество числовых и категориальных переменных и вполне подходит для многих экспериментов по обработке данных. Файл можно загрузить в редактор данных с помощью команды

GET FILE='C:\Program Files\SPSS\Employee data.sav'.

Этот метод ссылки на данные очень популярен, так как большинство пользователей SPSS из разных стран, выполнив эту команду, получат одни и те же данные в редакторе, а значит и аналогичные результаты при исполнении остального синтаксиса. "Не повезёт" лишь тем, кто проинсталлировал SPSS в другую директорию, или стёр/переместил файл примера. Но и тут дело поправимое: достаточно изменить путь в параметре команды, либо восстановить файл с установочного диска SPSS.

Другой достаточно часто встречаемый метод заключается в использовании многофункциональной команды INPUT PROGRAM. Пожалуй, именно она и станет предметом нашего внимания в следующем выпуске рассылки.

 

До новых встреч,

ведущий рассылки Балабанов Антон

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

Переведены и добавлены следующие примеры синтаксиса в раздел "Таблицы и графики" (http://www.spsstools.ru/SampleSyntax.htm#ChartsAndTables):

Вывести название группы в заголовок таблицы.SPS
http://www.spsstools.ru/Syntax/ChartsTables/PrintActualNameGroupIdInHeading.txt

Построить таблицу "среднее плюс-минус стандартное отклонение".sps
http://www.spsstools.ru/Syntax/ChartsTables/PrintMeanPlusMinusStddevInTable.txt

Поместить 4 переменные в одну частотную таблицу.SPS
http://www.spsstools.ru/Syntax/ChartsTables/Put4VariablesInTheSameFREQtable.txt

Отобразить "пустые" категории в таблице.SPS
http://www.spsstools.ru/Syntax/ChartsTables/ShowEmptyCategoryInTables.txt

Отобразить "пустые" категории в таблице (второй способ).SPS
http://www.spsstools.ru/Syntax/ChartsTables/ShowEmptyCategoriesInTablesSecondMethod.txt

Указать число действительных наблюдений в примечании к таблице.SPS
http://www.spsstools.ru/Syntax/ChartsTables/ShowNumberOfValidCasesInTableFootnote.txt

Таблица, где список переменных генерируется макросом.SPS (Пример использования конструкции !IF ...!ELSE ... !IFEND)
http://www.spsstools.ru/Syntax/ChartsTables/TableWhereListOfVariablesIsByMacro.txt

Статистика по подгруппам переменных.SPS
http://www.spsstools.ru/Syntax/ChartsTables/StatisticsForGroupingOfVariables.txt

Отсортировать категории по убыванию частоты, поставив "Другое" на последнее место.SPS
http://www.spsstools.ru/Syntax/ChartsTables/SortCategoriesWithOthersLast.txt

Использование макроса и команды CTABLE.SPS
http://www.spsstools.ru/Syntax/ChartsTables/UsingMacrosAndCTABLE.txt

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


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.others.spss
Архив рассылки
Отписаться Вебом Почтой
Вспомнить пароль

В избранное