Пара слов о пропущенных значениях

Как бы мы ни собирали данные, нередко случается так, что некоторые значения пропущены. Особенно это характерно для различных опросных методик или исследований, растянутых на длительное время. В такие моменты перед аналитиком встает вопрос, по-гамлетовски фундаментальный — «резать или не резать». То есть, что делать с пропущенными значениями — если удалять, то как, если не удалять — каким образом замещать пропуски? Как, в конце концов, будет правильным поступить?
Само собой, сначала надо посмотреть, а насколько случайны пропуски в данных. Для этого могут подойти такие инструменты, как паттерны пропусков, частотный анализ и прочее. В конце концов, если в опросах вариант «не знаю» может интерпретироваться как отказ от коммуникации, то и пропуск может быть маркером каких-либо процессов.

В том случае, если пропуски действительно случайны, то самый простой вариант — это удаление наблюдений с пропущенными значениями. Удаление может быть как попарным (pairwise), так и построчным (listwise). Попарное удаление — когда, например, при корреляционном анализе не учитывается значение, парное пропущенному. Построчное удаление — когда из анализа исключается вся строка, в которой есть пропущенные значения (в случае корреляционного анализа по двум переменным идентично попарному удалению).

В тех ситуациях, когда хочется сохранить массив данных, и каким-то образом заполнить пропущенные значения (импутировать), то есть множество методов, разных по идеологии и по результатам. Простейшие из них:
Во-первых, можно заполнить пропущенные значения средним или медианным значением по столбцу. SPSS также предлагает среднее/медиану по N ближайших значений.
Во-вторых, можно пойти по методу «как у соседей» — объекты имеют одинаковые значения, если похожи по ряду прочих характеристик, отраженных в датасете. В конце концов, если у Пети и у Васи отличные оценки в течение года, и отличная оценка за годовую контрольную, то логично предположить, что и отличник-Коля получил отличную оценку за контрольную.
Третий вариант заполнения пропущенных — с использованием линейной регрессии. Пропущенные значения на первом этапе заполняются средними по переменной (метод Бартлетта) или случайным из диапазона значений переменной (метод ресемплинга), переменная с пропуском принимается как зависимая. Полученными предсказанными значениями и замещаются пропуски.
В SPSS ко всему прочему реализован еще один алгоритм — EM-алгоритм. Основная идея этого алгоритма — изменение с помощью регрессионных методов пропущенных значений и вычисление ковариационной матрицы на каждой итерации, до тех пор, пока изменения в матрице не будут минимальны.

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

Конечно, импутация пропущенных значений в определенных ситуациях жизненно необходима, однако стоит все же отдавать себе отчет в том, что при большом количестве пропусков (я бы сказал, более 5−10% наблюдений по переменной) анализ данных с импутированными пропусками становится похож на самоподдерживающийся фантазм. В конце концов, использование средних вместо пропусков грозит нивелировать различия между группами, а содержательно анализировать данные линейной регрессии, в которых часть пропусков была заполнена по результатам того же регрессионного анализа — просто бессмысленно.

Хотя, конечно же, самым эффективным решением будет <s>пить чай вместо</s> собирать изначально полные данные — тиранить испытуемых/респондентов, выверять процедуру и код программы сбора данных etc.

Филипп Управителев

«10 советов по анализу данных, которые я хотела бы узнать раньше» от Дороти Бишоп

Британский нейропсихолог Дороти Бишоп опубликовала в своем блоге «10 советов по анализу данных, которые я хотела бы узнать раньше», и любезно согласилась поделиться ими с #горячимиюнымикогнитивными. Советы в основном касаются сбора и систематизации данных, и рассчитаны на психологов, использующих SPSS и Excel. Кстати, TCTS горячо рекомендует блоги Дороти — deevybee.blogspot.com/. Там можно найти много интересного, в том числе вводные занятия по R, анализу близнецовых данных, анализу ЭЭГ, нейропсихологические тексты и просто около-академические размышления.

Итак, по мнению Дороти, при планировании эксперимента нужно держать в уме следующее:

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

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

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

