Best practices при создании протоколов экспериментов

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

В этом посте мы попытались собрать стартовый пакет полезных советов относительно проведения экспериментов, по умолчанию подразумевая здоровых взрослых людей в качестве испытуемых, хотя большая часть рекомендаций распространяется и на другие группы. Важно: мы сознательно пока избегаем советов, напрямую относящихся к процессу создания программы на том или ином языке. Эти рекомендации можно воплотить практически в любой популярной среде для экспериментирования и они в целом подходят для широкого класса экспериментов (и для работ на конкурс MARVIN тоже;).

В целом, каждый протокол можно оценивать с трех сторон:

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

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

Дисклеймер: поскольку условно когнитивные эксперименты по теме и условиям проведения бывают самые разные, мы надеемся на комментарии читателей и будем редактировать и дополнять этот пост

  • Инструкции
    • Инструкция должна быть полной и понятной, она обязательно должна присутствовать в письменном виде до начала эксперимента
    • Полезно напоминать инструкцию (например, какая кнопка что означает) в перерывах
    • Всегда полезно показать испытуемому задачу и дать ему освоиться с ней до начала регистрации данных. Это может быть сделано в формате тренировочной сессии, а в случае относительно несложных задач — в формате отсекания первых 20−30 проб от основной массы анализируемых данных. В последнем случае нужно позаботиться о том, чтобы отсекание этих проб не повлияло на контрбалансировку вашего эксперимента.
  • Стимулы
    • Здесь все целиком зависит от эксперимента, но как правило стимулы лучше генерировать и/или загружать в память презентационного компьютера до начала основного блока эксперимента
    • Если есть возможность создать стимулы внутри программы, а не хранить их отдельно, ей нужно пользоваться (тем самым обеспечивается воспроизводимость и контроль за рандомизацией)
  • Взаимодействие оборудования для предъявления стимулов с оборудованием для регистрации данных
    • До сбора данных нужно учесть все возможные временнЫе задержки и оттестировать синхронизацию оборудования (будь то клавиатура, кнопки, айтрекер, ЭЭГ и т. д.). Нет ничего хуже, чем собрать большой датасет и обнаружить, что его нельзя использовать из-за проблем взаимодействия оборудования.
    • Желательно предусмотреть онлайн-контроль за данными во время проведения эксперимента (например, выведение на экран экспериментатора ответа/времени реакции), и следить за работой оборудования и программы в течение всего эксперимента.
    • Это звучит глупо, но многие об этом забывают. Проследите, чтобы испытуемому было удобно выполнять вашу задачу. Кнопки должны спокойно нажиматься без проблем типа «долгое нажатие = двойное нажатие», фиксационная точка должна быть удобного размера, в течение пробы не должно быть странных смен цветов и морганий экрана, программа не должна закрываться от случайного нажатия на пробел,… Список можно продолжать бесконечно, но всех этих проблем разом можно избежать, если поставить себя на место испытуемого, пройти свой собственный эксперимент, отпилотировать его на коллегах и не полениться исправить все косяки.
  • Общая структура (блоки, пробы)
    • Рандомизация. Рандомизация должна быть умной. Во-первых, очень полезно научиться использовать random seed, чтобы иметь возможность воспроизвести любую псевдослучайно сгенерированную последовательность. Во-вторых, часто бывает необходимо избегать случайного повтора одного типа проб n раз подряд и прочих фокусов неконтролируемой рандомизации. В этом случае полезно сформулировать ограничивающий критерий и повторять рандомизацию до тех пор, пока этот критерий не будет удовлетворен.
    • Очень опасно оставлять испытуемого без регулярных перерывов. В лучшем случае он быстро устанет и начнет плохо выполнять задачу, в худшем — две трети эксперимента будет думать о том, когда же все это закончится, и опять же плохо выполнять задачу. Прерывание каждые 7−10 минут — это разумный ритм, обеспечивающий не только комфорт самого испытуемого, но и качество ваших данных.
    • Другие хитрости для сохранения внимания испытуемого в течение длинного эксперимента — звуковое подтверждение ответа, обратный отсчет блоков, обратная связь в перерывах (осторожно: обратная связь по корректности выполнения задания может вносить собственный вклад в данные).
    • Не секрет, что при выполнении экспериментов внимание испытуемых неравномерно, часто люди ловят себя на том, что вроде выполняют задачу, а вроде и думают о чем-то своем. В целом, вышеописанные хитрости минимизируют эти проблемы, но тем не менее бывает полезно дать возможность испытуемому признаться, что он отвлекся во время пробы, и не регистрировать такие данные, а саму пробу вернуть в пул. Также часто имеет смысл отменять и повторять неправильно выполненные пробы (например, когда прервалась фиксация, было зафиксировано моргание в критический период и т. д.)
  • Регистрация и сохранение данных
    • Имена файлов должны быть уникальны, для этого полезно в имя файла добавить точное время его создания
    • Файлы с результатами должны по возможности сохраняться несколько раз в течение эксперимента (в случае бихевиоральных данных — в конце каждой пробы), чтобы в случае прерывания эксперимента данные не были потеряны
    • Формат сохранения данных зависит от типа данных и ваших планов, но всегда полезно по возможности иметь копию данных в не-проприетарном формате.
    • Согласно Декларации Хельсинки, которая описывает правила проведения экспериментов на людях, данные должы храниться так, чтобы испытуемого нельзя было по ним идентифицировать. Соответственно, названия файлов должны быть зашифрованы, а документы, по которым можно сопоставить испытуемого и его личные данные, должны храниться на другом носителе. Подобные правила существуют и для «сложных» типов данных (пациенты, видео-, онлайн-), и очень важно ознакомиться с ними до проведения эксперимента, чтобы правильно его сконструировать.
    • Описательные данные об испытуемом (возраст, ведущая рука и т. д., но не имя) и метаданные удобно хранить в том же файле, что и сами данные эксперимента, чтобы минимизировать шансы потери или путаницы в информации.
    • Если ваш эксперимент предполагает некий рассказ о том, что все это было (например, когда вы работаете со студентами или добровольцами из числа интересующихся), удобно в конце эксперимента показать человеку любого рода график, описывающий его результаты (пусть даже это и не то, что вы изучаете, а просто % правильных ответов в двух условиях или картинка с какого-то этапа сбора данных). Чтобы испытуемые старались производить хорошие данные, нужно поддерживать их интерес к науке=).

