Wenn ich mit einer explorativen Analyse eines großen Datensatzes (viele Stichproben, viele Variablen) beginne, habe ich oft Hunderte abgeleiteter Variablen und Tonnen verschiedener Diagramme und bin nicht in der Lage, den Überblick darüber zu behalten, was wohin geht. Code endet wie Spaghetti, weil es von Anfang an keine Richtung gibt ...
Gibt es empfohlene Methoden, um eine explorative Analyse sauber und ordentlich zu halten? Wie gehen Sie insbesondere mit mehreren Explorationszweigen (einschließlich jenen, die Sackgassen waren) und mit verschiedenen Versionen von Handlungen um?
Als Referenz arbeite ich an geowissenschaftlichen Daten (viele Variablen über die Zeit, manchmal auch über den Raum). Normalerweise arbeite ich mit Python oder R, speichere alles in Git und probiere auch das IPython Notebook aus. Allerdings wäre es gut, wenn Antworten etwas allgemein waren für die Menschen in allen Bereichen, mit anderen Typen von (großen?) Daten und nützlich.
quelle
Antworten:
Ich denke, dass die Tendenz, sich mit explorativen Analysen wie in einem Kaninchenbau zu fühlen, häufig darauf zurückzuführen ist, dass Sie die wesentlichen Fragen, die Sie stellen, aus den Augen verlieren. Ich mache es gelegentlich selbst und muss mich dann daran erinnern, was meine Ziele sind. Versuchen Sie beispielsweise, ein bestimmtes Modell zu erstellen oder die Angemessenheit eines vorhandenen Modells zu bewerten? Suche ich nach Hinweisen auf Datenprobleme (z. B. forensische Datenanalyse)? Oder befasse ich mich zu Beginn der Analyse informell mit bestimmten Fragen (zB gibt es einen Zusammenhang zwischen zwei Variablen?), Bevor ich ein formales Modell erarbeite? In der Summe, wenn Sie sich dabei erwischen, wie Sie Pläne und Tabellen auf den Kopf stellen, aber nicht genau sagen können, was Ihr unmittelbares Ziel ist oder warum dieser Plan / diese Tabelle relevant ist, dann wissen Sie, dass Sie
Ich versuche, die explorative Datenanalyse so zu verstehen, wie ich sie schreibe, sei es beim Schreiben eines Programms oder eines Artikels. In jedem Fall würde ich nicht damit anfangen, zuerst einen Entwurf zu machen. Diese Gliederung kann sich natürlich ändern (und tut dies häufig), aber ohne sie zu schreiben zu beginnen ist ineffizient und führt häufig zu einem schlechten Endprodukt.
In der WRT-Organisation muss jeder Analytiker einen Workflow finden, der für ihn oder sie funktioniert. Dies ist für IMO wichtiger als der Versuch, den Workflow eines anderen streng zu befolgen (obwohl es immer hilfreich ist, Ideen von dem zu erhalten, was andere tun). Wenn Sie programmgesteuert arbeiten (dh Code schreiben, der ausgeführt werden kann, um eine Reihe von Ergebnissen zu generieren / neu zu generieren) und Ihre Arbeit in Git einchecken, sind Sie in dieser Hinsicht bereits vielen Meilen voraus. Ich vermute, dass Sie möglicherweise nur einige Zeit damit verbringen müssen, Ihren Code zu organisieren, und dafür würde ich vorschlagen, Ihrer Gliederung zu folgen. Halten Sie Ihre Analysedateien beispielsweise relativ kurz und zielgerichtet, damit jede eine bestimmte Frage beantwortet (z. B. Diagnosediagramme für ein bestimmtes Regressionsmodell). Organisieren Sie diese in Unterverzeichnissen auf einer oder zwei Ebenen, je nach Größe und Komplexität des Projekts. Auf diese Weise wird das Projekt selbstdokumentierend. Eine Listenansicht der Verzeichnisse, Unterverzeichnisse und Dateien (zusammen mit dem Kommentar oben in jeder Datei) sollte theoretisch Ihre Gliederung wiedergeben.
Natürlich verfügen Sie in einem großen Projekt möglicherweise auch über Code für die Datenbereinigung und -verwaltung, über Code, den Sie zur Schätzung eines bestimmten Modelltyps geschrieben haben, oder über andere Dienstprogramme, die Sie selbst geschrieben haben, und diese passen nicht in die Inhalte Gliederung für Ihre Datenanalyse, so sollten sie in einem anderen Teil Ihres Projektordners organisiert werden.
Update: Nachdem ich das gepostet habe, wurde mir klar, dass ich Ihre Frage zu "Sackgassen" nicht direkt angesprochen habe. Wenn Sie wirklich feststellen, dass eine ganze Reihe von Analysen keinen Wert hat, können Sie, wenn Sie in Git arbeiten, die entsprechenden Dateien jederzeit mit der Meldung "Abandoned this line of analysis" löschen, da dies nicht der Fall war produktiv." Im Gegensatz zu dem, was Sie geschrieben und in den Papierkorb geworfen haben, können Sie auf Wunsch jederzeit zu dem zurückkehren, was Sie später getan haben.
Ich denke jedoch, Sie werden feststellen, dass Sie weniger Sackgassen haben, wenn Sie von einem Entwurf ausgehen, über den Sie nachgedacht haben. Wenn Sie stattdessen Zeit damit verbringen, eine sinnvolle und relevante Frage zu untersuchen - auch wenn dies zu einer Nullfeststellung führt oder nicht so ausfällt, wie Sie es erwartet haben -, möchten Sie wahrscheinlich immer noch aufzeichnen, was Sie getan haben und wie das Ergebnis lautet (at ein Minimum, damit Sie nicht den Fehler machen, dies später zu wiederholen). Verschieben Sie diese einfach in einer Art "Anhang" an den unteren Rand Ihrer Gliederung.
quelle
Ich weiß nicht, wie hilfreich eine allgemeine Antwort sein wird. Sie fragen, wie Sie etwas Schwieriges tun sollen. Gute Antworten werden wahrscheinlich von der Disziplin abhängen und wahrscheinlich lang und differenziert sein. :)
In Bezug auf die Organisation verwenden Sie bereits git. Als Nächstes sollten Sie ein Makefile verwenden , um die Analyse auszuführen. Das Makefile legt fest, wie unterschiedliche Dateien voneinander abhängen (dh welche Statistiken von welchem Code abgeleitet sind) und wann Sie aufrufen
make
, wird alles aktualisiert, was aktualisiert werden muss.Nun, das hilft beim Erkundungsteil nicht weiter. Für EDA verwende ich (meistens) R in Emacs via ESS. Sie benötigen eine REPL für EDA. Mein Workflow besteht darin, mit Plots, Schätzungen usw. in ESS (in einer
exploratory.R
Typdatei) zu spielen, zu entscheiden, was ich behalten möchte, und es dann neu zu codieren, damit es stapelweise von make ausgeführt werden kann. Re: git, ich weiß nicht, wie Sie es verwenden, aber ich verwende ein einzelnes Repository für jedes Projekt (normalerweise ein einzelnes Papier) und stelle die Hölle aus meiner Codebasis zurück, um einen sauberen Verlauf zu erhalten. dh ich benutzeviel mehr als damals, als ich mit git angefangen habe, und so mehr als ich einem Anfänger empfehlen würde. Wenn Sie nicht mit all diesen Befehlen und Optionen vertraut sind, möchten Sie vielleicht mehr über git erfahren. Das Wichtigste, was mir geholfen hat, ist, dass ich diszipliniert bin, wenn es darum geht, logisch eindeutige Commits zu erstellen. dh jedes Commit sollte alle Änderungen enthalten, die Sie möglicherweise in Zukunft auf einmal rückgängig machen möchten (und nicht mehr oder weniger).
Soweit ich die Daten tatsächlich untersucht habe, fand ich diese Bücher hilfreich und interessant und sie befassen sich speziell mit großen Datensätzen (zumindest in Teilen):
Die Grafiken großer Datensätze , herausgegeben von Unwin, Theus und Hofmann.per springerlink wenn du zugriff hast, sonst sind wohl einzelne kapitel per googeln erreichbar.
Das Handbuch zur Datenvisualisierung , herausgegeben von Chen, Härdle und Unwin. auch über springerlink
Datenanalyse von Huber (2011) ..
quelle
Zwei Wörter: Konzeptkarte. Das ist die einzige effektive Möglichkeit, große Datenmengen oder wirklich verworrene Konzepte aufzuteilen und zu erobern.http://en.wikipedia.org/wiki/Concept_maps
Persönlich denke ich auf dem Papier besser als auf dem Bildschirm, daher ist es mir egal, womit ich es zu tun habe, bevor ich überhaupt mit einer grundlegenden Analyse beginne. Für ein professionelleres Diagramm gibt es eine Menge Mind-Mapping-Software http://en.wikipedia.org/wiki/List_of_concept-and_mind-mapping_software
Mind Mapping hat mehrere Vorteile:
Bearbeiten :
Hier als Beispiel die Concept Map zur Faktorenanalyse: http://www.metacademy.org/graphs/concepts/factor_analysis#focus=factor_analysis&mode=explore Dies dient nur dazu, das Konzept zu lernen und keine Analyse durchzuführen, sondern die Idee ist das gleiche: im Voraus abzubilden, was sinnvoll ist, und es dann zu tun.
Wenn Sie eine automatisierte / codierte Version davon suchen, glaube ich nicht, dass es eine gibt. Sie können das Modellierungskonzept nicht automatisieren, wenn Sie versuchen, ein System zu verstehen. (Und das ist eine gute Sache, weil es viele Leute von einem Job abhalten würde.)
quelle
Sie verwenden bereits git: Verwenden Sie die Versionskontrolle, um Ihre Erkundungen zu organisieren. Erstellen Sie für jeden neuen "Zweig" Ihrer Erkundung einen neuen Zweig und trennen Sie die Zweige auch für verschiedene Versionen der Diagramme ab. Mit dieser Methode wird es etwas schwieriger, Ihre Endergebnisse zu kombinieren. Sie können jedoch jederzeit ein nicht verfolgtes Verzeichnis führen, in dem Sie die "Juwelen" Ihrer Analyse ablegen können. Wahrscheinlich möchten Sie Ihre Dateien in diesem Verzeichnis irgendwie kennzeichnen, um anzugeben, von welchem Fork / Commit sie stammen. Diese Methode hat den zusätzlichen Vorteil, dass es wirklich einfach ist, verschiedene Analysen über den
diff
Befehl gegenüberzustellen.quelle
Ich würde mich mit Business Intelligence-Tools befassen, bei denen ähnliche Probleme auftreten. Insbesondere (Data Warehouses, Dimensionsanalyse) Hierarchien und Drilldowns.
Die Grundidee ist, dass Sie versuchen, Ihre zugrunde liegenden Daten als aggregierbare Größen (Zählungen, Einnahmen usw. statt z. B. Prozentsätze) darzustellen. Dann entwerfen Sie Hierarchien, die über die Details aggregieren (z. B. Monate / Wochen / ...). Auf diese Weise erhalten Sie einen einfachen Überblick über alle Ihre Daten und können bestimmte Bereiche vergrößern. Siehe zB http://cubes.databrewery.org/ (Python) oder Excel Power Pivot
quelle