Именно на эти основные идеи опираются сами рекомендации.

«1. Называйте файлы испытуемых однообразно и анонимно.

Большинство этических комиссий при использовании людей в качестве испытуемых требует анонимизировать данные. Не используйте в качестве названий файлов имена, инициалы и даты рождения испытуемых! Обычно для названий вполне подходят цифры. Но нужно помнить о двух вещах. Во-первых, вам может понадобиться возможность сортировки испытуемых по группам, поэтому к цифре удобно приставить букву, обозначающую группу (например, для групп young-middle aged-old подойдет Y1, Y2, … M1, M2 и т. д.). Но не забывайте о том, что вам скорее всего придется столкнуться с автоматической сортировкой по алфавиту, так что наилучшим выбором будет естественная последовательность букв. К тому же, последовательность из двадцати файлов может при сортировке превратиться в «S1, S10, S11, S12, S13, S14, S15, S16, S17, S18, S19, S2, S20, S3, S4, S5, S6, S7, S8, S9». Чтобы избежать этого, достаточно проследить за тем, чтобы все названия были одной длины — S01, S02 и т. д.

С другой стороны, если вы планируете использовать автоматическую обработку данных, убедитесь в том, что для названий файлов легко придумать цикл. Гораздо проще попросить программу последовательно обработать файлы, начинающиеся с S и заканчивающиеся номерами от 1 до 20, чем вводить названия файлов вручную.

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

2. Называйте переменные единообразно и интуитивно понятно, так чтобы эти названия работали в любой среде.

Если вы собираетесь анализировать свои данные в SPPS, назовите свои переменные так как этого требует SPSS — без пробелов, цифр в начале или запрещенных символов (и латиницей — прим.пер.). Подумайте о том, как вы будете называть эту переменную при описании результатов исследования. Часто рецензентов раздражает, когда одна и та же переменная называется по-разному в разных разделах текста. Гораздо правильнее начать с того названия, которое продержится как можно дольше.

3. Используйте закрепленные области в Excel