Как вы видите, все эти рекомендации сводятся к тому, чтобы максимально автоматизировать все, что можно автоматизировать, при этом проявляя внимательность к деталям и к возможностям испытуемого. Чем больше (в разумных пределах) работы будет вложено в протокол, тем меньше вероятность критических проблем на следующих этапах исследования, о которых мы поговорим в другой раз.

Pic: Tanji & Evarts (1976)

Парад ссылок

Три ссылки на свежие учебные материалы, которые могут оказаться полезными для когнитивистов. Enjoy!

  • В издательстве O’Reilly Media вышел онлайн-сборник Python for Scientists, в который вошли главы из нескольких книг по программированию и анализу данных (Python for Data Analysis, Bioinformatics Data Skills, Effective Computation in Physics и Python Data Science Handbook). Сборник находится в открытом доступе по ссылке: www.oreilly.com/programming/free/python-for-scientists.csp
  • Исследователи из Radboud University опубликовали уроки по бихевиоральному моделированию, а именно по обучению с подкреплением и байесовскому обучению (MATLAB)
    • http://hannekedenouden.ruhosting.nl/RLtutorial/Instructions.html
  • Опубликованы демонстрации по байесовскому анализу данных в Python и Matlab (дополнение к книге Bayesian Data Analysis, 3rd ed by Gelman et al.)
    • https://github.com/avehtari/BDA_py_demo
    • https://github.com/avehtari/BDA_m_demos

Первая статья проекта MyConnectome

