Рассылка закрыта
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Статистика в SPSS: за пределами кнопочного интерфейса. Выпуск 19
В рассылке используются материалы веб-сайта
www.spsstools.ru
Содержание выпускаНаложение распределений на графиках (2 примера) Новое на сайте www.spsstools.ru Здравствуйте, уважаемые подписчики! Наложение распределений на графиках (2 примера)Предметом данного выпуска стал вопрос, заданный в живом журнале ru_spss. Автору вопроса требуется вывести на один график две (или более) кривых нормального распределения, параметры которых соответствуют статистикам (среднему и стандартному отклонению) различных переменных. В вопросе приводится иллюстрация того, как примерно должен выглядеть график: построены несколько кривых нормального (гауссовского) распределения, отличающиеся между собой средними и стандартными отклонениями. Важно отметить, что от нас не требуется сопоставить реальные распределения переменных, которые, вообще говоря, могут быть весьма далеки от нормальных, а построить нормальные кривые, которые будут иметь с имеющимися у нас переменными лишь "отдалённое родство" - будут совпадать их средние и стандартные отклонения. В ответах предлагалось построить подобные графики средствами, например, MS Excel, либо специальных программ по построению графиков функций. Вполне рациональное решение. Однако же, было бы странно, если б данная задача оказалась нерешаемой средствами статистического пакета SPSS. Решение нашлось, причём, думается, одно из многих. С ним я и думаю ознакомить уважаемых подписчиков. Все выполняемые действия доступны через стандартные оконные меню программы SPSS, но для краткости изложения и иллюстрации алгоритма мы запишем их средствами командного языка.
Идея решения. Если мы строим кривые, беря за основу их вычисления статистику каких-либо переменных, то для начала эти переменные нужно иметь в редакторе данных. Я предполагаю, что переменные представлены в связанном виде, то есть относятся к одному и тому же объекту наблюдения (в традиционном представлении матрицы данных в SPSS, размещаются в соседних столбцах окна редактора данных). Требуется получить статистику переменных. Можно сделать это стандартными описательными процедурами (вроде Descriptives) в окне результатов, но выгоднее получить и сохранить её непосредственно в файле данных для последующих расчётов. Собственно, по каждой переменной требуется пара показателей: среднее и стандартное отклонение - параметры нормального распределения. Затем с помощью встроенной в SPSS нормальной функции плотности вероятности не составит труда рассчитать высоту "горки" нормального распределения при каждом значении той и другой переменной. После этого останется только графически представить полученные значения. Это сделаем с помощью графика Overlay Scatterplot, представляющего собой наложение диаграмм разброса двух и более пар переменных. Рассмотрим реализацию этой идеи в синтаксисе. Загрузим данные. Разумеется, если файл данных уже открыт в редакторе, эту команду можно опустить, а остальной синтаксис доработать "по месту" - заменить имена переменных и скорректировать синтаксис по числу накладываемых графиков. Возьмём для примера поставляемый с SPSS файл данных employee data.sav, который, скорее всего, находится на вашей машине по указанному пути. При открытии файла срабатывает заданная дополнительно команда KEEP - сохранить, которая оставляет в редакторе данных лишь две переменные, представляющие для нас интерес - salbegin и salary, т.е. начальное и текущее жалованье для сотрудников из той базы данных, которая представлена в файле (жалованье в начале рабочей карьеры и в настоящее время). GET FILE='c:\program files\spss\employee data.sav' Будем сопоставлять кривые нормального распределения, соответствующие средним и стандартным отклонениям двух указанных переменных. Следующий этап - подсчёт статистики по переменным. Используем команду обобщения данных - AGGREGATE. Перед её запуском необходимо создать вспомогательную переменную-константу (назовём её nobreak), которая будет иметь одинаковые значения для всех наблюдений. Это требуется для того, чтобы команда AGGREGATE рассматривала весь файл данных как единую группу и не вычисляла статистики по каким-либо подгруппам. В качестве одной из подкоманд AGGREGATE мы запросили помещение статистики в текущий файл (*) и поставили режим MODE=ADDVARIABLES, который стал доступен в последних версиях SPSS. Он позволяет добавить переменные с обобщёнными характеристиками к рабочему файлу, не создавая промежуточных внешних файлов данных и не проводя их объединение дополнительными командами. Содержательная часть находится в последних подкомандах. В переменную salary_mean будет помещено среднее значение salary, а в переменную salary_sd - стандартное отклонение salary. Аналогичная статистика вычисляется и для переменной salbegin. COMPUTE nobreak=1. AGGREGATE В результаты выполнения команд к настоящему моменту в окне редактора данных должны появиться 5 новых переменных. Каждая из переменных имеет для всех наблюдений одинаковые значения. Это требуется для выполнения следующих команд. В переменные s_n и sb_n мы поместим плотности вероятности из нормального распределения, соответственно, для каждого из значений переменных salary и salbegin. Как видно, в функции PDF.NORMAL мы ссылаемся на текущее значение переменной salary или salbegin и на статистики этих переменных. На этом этапе становится ясно, что если нам требуется построить график один раз, можно обойтись без команды аггрегирования и ввести соответствующие статистики в формулы вручную, взяв их из таблиц описательной статистики. COMPUTE s_n = PDF.NORMAL(salary,salary_mean,salary_sd). COMPUTE sb_n = PDF.NORMAL(salbegin,salbegin_mean,salbegin_sd). Теперь остаётся лишь изобразить полученные значения на графике, пользуясь диаграммой рассеяния (scatterplot) с возможностью наложения двух и более пар переменных: GRAPH Масштаб горизонтальной оси автоматически подбирается программой так, чтобы можно было отобразить как значения salary, так и значения salbegin. Очевидно, что подобное сопоставление кривых корректно лишь в случае, если и та, и другая переменная имеют одинаковые единицы измерения. Кривые получились характерно обрезанными с левой стороны, так как значений жалованья, близких к нулю, а тем более, меньших нуля, не встречалось. Видно, что кривая с параметрами текущего жалованья смещена относительно начального жалованья вправо (в сторону бОльших значений) и характеризуется бОльшим разбросом. Эстеты могут отредактировать полученный график, добавив туда интерполяционные линии, объединяющие точки. Заключительное замечание. При малом числе наблюдений графики могут получиться не столь наглядными из-за небольшого числа точек. Если при этом необходимо построить гладкие теоретические кривые средствами SPSS, можно посоветовать сгенерировать сколь угодно большое число наблюдений с заданными параметрами распределения (см. первые выпуски рассылки для разбора вопросов генерации данных... а, впрочем, почему подробнее не рассмотреть это в следующем выпуске?).
Продолжая разбор вопроса, отметим, что всё же в практических исследованиях чаще интерес представляет сопоставление не теоретических, а эмпирических кривых распределения. Следуя логике ответа на предыдущий вопрос, попробуем предложить для тех же данных способ сопоставления на одном графике эмпирических кривых (полигонов распределения) переменных. Разберём решение из архива списка рассылки SPSSX-L (для наглядности восприятия предыдущее решение мы привели в соответствие с этим примером). Автор решения: Raynald Levesque, отправлено 12 июня 2004 года. Адрес архивного сообщения: http://listserv.uga.edu/cgi-bin/wa?A2=ind0406&L=spssx-l&P=R13239
Идея решения. В данном случае функцию плотности распределения (вертикальную ось графика), видимо, естественно заменить эмпирической частотой. В этом случае площадь под кривой уже не будет равна единице, как в случае с теоретическими кривыми, однако нам гораздо важнее форма и относительное положение кривых. Очевидно также, что линии нам предстоит сделать ломаными: каждый узел линии будет представлять собой частоту наблюдения значений переменной из некоторого интервала. Можно представить, что мы будем строить наложенные гистограммы, вершины невидимых столбцов которых будут соединены линиями. Мы создадим интервалы равной ширины исследуемых переменных и сохраним в отдельных файлах частотное распределение каждой из переменных по этим интервалам. Затем "подошьём" один файл к другому, указав в группирующей переменной, к какой из исходных переменных (salary или salbegin) относится частотное распределение. Для построения графика вновь воспользуемся диаграммой разброса, однако без наложения двух пар переменных, как в предыдущем случае, а с использованием группирующей.
Рассмотрим реализацию этой идеи в синтаксисе. Использование функции TRUNC, округляющей аргумент до меньшего целого значения, позволяет нам свести значения обеих переменных в интервалы по 10000 долларов жалованья в каждом. Так, если человек имеет жалованье в пределах 10000, новое значение жалованья будет равно 0, от 10000 включительно до 20000 - единице и так далее. Разумеется, на место делителя 10000 можно ввести любое число. Однако указание малого делителя приведёт к созданию большого числа интервалов и график может потерять свою наглядность из-за случайных колебаний наполняемости интервалов частотами - за "конвульсиями" мелкомасштабного графика мы можем не увидеть общей тенденции распределения. COMPUTE sal=TRUNC(salary / 10000). COMPUTE salb=TRUNC(salbegin / 10000). Создаём переменную grp и присваиваем ей значение 0 - это будет меткой того, что обобщаемые далее данные относятся к переменной salary (sal - в интервальном виде). Во внешний файл записываем частотное распределение переменной sal. Переменная grp для каждого интервала будет содержать "первое значение" (FIRST) из группы, т.е. 0, т.к. переменная, фактически, является константой. На место FIRST можно было бы поставить и MAX, и MEAN и т.д. Аналогичную операцию проделываем с переменной salb. COMPUTE grp=0. AGGREGATE OUTFILE='c:\temp\sal.sav' COMPUTE grp=1. AGGREGATE OUTFILE='c:\temp\salb.sav' Теперь с помощью команды ADD FILES мы "подшиваем" к распределению одной переменной распределение другой. При этом, чтобы все значения, характеризующие жалованье, находились в одной переменной, переименуем salb в sal на лету. Значения для разных переменных не перепутаются, т.к. будут сгруппированы переменной grp. Командой ниже (EXECUTE) мы запускаем отложенные вычисления (команда ADD FILES выполняется). Затем, чтобы не забыть, даём метки значениям grp (VALUE LABELS). ADD FILES FILE='c:\temp\sal.sav' EXECUTE. VALUE LABELS grp 0 'salary' 1 'salbegin'. Теперь - график: GRAPH В качестве упражнения желающие могут попробовать построить аналогичные графики при изначально другой организации данных - с группирующей переменной. То есть, когда целевая переменная одна, но категории наблюдений, к которым относятся её значения, различны. Решать задачу в такой постановке можно двумя способами: 1 - сведение задачи к предыдущей, т.е. реструктуризация данных, 2 - предложить свой метод построения графиков. Отметим, что в SPSS есть стандартные средства сопоставления распределений по подгруппам переменной. Например: GET FILE='c:\program files\spss\employee data.sav'. GRAPH
Всего доброго! Ведущий рассылки, Балабанов Антон Новое на сайте www.spsstools.ruПереведены и добавлены примеры синтаксиса: Отметить 5% наиболее высоких зарплат.SPS Пометить первую и последнюю дату наблюдения (в пределах каждого ID).SPS Сохранить только записи пациентов, наблюдавшихся несколько раз.SPS Вывести частотную таблицу для n наиболее или наименее часто встречающихся категорий.SPS Отобрать пациентов, которым лекарство 1 назначалось перед лекарством 2.SPS Отобрать наблюдения, для которых одна и та же буква появлялась в строке дважды.SPS Осложнённый поиск в текстовой строке.SPS
Переведены и добавлены примеры скриптов: Выделение итога в таблице SUMMARIZE или вставка разрыва страницы.SBS
© См. www.spsstools.ru, 2005-2006 |
В избранное | ||