Это очень просто, но на удивление мало людей об этом знает. При прокручивании файла вниз или вправо в Excel, название переменной или наблюдения скрывается с листа. Если же вы наведете курсор на ячейку непосредственно под названиями переменных и справа от названий строк (т.е. на первую ячейку собственно данных, и выберете «окно"→"закрепить области», и столбцы, и строки над выделенной ячейкой будут оставаться на месте, когда вы прокручиваете таблицы.

Кроме того, есть (не очень удобный) способ заморозить области в SPSS — он описан здесь.

4. Ведите список переменных с их описанием.

В SPSS для сохранения подробностей можно использовать «метки» переменных, но они ограничены по длине и не всегда вмещают все необходимое. Имеет смысл держать отдельный файл для описания кодировки данных, включающий в себя список переменных, их описание, как обозначены отсутствующие данные и т. д. Если вы планируете выкладывать данные в открытый доступ — это обязательный пункт. И лучше всегда работать так, будто в ваших данных должен будет разобраться кто-то другой.

5. Используйте один большой файл вместо множества маленьких, и скрывайте переменные, которые вы не используете в конкретный момент.

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

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

Кроме того, если вам захочется проанализировать связь между выделенными переменными и переменными в том большом файле, вам придется еще дольше возиться с переносом данных, что является прямым путем к ошибкам — особенно если вы копируете и вставляете. Поэтому я советую работать с большим файлом, содержащим все данные, скрупулезно переименовывая его в случае изменений. Проблема «слишком много данных» решается скрыванием ненужных частей файла.

В Excel это делается просто. Выделите колонки, которые хотите скрыть, и нажмите «Ячейки—Формат--Скрыть «. Чтобы вернуть их назад, выделите колонки рядом со скрытыми и нажмите «Отобразить».

Похожую операцию можно сделать в SPSS, она называется «набор переменных». Она требует чуть больше шагов чем в Excel, но достаточно определить набор один раз, и он сохраняется вместе с файлом, так что выбрать те же переменные заново можно очень просто. Инструкции — здесь.

Кстати, этот сайт полон полезностей. Например, там есть инструкция по созданию таблиц в формате APA в SPSS.

6. Никогда не добавляйте к названию файла «final» и всегда храните копии основных данных.

Назвать файл «финальным» очень хочется. Но у вас обязательно окажутся файлы с названиями «final final», «действительно final» или «final версия 10». Для определения наиболее свежей версии лучше использовать даты.

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

7. Смотрите на данные

Прежде чем хвататься за статистику, важно визуализировать ваши данные. Это хороший способ обнаружения странностей в вашем наборе данных, например, выходящих за ожидаемые рамки значений. Например, если у вас есть сырые и взвешенные значения, построив график рассеивания, вы убедитесь, что конвертация произошла правильно. Также следует проверить распределение данных, и определиться с дальнейшими шагами, если анализ предполагает нормальность, а данные распределены иначе. Об этой часто встречающейся ситуации можно прочесть в учебнике Филда «Discovering Statistics Using SPSS» (да и в других учебниках по статистике, список которых можно найти в блоге по тегу stats — прим. пер).

8. Ведите журнал анализа.

Обычно я продумываю то, что я хочу сделать, составляю список аналитических процедур и таблиц, которые я хочу получить, и работаю по этому списку. На практике, работа редко идет гладко. Можно обнаружить отсутствующий или поврежденный файл, или понять, что данные нужно трансформировать. Традиционно в процессе анализа используют с"лабораторный журнал", в который заносят соответствующие записи. Я предпочитаю использовать обычный файл Word, который держу открытым в процессе анализа, и в который я записываю все что делаю, по дням.

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

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

10. Используйте скрипты SPSS

При использовании SPSS нужно хранить скрипты проведенных тестов и манипуляций — это касается всех нас. Даже если вы ничего не знаете о скриптах, это очень просто начать делать. Сделайте все нужные настройки через меню SPSS, но вместо OK нажмите Paste. Откроется окно, в котором выбранные вами команды записаны в виде скрипта. Теперь можно выделить весь скрипт или его часть, и запустить его, нажав на большую зеленую стрелку. Если вы проведете другой анализ, и снова нажмете Paste, новые команды будут дописаны к тому же скрипту.

Такой способ имеет четыре преимущества:

1) Скрипт можно сохранить, и у вас будет постоянная запись о проведенном анализе. Она может дополнять ваш журнал (в котором можно хранить имя файла со скриптом).

2) Скрипт можно комментировать. Любой текст, начинающийся звездочкой и заканчивающийся точкой, является комментарием. Их можно использовать для заметок о том, что именно проверяет анализ.

3) Можно всегда вернуться и провести анализ заново. Например, если вы обнаружили ошибку в данных и исправили её, вам не нужно повторять все свои шаги заново — вы можете просто еще раз запустить скрипт.

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

10. Проверьте весь анализ перед публикацией.

Очень важно проверить все шаги прежде чем сдать работу. Всегда проверяйте, все ли таблицы и цифры вы можете воспроизвести. Удивительно, насколько часто, делая анализ второй раз, получаешь другие результаты! Иногда кажется, что это какой-то злой дух вселился в компьютер и дразнится. Даже если различия небольшие, они все равно вызывают беспокойство. В моем опыте, такие вещи часто происходят из-за того, что забываешь выделить нужную группу испытуемых (если есть критерии исключения). Или код отсутствия данных по ошибке был включен в данные. При плохом развитии событий, вы могли скопировать и вставить что-то в файл, забыв о том, что данные были определенным образом отсортированы. И иногда (лишь иногда), эти ошибки распространяются и на файл в Excel и на файл в SPSS. Полезно хранить данные в обоих форматах, чтобы в таких случаях иметь возможность грубо сравнить, например, средние. И здесь вы оцените скрипты SPSS. Со скриптом гораздо проще провести анализ заново. Более того, при финальной проверке, можно подписать, какая таблица в статье к какому фрагменту кода относится, и таким образом всегда иметь возможность вернуться и перепроверить результаты."

Оригинальная запись тут.

