Как эффективно управлять проектом статистического анализа?

89

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

Я часто выступаю за использование R и последовательную организацию файлов в отдельных папках (файл необработанных данных, файл преобразованных данных, сценарии R, рисунки, заметки и т. Д.). Основная причина такого подхода заключается в том, что анализ может быть легче выполнить позже (например, когда вы забыли, как вы создали определенный график).

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

chl
источник
Я голосую, чтобы закрыть этот вопрос как не по теме, потому что он касается управления проектами
Аксакал
2
@Aksakal: Я думаю, что ты немного резок. :) Это актуально для " людей, интересующихся статистикой ". Также более 70 голосов настоятельно рекомендуют обычным пользователям найти этот вопрос интересным и полезным.
usεr11852 говорит восстановить Monic
1
Я думаю, что это должно быть рассмотрено по теме здесь.
gung - Восстановить Монику
@gung Не могли бы вы добавить ответ в эту ветку Meta, чтобы мы могли это обсудить?
говорит амеба, восстанови Монику

Ответы:

80

Я составляю краткий ряд руководств, которые я нашел для SO (как предложено @Shane), Biostar (далее BS) и для этого SE. Я изо всех сил старался признать право собственности на каждый предмет и выбрать первый или высоко оцененный ответ. Я также добавил свои собственные и помеченные элементы, которые являются специфическими для среды [R].

Управление данными

  • Создать структуру проекта для хранения всех вещей в нужном месте (данные, код, цифры и т. Д., Giovanni / BS)
  • Никогда не изменяйте необработанные файлы данных (в идеале, они должны быть только для чтения), копируйте / переименовывайте в новые при выполнении преобразований, очистки и т. Д.
  • Проверьте согласованность данных ( whuber / SE)
  • Управляйте зависимостями сценариев и потоком данных с помощью инструмента автоматизации сборки, такого как GNU make ( Карл Броман / Захари Джонс )

кодирование

  • организовать исходный код в логических единицах или строительных блоках ( Josh Reich / hadley / ars / SO; giovanni / Khader Shameer / BS)
  • отделить исходный код от редактирования, особенно для большого проекта - частично совпадая с предыдущим элементом и отчетами
  • Документируйте все, например, с помощью [R] кислорода ( Shane / SO) или последовательной самостоятельной аннотации в исходном файле - хорошее обсуждение Medstats, Документирование анализа и редактирование данных Опции
  • [R] Пользовательские функции могут быть помещены в выделенный файл (который может быть получен при необходимости), в новой среде (чтобы избежать заполнения пространства имен верхнего уровня, Brendan OConnor / SO) или пакета ( Dirk Eddelbuettel / Шейн / ТАК)

Анализ

  • Не забудьте установить / записать начальное число, которое вы использовали при вызове RNG или стохастических алгоритмов (например, k-means)
  • Для исследований Монте-Карло может быть интересно хранить спецификации / параметры в отдельном файле ( sumatra может быть хорошим кандидатом, giovanni / BS)
  • Не ограничивайте себя одним графиком на переменную, используйте многовариантные (Trellis) дисплеи и интерактивные инструменты визуализации (например, GGobi)

Versioning

  • Для отслеживания / экспорта используйте какой-нибудь контроль версий , например, Git ( Sharpie / VonC / JD Long / SO) - это следует из хороших вопросов, заданных @Jeromy и @Tal
  • Резервное копирование всего, на регулярной основе ( Sharpie / JD Long / SO)
  • Сохраняйте журнал своих идей или полагайтесь на средство отслеживания проблем, например ditz ( giovanni / BS) - частично избыточное с предыдущим элементом, поскольку оно доступно в Git

Редактирование / Отчетность

В качестве дополнительного примечания Хэдли Уикхем предлагает всесторонний обзор управления проектами R , включая воспроизводимые примеры и единую философию данных .

Наконец, в своем R-ориентированном рабочем процессе анализа статистических данных Оливер Кирхкамп предлагает очень подробный обзор того, почему принятие и соблюдение определенного рабочего процесса поможет статистикам сотрудничать друг с другом, обеспечивая при этом целостность данных и воспроизводимость результатов. Это также включает в себя некоторое обсуждение использования системы ткачества и контроля версий. Пользователи Stata также могут найти полезными книгу Дж. Скотта Лонга « Рабочий процесс анализа данных с использованием Stata» .