Прошлая неделя выдалась продуктивной для исследователей коннектома человека. Во-первых, в Neuron вышла удивительная статья от группы Рассела Полдрака по результатам проекта MyConnectome (http://myconnectome.org/).
На протяжении 76 недель (!), три раза в неделю (!) сам Рассел Полдрак проводил время в сканере, собирая данные о своем мозге (фМРТ с классическими задачами и в состоянии покоя). В результате в распоряжении исследователей оказалось огромное количество данных об одном-единственном мозге. С помощью этих бесценных данных стало возможным в том числе проанализировать, насколько парцелляция на основе состояния покоя соответствует активациям, полученным у того же испытуемого при выполнении задаы, а также проверить, насколько стабильны результаты от сессии к сессии у одного и того же испытуемого. Подробнее об исследовании можно прочесть в статье, или посмотреть в замечательном видео-абстракте, но основные результаты показали, что в целом возможно восстановить стабильную и подробную картину функциональной структуры индивидуального мозга, и эта картина в чем-то будет отличаться от групповой (почему -- отдельный вопрос), но для составления такого «портрета» необходимо гораздо больше данных, чем принято записывать в классических фМРТ-парадигмах. Кроме того, отмечено, что источники изменчивости в данных различаются при внутрииндивидуальном и межиндивидуальном анализе.

Ссылка на статью (и видео-абстракт!): T. Laumann et al. (2015) Functional System and Areal Organization of a Highly Sampled Individual Human Brain.
http://www.cell.com/neuron/abstract/S0896−6273(15)00600−5

И десерт. Вышел совершенно чудесный тулбокс для анализа связей мозга (connectivity). Он называется Multimodal Imaging Brain Connectivity Analysis toolbox (MIBCA) и позволяет проводить анализ мультимодальных данных в одной среде от начала и до конца, что раньше было практически невозможно. Тулбокс и подробности можно найти здесь: www.mibca.com/, а статью с описанием методов -- здесь: peerj.com/articles/1078/

Приятных вам связей, #горячиеюныекогнитивные!

Курс по MATLAB с бесплатной лицензией

Преподаватели из Vanderbilt University создали вводный курс по программированию на основе MATLAB на MOOC-платформе Coursera.

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

www.coursera.org/course/matlab

Абигайл Новик: «Вы говорите компьютеру, что вы хотите, и он это делает именно так как вам нужно»

Абигейл Новик, специалист-исследователь, Princeton Neuroscience Institute, столкнулась с созданием экспериментов в Матлабе, уже имея кое-какой опыт программирования, но мы все же решили спросить, что бы она посоветовала начинающим.

«Итак, мои мысли о Матлабе. Не то чтобы очень глубоко и философски, но все же

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

— На сайте Матлаба есть огромное количество примеров и демонстраций. Используйте их!http://www.mathworks.com/academia/student_center/tutorials/launchpad.html

— Начинать лучше с установки Psychtoolbox и ознакомления с их примерами. Используйте код, написанный кем-то другим, или демонстрационные примеры в качестве основы для ваших собственных программ. Вы можете взять демо-код и попробовать немного его изменить так, чтобы программа делала то, что ВЫ хотите чтобы она делала! Это один из лучших способов научиться программировать, потому что вам не понадобится начинать с нуля. Вместо этого вы можете просто упасть кому-то на хвост;)

— Если вы застряли — погуглите. Вы не поверите, сколько советов доступны онлайн. Например, предположим, вы используете Psychtoolbox и вам нужно поменять цвет текста на экране, но вы не знаете, как это сделать. Наберите в поисковике «psychtoolbox change color text displayed on screen matlab» и вся нужная документация окажется в ваших руках.