Инструментарий аналитика: SPSS

За почти двенадцать лет дружбы с SPSS я встречал не так уж много учебников по SPSS на русской языке — это учебники Пациорковских, Таганова, Крыштановского и Наследова. Первые три — учебники для маркетологов и социологов, там практически нет многомерных методов. В общем и целом, я склонен на данный момент считать учебники Наследова лучшими из доступных русскоязычных учебных материалов по мат. методам и их реализации в SPSS.

Первый учебник, «Математические методы психологического исследования. Анализ и интерпретация данных», знакомый, подозреваю, практически всем, посвящен логике и структуре методов анализа данных, каждая глава содержит в себе краткую иллюстрацию практики использования этого метода в SPSS. Второй учебник, «IBM SPSS Statistics 20 и AMOS. Профессиональный статистический анализ данных», больше посвящен именно SPSS — более детально раскрываются дополнительные параметры методов и содержание таблиц вывода. Тем не менее, учебник также содержит некоторые общие описания логики методов. Также этот учебник, в отличие от предыдущих учебников по версиям SPSS, содержит раздел по AMOS — модулю IBM SPSS, с помощью которого работают с задачами структурного моделирования (SEM). Конечно, учебники А.Д.Наследова вызывают ряд вопросов и претензий, особенно первый, однако для начинающих или не очень уверенных пользователей они будут лучшим выбором.

В англоязычном академическом мире традиционно лучшим учебником по анализу данных в SPSS, да и просто хорошим учебником по статистике, считается учебник Филда, Discovering Statistics Using IBM SPSS Statistics by Andy Field. Подробнее можно посмотреть здесь: www.uk.sagepub.com/field4e/main.htm или на весьма любопытном личном сайте автора www.statisticshell.com/.

Временами случается, что учебника под рукой нет, или надо посмотреть пример использования того или иного метода, который не описан у АДН, например, как делать логистическую регресию в SPSS. В таких случаях я шел на этот неплохой онлайн-учебник по основным методам анализа данных. которые могут потребоваться исследователям. Правда, по ощущениям, для иллюстраций авторы использовали какую-то очень уж древнюю версию SPSS, чуть ли не 9.0/11.0. Также, как и бумажные учебники, подойдет только для newbie-analysts.

Для тех, кто хочет приближенных к реальности пошаговых инструкций, могу порекомендовать соответствующие YouTube-каналы, например, www.youtube.com/playlist?list=PL6B445216E3B93D2C.

Ранее я уже упоминал, что SPSS имеет достаточно удобную возможность работать со скриптами. Если быть корректным, то оконный интерфейс дает лишь базовые возможности для аналитиков, в том случае, когда есть желание повышать навыки анализа данных в SPSS, переход к скриптам является следующим и обязательным шагом. Другое дело, что, на мой взгляд, если уж и переходить на уровень кода, то лучше сразу переходить к использованию R. Однако это вопросы личного выбора. Возвращаясь к скриптам в SPSS, в первую очередь рекомендую посмотреть встроенный мануал SPSS Syntax. А во вторую очередь, воспользоваться ресурсами www.spsstools.ru/ - это перевод англоязычного сайта www.spsstools.net/, где опубликовано около 700 примеров синтаксиса, макросов и скриптов, которые были написаны автором сайта во время консультаций на форумах и в рассылках. Вообще, на сайте достаточно много справочных материалов, ссылок, полезных приемов и так далее. К сожалению, сайт уже пару лет как не обновляется — судя по всему, автор мигрировал на Python.

И напоследок. Для тех, кто совсем отчаялся и не может решить задачу, есть возможность попросить совета в ЖЖ-коммьюнити ru-spss.livejournal.com, где обитает достаточно большое количество дружелюбных и высокопрофессиональных аналитиков и пользователей SPSS.

_____________

Филипп Управителев

Инструментарий аналитика: софт

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

