Wie kann ein statistisches Analyseprojekt effizient verwaltet werden?

89

Wir hören oft von Projektmanagement- und Entwurfsmustern in der Informatik, aber seltener in der statistischen Analyse. Es scheint jedoch, dass ein entscheidender Schritt zur Gestaltung eines effektiven und dauerhaften statistischen Projekts darin besteht, die Dinge organisiert zu halten.

Ich befürworte oft die Verwendung von R und eine konsistente Organisation von Dateien in separaten Ordnern (Rohdatendatei, transformierte Datendatei, R-Skripte, Abbildungen, Notizen usw.). Der Hauptgrund für diesen Ansatz ist, dass es möglicherweise einfacher ist, Ihre Analyse später auszuführen (wenn Sie beispielsweise vergessen haben, wie Sie ein bestimmtes Diagramm erstellt haben).

Was sind die Best Practices für das statistische Projektmanagement oder welche Empfehlungen möchten Sie aus eigener Erfahrung abgeben? Dies gilt natürlich für jede statistische Software. ( eine Antwort pro Post, bitte )

chl
quelle
Ich
stimme dafür,
2
@Aksakal: Ich denke, du bist ein bisschen hart. :) Es ist relevant für " Statistikinteressierte ". Auch die über 70 Stimmen deuten stark darauf hin, dass Standardbenutzer diese Frage von Interesse und Nützlichkeit fanden.
usεr11852
1
Ich denke, das sollte hier thematisiert werden.
gung
@gung Möchtest du vielleicht eine Antwort zu diesem Meta-Thread hinzufügen, damit wir darüber diskutieren können?
Amöbe

Antworten:

80

Ich erstelle eine kurze Reihe von Richtlinien, die ich zu SO (wie von @Shane vorgeschlagen), Biostar (im Folgenden BS) und dieser SE gefunden habe. Ich habe mein Bestes getan, um das Eigentum an jedem Gegenstand anzuerkennen und die erste oder höchst bewertete Antwort auszuwählen. Ich habe auch eigene Dinge hinzugefügt und Elemente markiert, die für die [R] -Umgebung spezifisch sind.

Datenmanagement

  • Erstellen Sie eine Projektstruktur, um alles am richtigen Ort zu halten (Daten, Code, Zahlen usw., giovanni / BS)
  • Verändern Sie niemals Rohdatendateien (im Idealfall sollten sie schreibgeschützt sein), kopieren Sie diese oder benennen Sie sie um, wenn Sie Transformationen, Bereinigungen usw. vornehmen.
  • Datenkonsistenz prüfen ( whuber / SE)
  • Verwalten Sie Skriptabhängigkeiten und Datenfluss mit einem Build-Automatisierungstool wie GNU make ( Karl Broman / Zachary Jones )

Codierung

Analyse

  • Vergessen Sie nicht, den Startwert festzulegen / aufzuzeichnen, den Sie beim Aufrufen von RNG oder stochastischen Algorithmen (z. B. k-means) verwendet haben.
  • Für Monte-Carlo-Studien kann es interessant sein, Spezifikationen / Parameter in einer separaten Datei zu speichern ( Sumatra ist möglicherweise ein guter Kandidat, Giovanni / BS).
  • Beschränken Sie sich nicht auf einen Plot pro Variable, sondern verwenden Sie multivariate (Trellis) Darstellungen und interaktive Visualisierungstools (z. B. GGobi).

Versionierung

  • Verwenden Sie eine Art Revisionskontrolle zum einfachen Verfolgen / Exportieren, z. B. Git ( Sharpie / VonC / JD Long / SO) - dies ergibt sich aus netten Fragen, die von @Jeromy und @Tal gestellt wurden
  • Alles regelmäßig sichern ( Sharpie / JD Long / SO)
  • Führen Sie ein Protokoll Ihrer Ideen, oder verlassen Sie sich auf einen Issue-Tracker wie ditz ( giovanni / BS) - teilweise überflüssig gegenüber dem vorherigen Artikel, da dieser in Git verfügbar ist

Bearbeitung / Berichterstellung

Als Randnotiz bietet Hadley Wickham einen umfassenden Überblick über das R-Projektmanagement , einschließlich reproduzierbarer Beispiele und einer einheitlichen Datenphilosophie .

Schließlich bietet Oliver Kirchkamp in seinem R-orientierten Workflow zur statistischen Datenanalyse einen sehr detaillierten Überblick darüber, warum die Übernahme und Einhaltung eines bestimmten Workflows die Zusammenarbeit von Statistikern erleichtert und gleichzeitig die Datenintegrität und Reproduzierbarkeit der Ergebnisse gewährleistet. Es enthält außerdem einige Erläuterungen zur Verwendung eines Web- und Versionskontrollsystems. Für Stata-Benutzer ist der Arbeitsablauf der Datenanalyse mit Stata von J. Scott Long möglicherweise ebenfalls hilfreich.

