Контекст: в ответ на предыдущий вопрос о воспроизводимых исследованиях Джейк написал
Одна проблема, которую мы обнаружили при создании нашего архива JASA, заключалась в том, что версии и значения по умолчанию пакетов CRAN изменились. Итак, в этот архив мы также включили версии пакетов, которые мы использовали. Система, основанная на виньетировании, вероятно, сломается, поскольку люди меняют свои пакеты (не уверен, как включить дополнительные пакеты в пакет, который является Компендиумом).
Наконец, мне интересно, что делать, когда само R меняется. Существуют ли способы создания, скажем, виртуальной машины, которая воспроизводит всю вычислительную среду, используемую для бумаги, так, чтобы виртуальная машина не была огромной?
Вопрос:
- Каковы хорошие стратегии для обеспечения воспроизводимого анализа данных в будущем (скажем, через пять, десять или двадцать лет после публикации)?
- В частности, каковы хорошие стратегии для максимизации текущей воспроизводимости при использовании Sweave и R?
Похоже, это связано с вопросом о том, что проект анализа воспроизводимых данных будет работать на чужой машине с немного другими настройками по умолчанию, пакетами и т. Д.
источник
Ответы:
На каком-то уровне это становится невозможным. Рассмотрим случай известной ошибки с плавающей точкой в Pentium: вам нужно не только сохранять свои модели, ваши данные, ваши параметры, ваши пакеты, все внешние пакеты, хост-систему или язык (скажем, R), а также ОС. плюс потенциально аппаратное обеспечение, на котором все это работает. Теперь рассмотрим, что некоторые результаты могут быть основаны на моделировании и требуют определенного кластера машин ...
Это очень много для практичности.
С учетом вышесказанного, я думаю, что более прагматичные решения по управлению версиями вашего кода (и, возможно, также ваших данных) в контроле версий, хранении версий всех соответствующих программ и обеспечении возможности воспроизводить результаты путем запуска одного скрипта верхнего уровня могут быть " достаточно хороший "компромисс.
Ваш пробег может варьироваться. Это также отличается в зависимости от дисциплины или отрасли. Но помните старую мысль о невозможности надежных систем: вы просто создаете более умных дураков.
источник
lme4
).Первым шагом в воспроизводимости является обеспечение того, чтобы данные были в формате, который легко читается будущими исследователями. Плоские файлы - очевидный выбор (Фэйрберн в прессе).
Чтобы сделать код полезным в долгосрочной перспективе, возможно, лучше всего написать ясную документацию, которая объясняет, как работает код, а также как он работает, так что если ваша цепочка инструментов исчезнет, ваш анализ может быть повторно реализован в какой-то будущей системе ,
источник
Одна стратегия предполагает использование
cacher
пакета.Дальнейшее обсуждение и примеры можно найти в книге:
Тем не менее, у меня нет непосредственного опыта его эффективности в обеспечении непрерывной воспроизводимости.
источник
Если вы заинтересованы в маршруте виртуальной машины, я думаю, что это можно сделать с помощью небольшого дистрибутива linux с конкретной версией R и установленными пакетами. Данные включены вместе со сценариями и упаковывают все это в файл виртуальной коробки .
Это не позволяет обойти упомянутые ранее проблемы с оборудованием, такие как ошибка процессора Intel.
источник
Я рекомендовал бы две вещи в дополнение к превосходным ответам, уже присутствующим;
В ключевых точках вашего кода выгрузите текущие данные в виде плоского файла с соответствующим именем и описанием в комментариях, таким образом выделяя, если один пакет дал отличающиеся результаты там, где были введены различия. Эти файлы данных, а также исходные данные и полученные результаты должны быть включены в ваш «воспроизводимый набор исследований»
Включите некоторое тестирование соответствующих пакетов в ваш код, например, используя что-то вроде TestThat . Сложная часть заключается в создании небольших воспроизводимых тестов, которые, вероятно, высветят любые изменения в том, что делает пакет, которые относятся к вашему анализу. Это, по крайней мере, подчеркнул бы для другого человека, что есть некоторая разница в окружающей среде.
источник
Хорошие предложения, у меня есть много вещей, чтобы посмотреть сейчас.
Помните, что одним из чрезвычайно важных соображений является обеспечение того, чтобы работа была «правильной» в первую очередь. Именно эту роль играют такие инструменты, как Sweave , увеличивая вероятность того, что то, что вы сделали, и то, что вы сказали, что сделали, - это одно и то же.
источник