Wie kann die langfristige Reproduzierbarkeit der Forschung erhöht werden (insbesondere mit R und Sweave)?


31

Kontext: Als Antwort auf eine frühere Frage zur reproduzierbaren Forschung schrieb Jake

Ein Problem, das wir beim Erstellen unseres JASA-Archivs festgestellt haben, war, dass sich Versionen und Standardeinstellungen von CRAN-Paketen geändert haben. In diesem Archiv sind also auch die Versionen der von uns verwendeten Pakete enthalten. Das vignettenbasierte System wird wahrscheinlich kaputt gehen, wenn Leute ihre Pakete ändern (nicht sicher, wie zusätzliche Pakete in das Paket, das das Kompendium ist, aufgenommen werden sollen).

Schließlich frage ich mich, was ich tun soll, wenn sich R selbst ändert. Gibt es Möglichkeiten, beispielsweise eine virtuelle Maschine zu erstellen, die die gesamte für ein Papier verwendete Computerumgebung so reproduziert, dass die virtuelle Maschine nicht übermäßig groß ist?

Frage:

  • Was sind gute Strategien, um sicherzustellen, dass reproduzierbare Datenanalysen in Zukunft reproduzierbar sind (etwa fünf, zehn oder zwanzig Jahre nach Veröffentlichung)?
  • Welche Strategien bieten sich insbesondere an, um die fortlaufende Reproduzierbarkeit bei Verwendung von Sweave und R zu maximieren?

Dies hängt anscheinend damit zusammen, dass sichergestellt werden muss, dass ein Projekt zur reproduzierbaren Datenanalyse auf einem anderen Computer mit geringfügig unterschiedlichen Standardeinstellungen, Paketen usw. ausgeführt wird.


Haben Sie Unit Testing mit RUnit in Betracht gezogen, um das theoretische Verhalten zu überprüfen?

Antworten:


18

Auf einer bestimmten Ebene wird dies unmöglich. Betrachten Sie den Fall des berühmten Pentium-Fließkomma-Fehlers: Sie müssen nicht nur Ihre Modelle, Ihre Daten, Ihre Parameter, Ihre Pakete, alle externen Pakete, das Host-System oder die Sprache (z. B. R) sowie das Betriebssystem erhalten. plus möglicherweise die Hardware, auf der alles lief. Bedenken Sie nun, dass einige Ergebnisse möglicherweise simulationsbasiert sind und eine bestimmte Gruppe von Maschinen erfordern ...

Das ist nur ein bisschen zu viel, um praktisch zu sein.

Vor diesem Hintergrund denke ich, dass pragmatischere Lösungen für die Versionierung Ihres Codes (und möglicherweise auch Ihrer Daten) bei der Revisionskontrolle, das Speichern von Versionen aller relevanten Software und die Möglichkeit, die Ergebnisse durch Ausführen eines einzelnen Skripts der obersten Ebene zu reproduzieren, möglicherweise ein Problem darstellen. " gut genug "kompromiss.

Ihr Kilometerstand kann variieren. Dies ist auch in den verschiedenen Disziplinen oder Branchen unterschiedlich. Denken Sie jedoch an die alte Erkenntnis über die Unmöglichkeit narrensicherer Systeme: Sie erschaffen lediglich intelligentere Narren.


1
(+1) Ich kann dir nur zustimmen. In Bezug auf R scheint es sehr schwierig zu sein, sicherzustellen, dass (a) einige Berechnungen nach der Aktualisierung eines Pakets reproduzierbar bleiben (was mir kürzlich passiert), und (b) eines Tages kein Konflikt mit Abhängigkeiten auftauchen wird (es war zB der Fall, für lme4).
Chl

13

Der erste Schritt zur Reproduzierbarkeit besteht darin, sicherzustellen, dass die Daten in einem Format vorliegen, das für zukünftige Forscher leicht lesbar ist. Hier sind flache Dateien die klare Wahl (Fairbairn in der Presse).

Um den Code langfristig nutzbar zu machen, ist es möglicherweise am besten, eine klare Dokumentation zu schreiben, in der sowohl die Funktionsweise des Codes als auch dessen Funktionsweise erläutert werden. Wenn also Ihre Toolkette verschwindet, kann Ihre Analyse in einem zukünftigen System erneut implementiert werden .


1
Vereinbarte, solide Daten und Metadaten zuerst.
mindless.panda

11

Eine Strategie beinhaltet die Verwendung des cacherPakets.

  • Peng RD, Eckel SP (2009). "Verteilte reproduzierbare Forschung mit zwischengespeicherten Berechnungen", IEEE Computing in Science and Engineering, 11 (1), 28–34. ( PDF online )
  • Weitere Artikel finden Sie auf der Website von Roger Peng

Weitere Diskussionen und Beispiele finden Sie im Buch:

Ich habe jedoch keine Erfahrung aus erster Hand mit der Gewährleistung der fortlaufenden Reproduzierbarkeit.


7

Wenn Sie an der Route der virtuellen Maschine interessiert sind, ist dies meiner Meinung nach über eine kleine Linux-Distribution mit der spezifischen Version von R und installierten Paketen möglich. Daten sind zusammen mit Skripten enthalten und verpacken das Ganze in einer virtuellen Box- Datei.

Hiermit werden die bereits erwähnten Hardwareprobleme wie der Intel-CPU-Fehler nicht umgangen.


4

Ich würde zwei Dinge zusätzlich zu den bereits vorhandenen ausgezeichneten Antworten empfehlen;

  • Geben Sie die aktuellen Daten an den wichtigsten Stellen in Ihrem Code als Flat-File aus, das entsprechend benannt und in Kommentaren beschrieben ist, und heben Sie so hervor, ob ein Paket bei den eingeführten Unterschieden zu unterschiedlichen Ergebnissen geführt hat. Diese Datendateien sowie die ursprüngliche Eingabe und die resultierende Ausgabe sollten in Ihrem "reproduzierbaren Forschungssatz" enthalten sein.

  • Fügen Sie einige Tests der betreffenden Pakete in Ihren Code ein, z. B. mit TestThat . Der schwierige Teil besteht darin, kleine, reproduzierbare Tests durchzuführen, die Änderungen in der Funktion eines Pakets aufzeigen , die sich auf Ihre Analyse beziehen . Dies würde zumindest eine andere Person darauf aufmerksam machen, dass es Unterschiede in den Umgebungen gibt.


1

Gute Vorschläge, ich muss mich jetzt mit vielen Dingen befassen.

Denken Sie daran, dass eine äußerst wichtige Überlegung darin besteht, sicherzustellen, dass die Arbeit in erster Linie "korrekt" ist. Dies ist die Rolle, die Werkzeuge wie Sweave spielen, indem sie die Chancen erhöhen, dass das, was Sie getan haben, und das, was Sie gesagt haben, dasselbe sind.


1
Das Sumatra-Projekt kann ebenfalls hilfreich sein: neuralensemble.org/trac/sumatra/wiki . Sie können die Befehlszeilenschnittstelle verwenden, um Ihren Code auszuführen, sich in R oder etwas anderem zu befinden. Es gibt auch eine Python-API. Es gibt einen netten Blog-Beitrag über R-Blogger, in dem R-zentrierte Tools für reproduzierbare Forschung besprochen werden. Außerdem wird die Verwendung von Sumatra erwähnt. r-bloggers.com/managing-a-statistic-analysis-project- –guidelines-and-best-practices /
Josh Hemann
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.