chl
источник
Отличная работа, гл! Было бы хорошо, если бы я опубликовал это в своем блоге? (Я имею в виду, это текст cc, так что я мог, но я хотел, чтобы вы разрешили в любом случае :)) Приветствия, Тал
Тал Галили
@Tal Нет проблем. Это далеко не полный список, но, возможно, вы сможете собрать другие полезные ссылки позже. Кроме того, не стесняйтесь адаптировать или реорганизовать в лучшую сторону.
ЧЛ
+1 Это хороший список. Вы можете подумать «принять это», чтобы оно всегда было на высоте; учитывая, что это CW, любой может держать его в курсе.
Шейн
@Shane Ну, я в долгу перед вами за первый ответ с такими полезными ссылками. Не стесняйтесь добавлять / изменять, как вы хотите.
ЧЛ
Я переиздал это здесь. Отличный список! r-statistics.com/2010/09/…
Тал Галили
21

Это не дает конкретного ответа, но вы, возможно, захотите взглянуть на следующие связанные вопросы:

Вас также может заинтересовать недавний проект Джона Майлза Уайта по созданию шаблона статистического проекта.

Шейн
источник
Спасибо за ссылки! Вопрос открыт для любого статистического программного обеспечения - я время от времени использую Python и Stata, поэтому мне интересно, могут ли подтвержденные пользователи принести туда интересные рекомендации.
ЧЛ
Абсолютно; хотя я бы добавил, что рекомендации в приведенных выше ссылках могут действительно относиться к любому статистическому проекту (независимо от языка).
Шейн
Определенно да! Я обновил свой вопрос в то же время.
ЧЛ
8

Это совпадает с ответом Шейна, но, на мой взгляд, есть два основных направления:

  • Воспроизводимость ; не только потому, что вы не закончите с результатами, которые сделаны «как-то», но и сможете быстрее выполнить анализ (по другим данным или с незначительно измененными параметрами) и у вас будет больше времени, чтобы подумать о результатах. Для огромных данных вы можете сначала проверить свои идеи на небольшом «игровом наборе», а затем легко расширить на все данные.
  • Хорошая документация ; комментированные скрипты под контролем версий, некоторые исследовательские журналы, даже система тикетов для более сложных проектов. Улучшает воспроизводимость, упрощает отслеживание ошибок и написание окончательных отчетов.
user88
источник
+1 Мне нравится второй пункт (я использую roxygen + git). Первый момент заставляет меня задуматься о возможности передать ваш код другому статистику, который сможет воспроизвести ваши результаты на более поздней стадии проекта, без какой-либо помощи.
ЧЛ
Воспроизводимость? В любом случае данные имеют случайную ошибку, так кого это волнует. Документация? Два возможных ответа: 1) мы слишком заняты, у нас нет времени на документацию или 2) у нас был только бюджет, чтобы провести анализ или задокументировать его, поэтому мы решили провести анализ. Ты думаешь я шучу? Я видел / слышал это отношение во многих случаях - в проектах, на которых жизнь каталась на линии.
Марк Л. Стоун
4

ван Belle является источником правил успешных проектов в области статистики.

Карлос Аккиоли
источник
1

Просто мои 2 цента. Я нашел Notepad ++ полезным для этого. Я могу поддерживать отдельные сценарии (управление программой, форматирование данных и т. Д.) И файл .pad для каждого проекта. Вызов файла .pad - это все сценарии, связанные с этим проектом.

Уэс МакКардл
источник
3
Ты имеешь в виду, блокнот ++ с использованием npptor :)
Тал Галили
1

Хотя другие ответы великолепны, я бы добавил еще одно мнение: избегайте использования SPSS. Я использовал SPSS для моей магистерской диссертации и теперь на моей постоянной работе в области исследования рынка.

Работая с SPSS, было невероятно сложно разработать организованный статистический код из-за того, что SPSS плохо обрабатывает несколько файлов (конечно, вы можете обрабатывать несколько файлов, но это не так безболезненно, как R), потому что вы не можете хранить наборы данных к переменной - вы должны использовать код набора данных «активировать x», который может быть очень болезненным. Кроме того, синтаксис неуклюж и поощряет сокращения, которые делают код еще более нечитаемым.

Кристиан Зауэр
источник
0

Jupyter Notebooks, которые работают с R / Python / Matlab / etc, избавляют от необходимости запоминать, какой скрипт генерирует определенную фигуру. Этот пост описывает аккуратный способ держать код и рисунок рядом друг с другом. Хранение всех рисунков для статьи или тезисной главы в одной записной книжке облегчает поиск кода с привязкой.

Более того, даже лучше, потому что вы можете прокрутить, скажем, дюжину цифр, чтобы найти нужную. Код остается скрытым, пока он не понадобится.

hugke729
источник