chl
quelle
Tolle Arbeit, Junge! Wäre es für Sie in Ordnung, wenn ich dies auf meinem Blog veröffentlichen würde? (Ich meine, dieser Text ist cc, also könnte ich, aber ich wollte, dass du es
Tal Galili
@Tal Kein Problem. Es ist alles andere als eine vollständige Liste, aber vielleicht können Sie zu einem späteren Zeitpunkt weitere nützliche Links zusammenfassen. Sie können sich auch besser anpassen oder neu organisieren.
Chl
+1 Dies ist eine schöne Liste. Sie könnten in Betracht ziehen, dies zu akzeptieren, damit es immer im Vordergrund steht. vorausgesetzt, es ist CW, kann jeder es auf dem Laufenden halten.
Shane
@Shane Nun, ich bin dir zu Dank verpflichtet, dass du eine erste Antwort mit so nützlichen Links gegeben hast. Fühlen Sie sich frei, die Art und Weise, die Sie möchten, hinzuzufügen / zu ändern.
Chl
Ich habe es hier neu veröffentlicht. Tolle Liste! r-statistics.com/2010/09/…
Tal Galili
21

Dies ist keine konkrete Antwort, aber Sie möchten sich möglicherweise die folgenden Fragen zum Stackoverflow ansehen:

Sie könnten auch an John Myles Whites aktuellem Projekt interessiert sein , um eine statistische Projektvorlage zu erstellen.

Shane
quelle
Danke für die Links! Die Frage ist für jede Statistiksoftware offen. Ich verwende von Zeit zu Zeit Python und Stata. Daher frage ich mich, ob bestätigte Benutzer dort interessante Empfehlungen abgeben können.
Chl
Absolut; obwohl ich hinzufügen möchte, dass die Empfehlungen in den obigen Links wirklich für jedes statistische Projekt gelten könnten (unabhängig von der Sprache).
Shane
Definitiv Ja! Gleichzeitig habe ich meine Frage aktualisiert.
Chl
8

Dies überschneidet sich mit Shane's Antwort, aber meiner Meinung nach gibt es zwei Hauptpfeiler:

  • Reproduzierbarkeit ; Nicht nur, weil Sie nicht mit Ergebnissen enden, die "irgendwie" erstellt wurden, sondern auch in der Lage sind, die Analyse schneller erneut auszuführen (bei anderen Daten oder bei geringfügig geänderten Parametern) und mehr Zeit zum Nachdenken über die Ergebnisse zu haben. Bei großen Datenmengen können Sie Ihre Ideen zunächst auf einem kleinen "Playset" testen und dann problemlos auf die gesamten Daten ausweiten.
  • Gute Dokumentation ; Kommentierte Skripte unter Versionskontrolle, einige Forschungsjournale, sogar Ticketsysteme für komplexere Projekte. Verbessert die Reproduzierbarkeit, vereinfacht die Fehlerverfolgung und das Erstellen von Abschlussberichten.
user88
quelle
+1 Ich mag den zweiten Punkt (ich benutze Sauerstoff + Git). Der erste Punkt lässt mich auch über die Möglichkeit nachdenken, Ihren Code einem anderen Statistiker zu geben, der Ihre Ergebnisse zu einem späteren Zeitpunkt des Projekts ohne Hilfe reproduzieren kann.
Chl
Reproduzierbarkeit? Daten haben sowieso zufällige Fehler, also wen interessiert das? Dokumentation? Zwei mögliche Antworten: 1) Wir sind zu beschäftigt, wir haben keine Zeit für Dokumentation oder 2) Wir hatten nur ein Budget, um entweder die Analyse durchzuführen oder sie zu dokumentieren, also entschieden wir uns für die Analyse. Glaubst du, ich mache Witze? Ich habe diese Einstellungen bei vielen Gelegenheiten gesehen / gehört - bei Projekten, bei denen Leben auf dem Spiel standen.
Mark L. Stone
4

van Belle ist die Quelle für die Regeln erfolgreicher statistischer Projekte.

Carlos Accioly
quelle
1

Nur meine 2 Cent. Ich habe Notepad ++ für nützlich befunden. Ich kann für jedes Projekt separate Skripte (Programmsteuerung, Datenformatierung usw.) und eine PAD-Datei verwalten. Beim Aufruf der PAD-Datei werden alle mit diesem Projekt verknüpften Skripten angezeigt.

Wes McCardle
quelle
3
Du meinst, Notizblock ++ mit der Verwendung von npptor :)
Tal Galili
1

Während die anderen Antworten großartig sind, möchte ich noch ein weiteres Gefühl hinzufügen: Vermeiden Sie die Verwendung von SPSS. Ich habe SPSS für meine Masterarbeit und jetzt für meinen regulären Job in der Marktforschung verwendet.

Während der Arbeit mit SPSS war es unglaublich schwierig, organisierten statistischen Code zu entwickeln, da SPSS nicht in der Lage ist, mehrere Dateien zu verarbeiten (Sie können zwar mehrere Dateien verarbeiten, dies ist jedoch nicht so schmerzlos wie R), da Sie keine Datasets speichern können zu einer Variablen - Sie müssen "Datensatz aktivieren x" - Code verwenden, was ein totaler Schmerz sein kann. Außerdem ist die Syntax klobig und es werden Abkürzungen empfohlen, wodurch der Code noch unleserlicher wird.

Christian Sauer
quelle
0

Jupyter-Notizbücher, die mit R / Python / Matlab / etc arbeiten, machen es überflüssig, sich zu merken, welches Skript eine bestimmte Zahl generiert. In diesem Beitrag wird beschrieben, wie Sie den Code und die Figur sauber nebeneinander halten. Wenn Sie alle Zahlen für ein Aufsatz- oder Arbeitskapitel in einem einzigen Notizbuch aufbewahren, ist der asccoiated Code sehr leicht zu finden.

Noch besser, weil Sie beispielsweise durch ein Dutzend Zahlen scrollen können, um die gewünschte zu finden. Der Code bleibt verborgen, bis er benötigt wird.

hugke729
quelle