В России, на заре времен, использовались либо локальные программные решения, типа ДА-системы (как правило, социологами для анализа данных опросов), либо Statistica. Последняя — проприетарный продукт компании StatSoft, содержит достаточно большое число модулей по самым разным видам анализов, но больше ориентированный, все же, на индустриально-промышленные задачи. Примерно в то же время у социологов была популярна программа Stata — в ней основная работа ведется через командную строку, а основной набор методов ориентирован на регрессии и работу с номинальными и порядковыми данными. Я, когда работал со Stata, достаточно долго привыкал к ее несколько негибкому языку и некоторым сложностям с манипулированием данными. Некоторые эстеты работали также с Matematica, Weka, в особых случаях — SAS.

Через некоторое время, в начале '00 годов, практика сместилась в сторону SPSS. В немалой части причиной этого стали учебники А.Д.Наследова. На первых порах SPSS пугает определенной лаконичностью интерфейса (а до 15 версии еще и отсутствием русскоязычной локализации), но через некоторое время это проходит. В настоящее время SPSS является наиболее распространенной программой анализа данных, с которой работают психологи. К сожалению, несмотря на регулярно выходящие новые версии (следует отметить, что наиболее стабильными традиционно являются нечетные версии), набор методов анализа в SPSS весьма традиционен, и включает в себя описательные статистики, регрессии, многомерные и непараметрические методы. Относительно неплохо реализована возможность работать множественными вариантами ответов на вопросы. Изыски вроде анализа временных рядов, ROC-кривых или нейронных сетей появились относительно недавно, и психологами, как правило, не используются. К сожалению, SPSS в базовой комплектации SPSS Statistics не дает возможности полноценно работать с текстовыми данными, оценками размера эффекта, IRT-моделями, структурным моделированием, байесовскими методами и некоторыми прочими. Для некоторых из них нужны дополнительные модули, или же они вообще не реализованы. Дополнительным плюсом является достаточно комфортная возможность работать с скриптами.

В общем и целом SPSS (или PSPP, ее бесплатный аналог для linux) является базовым инструментом для тех, кто работает с данными лишь несколько раз в год и, в целом, не особо искушен в области анализа количественных данных. Однако нередко возникают ситуации, особенно при работе с экспериментальными данными, когда необходимо иметь лучшее понимание того, что происходит с данными или просто использовать методы, не включенные в стандартный набор SPSS. Например, когда необходимо аппроксимировать теоретическую функцию распределения эмпирических данных, провести симуляционный эксперримент, использовать непараметрический факторный анализ, проанализировать данные ЭЭГ или же просто построить и оценить SEM-модель при процедуре валидизации опросника. В подобных ситуациях естественным и закономерным будет переход к другим инструментам.

Такими инструментами в настоящее время выступают MATLAB, Python и R. Все это, в первую очередь, языки программирования. Python является наиболее гибким по применению языком программирования, и анализ данных — лишь одна из областей его использования (пакет pandas, например), как и проектирование экспериментов в PsychoPy. MATLAB, конечно же, создан для боли и страданий, но в настоящий момент является самым общепризнанным в академической среде инструментом для проектирования экспериментов, сбора и анализа данных (особенно психофизиологических). К сожалению, проприетарен, но есть бесплатный аналог — Octave.

R, по сравнению с Python и MATLAB выглядит бедным родственником, несмотря на Shiny, так как полностью ориентирован на работу с данными. В настоящее время для R написано несколько тысяч пакетов с разнообразными методами манипуляций и анализа данных, на любой, даже самый притязательный вкус. В качестве дополнительных бонусов, помимо собственно повышения навыков программирования и алгоритмичного мышления, использование R повышает грамотность аналитика в области практики применения различных методов анализа данных. Второй бонус — R, как и Python, обладает возможностью доступа к различным источникам данных, типа facebook или twitter, не говоря уже о просто SQL-базах, что существенно расширяет не только область применения R, но и возможный инструментарий и области для психологических исследований.

Таким образом, если подходить профессионально и дотошно к анализу эмпирических данных, то, на мой взгляд, естественным выбором аналитика будет что-нибудь из списка Python/R/MATLAB. В крайнем случае SPSS, а для редких ценителей — со скриптами и включением кусков кода на R.