— Две важнейшие вещи, которым нужно научиться начинающим программировать — условия и циклы. Этому может бесплатно и просто обучить Code Academy (http://www.codecademy.com/)

— Матлаб — очень, очень буквальный язык. Вы говорите компьютеру, что вы хотите чтобы он сделал, и он делает это ИМЕННО так, как вы описали. Придется научиться очень точно формулировать!"

Катерина Плацек: «MATLAB это не магия»

#горячихюныхкогнитивных много по всему миру, и проблемы у них на самом деле не такие разные, как это может показаться. #thinkcognitive попросил Катерину Плацек (ассистент лаборатории, факультет психологии University of Texas at Austin) рассказать о своем опыте общения с Matlab:

Впервые я столконулась с Матлабом (да и с кодом вообще) в онлайн-курсе, который я проходила во время обучения в магистратуре. Нам давались краткие объяснения основных понятий, после чего предлагалось перейти к самостоятельной домашней работе. К сожалению, оказалось, что от природы я не сильна в программировании, и, огорчившись, я бросила учиться, попросив помощи с заданиями компетентного в Матлабе друга. Как можно ожидать, в результате я обрела лишь базовое понимание Матлаба и огромное разочарование.

Следующая глава саги об изучении Матлаба открылась, когда передо мной встала задача создания бихевиоральной экспериментальной парадигмы с использованием пакета PsychToolbox — дополнения к Матлабу для психологического экспериментирования. В этот раз я училась по книге «Matlab for Behavioral Scientists» (автор David A. Rosenbaum). Книга оказалась спасением — основы программирования и инструкции для Матлаба были объяснены понятным не-техническим языком, и адаптированы для начинающих. Так я стала понимать «как» и «почему» программирования.

Но тем не менее, простое чтение учебника и выполнения упражнений не продвинули бы меня особенно далеко. Как я слышала от многих, и как я понимаю теперь сама, единственный способ учиться — сделать самостоятельный проект. Это не значит, что вы будете сидеть перед экраном компьютера и расстраиваться от каждого сообщения об ошибке (и думать, что вы необучаемы — я точно так думала, когда начинала). Вместо этого, используйте свои знания, пополняйте их, и просите помощи! Лучшие учителя — это ваши коллеги, которые скорее всего в свое время преодолевали те же самые трудности. Матлаб — это не магия. Это компьютерная программа, помогающая вам в проведении исследований, которые вы умеете делать. Я не могу назвать себя ни экспертом в Матлабе, ни человеком которому нравится программировать, но сейчас я могу редактировать и чинить и создавать собственный код. Будьте к себе снисходительны — не все (как я) от природы способны программировать, и вы обязательно научитесь — просто будьте упорны и не вешайте нос!

Анастасия Федорова: «не бояться и представлять себе конкретную цель»

#thinkcognitive продолжает публиковать истории о том, как психологи учатся программированию и разработке экспериментов на компьютере. Сегодня — рассказ Анастасии Федоровой, ранее студента РГГУ, а ныне — инженера-исследователя лаборатории нейроэргономики и интерфейсов мозг-компьютер Курчатовского института. Это еще и хороший пример огромного поля возможностей для работы когнитивных психологов — например, они могут работать в сотрудничестве с нейрофизиологами и инженерами над расширением возможностей нашего тела. От инсайтных задач к управлению робо-рукой движениями глаз =)

«Свой первый эксперимент я сделала 1,5 года назад на платформе Flash 8 с помощью языка ActionScript 2.0. Я продолжала исследование Андрея Четверикова и сначала использовала его программу, но затем решила попробовать сделать что-то сама. Flash я выбрала, так как в моем эксперименте нужно было много работать с графикой. Училась я так: читала документацию, учебники и форум flasher.ru. Через пару недель была готова первая нормально работающая программа для моего диплома.

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

Неделю назад я закончила курс по R, который проходил на сайте coursera.org (https://class.coursera.org/compdata-004). Рекомендую всем студентам этот замечательный сайт: совершенно за бесплатно можно пройти крутейшие курсы ведущих мировых университетов. Курс был достаточно сжатый, но познавательный, мне очень понравились домашние задания, в которых нужно было писать небольшие программы, производящие сортировку и статистическую обработку данных. В апреле будет еще один курс от того же преподавателя (https://www.coursera.org/course/rprog), очень рекомендую всем, кто хочет изучать R, но не знает с чего начать :)

Сейчас я делаю программу для управления компьютером с помощью движений глаз. Разработчики айтрекера, который стоит у нас в лаборатории, предоставили библиотеки и примеры на Питоне и Си. Я решила начать с Си и сделала программу, распознающую движения глаз и позволяющую с их помощью управлять графическими объектами на экране. Инженер нашей лаборатории объединил мою программу со своей, которая осуществляет управление роботизированной рукой, и сейчас мы делаем эксперимент, в котором пользователь управляет роботом с помощью движений глаз! Это безумно круто и я горжусь тем, что моя программа стала частью этого эксперимента :)

Мне кажется, что главное в программировании — не бояться и представлять себе конкретную цель. Это безумно интересно и очень вдохновляет! Нет ничего приятнее, чем видеть, как твоя программа работает и приносит пользу! :) Я еще только начинаю программировать и собираюсь осваивать новые языки и платформы, ведь столько всего полезного можно сделать самому, имея только время, желание и компьютер! XD"

Друзья, если у вас есть по этому поводу истории или соображения, которыми вы хотели бы поделиться, мы будем рады их опубликовать.

Учитесь программировать и участвуйте в конкурсе NERD! grant.cogitoergo.ru/#nerd

https://www.youtube.com/watch?feature=player_embedded&v=WlxbDnv27dc

Testimonials: Eлена Горбунова

NERD — наш самый интересный конкурс! Но если ты никогда не создавал сам эксперименты на компьютере, этот конкурс может показаться пугающим. Поэтому мы попросили тех, кто уже перешагнул этот порог, рассказать о первом самостоятельно сделанном эксперименте и поделиться опытом (само)обучения программированию.

Сегодня мы публикуем первый полученный нами ответ =)

Елена Горбунова, аспирант МГУ:

«Разумеется, с первого раза у меня ничего не получилось, и при попытке запустить первый скрипт система тут же выдала ошибку».

Для программирования своих экспериментов я использую компьютерный тахистоскоп TX. Моим самым первым экспериментом было воспроизведение эффекта мигания внимания из исследования зарубежных учёных. Это делалось с целью подбора размеров стимулов, временных интервалов предъявления стимулов и т. п, чтобы в дальнейшем уже можно было провести свой эксперимент с модифицированной методикой.

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

Разумеется, с первого раза у меня ничего не получилось, и при попытке запустить первый скрипт система тут же выдала ошибку. Самым сложным для меня было (и до сих пор является) понять, где именно я допустила ошибку и почему ничего не работает. На мой взгляд, при обучении программированию очень важно иметь опытного товарища, который мог бы помочь и подсказать. К счастью, у меня таких было даже несколько.

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

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

Учитесь программировать и участвуйте в конкурсе NERD! http://grant.cogitoergo.ru/#nerd

1p6TJgQ7fWo