Welche Fähigkeiten sind erforderlich, um umfangreiche statistische Analysen durchzuführen?


107

Viele statistische Jobs erfordern Erfahrung mit umfangreichen Daten. Welche statistischen und rechnerischen Fähigkeiten wären für die Arbeit mit großen Datenmengen erforderlich? Wie wäre es beispielsweise mit der Erstellung von Regressionsmodellen bei einem Datensatz mit 10 Millionen Stichproben?


1
Einige gute Hinweise hier .
Radek

Es wäre hilfreich, wenn Sie die zusammenfassen würden, die Sie für am besten halten.
Rolando2

Interessant ist auch die Diskussion über Hypothesentests mit großen Datenmengen: stats.stackexchange.com/q/2516/919
whuber

Antworten:


115

Gute Antworten sind bereits aufgetaucht. Ich werde daher nur einige Gedanken auf der Grundlage persönlicher Erfahrungen mitteilen: Passen Sie die relevanten nach Bedarf an Ihre eigene Situation an.

Für Hintergrund und Kontext--So können Sie persönliche Vorurteile berücksichtigen, die sich in diese Nachricht einschleichen könnten - Ein Großteil meiner Arbeit bestand darin, Menschen dabei zu helfen, wichtige Entscheidungen auf der Grundlage relativ kleiner Datensätze zu treffen. Sie sind klein, weil die Datenerfassung teuer sein kann (z. B. 10.000 US-Dollar für die erste Probe eines Grundwasserüberwachungsbrunnens oder mehrere Tausend US-Dollar für die Analyse ungewöhnlicher Chemikalien). Ich bin es gewohnt, aus den verfügbaren Daten so viel wie möglich herauszuholen, sie zu erforschen und bei Bedarf neue Methoden zu erfinden, um sie zu analysieren. In den letzten Jahren war ich jedoch damit beschäftigt, an einigen relativ großen Datenbanken zu arbeiten, beispielsweise an sozioökonomischen und technischen Daten, die die gesamten USA auf der Ebene der Volkszählungsblöcke abdecken (8,5 Millionen Datensätze,

Bei sehr großen Datenmengen ändert sich die gesamte Herangehensweise und Denkweise . Es sind jetzt zu viele Daten zum Analysieren vorhanden. Einige der unmittelbaren (und rückblickend) offensichtlichen Auswirkungen (mit Schwerpunkt auf der Regressionsmodellierung) umfassen

  • Jede Analyse, über die Sie nachdenken, kann viel Zeit und Rechenzeit in Anspruch nehmen. Sie müssen Methoden für die Unterabtastung und die Bearbeitung von Teildatensätzen entwickeln, damit Sie Ihren Workflow beim Rechnen mit dem gesamten Datensatz planen können. (Subsampling kann kompliziert sein, weil Sie eine repräsentative Teilmenge der Daten benötigen , die so reich wie die gesamte Datenmenge ist. Und vergessen Sie nicht über die Kreuzvalidierung Ihre Modelle mit den gehaltenen-out - Daten.)

    • Aus diesem Grund verbringen Sie mehr Zeit damit, Ihre Arbeit zu dokumentieren und alles zu skripten (damit es wiederholt werden kann).

    • Wie @dsimcha gerade bemerkt hat, sind gute Programmierkenntnisse nützlich. Eigentlich braucht man nicht viel Erfahrung mit Programmierumgebungen, aber man braucht die Bereitschaft zum Programmieren, die Fähigkeit zu erkennen, wann das Programmieren hilft (eigentlich bei fast jedem Schritt) und ein gutes Verständnis der Grundelemente von Informatik, z. B. Entwurf geeigneter Datenstrukturen und Analyse der rechnerischen Komplexität von Algorithmen. Dies ist hilfreich, wenn Sie im Voraus wissen möchten, ob der zu schreibende Code auf den gesamten Datensatz skaliert.

    • Einige Datensätze sind groß, weil sie viele Variablen enthalten (Tausende oder Zehntausende, alle unterschiedlich). Erwarten Sie viel Zeit für das Zusammenfassen und Verstehen der Daten . Ein Codebuch oder ein Datenwörterbuch sowie andere Formen von Metadaten werden unverzichtbar.

  • Ein Großteil Ihrer Zeit wird damit verbracht, Daten einfach zu verschieben und neu zu formatieren. Sie benötigen Kenntnisse in der Verarbeitung großer Datenbanken und Kenntnisse in der Zusammenfassung und grafischen Darstellung großer Datenmengen. ( Tufte's Small Multiple tritt hier in den Vordergrund.)

  • Einige Ihrer bevorzugten Softwaretools schlagen fehl. Vergessen Sie beispielsweise Tabellenkalkulationen. Viele Open-Source- und akademische Software-Produkte sind nicht in der Lage, große Datenmengen zu verarbeiten: Die Verarbeitung wird ewig dauern oder die Software wird abstürzen. Erwarten Sie dies und stellen Sie sicher, dass Sie mehrere Möglichkeiten haben, um Ihre Hauptaufgaben zu erfüllen.

  • Fast alle statistischen Tests, die Sie durchführen, sind so leistungsfähig, dass Sie mit ziemlicher Sicherheit einen "signifikanten" Effekt feststellen können. Sie müssen sich viel mehr auf die statistische Wichtigkeit wie die Effektgröße als auf die Wichtigkeit konzentrieren .

  • In ähnlicher Weise ist die Modellauswahl problematisch, da fast jede Variable und jede mögliche Interaktion, die Sie in Betracht ziehen, von Bedeutung sein wird. Sie müssen sich mehr auf die Aussagekraft der zu analysierenden Variablen konzentrieren .

  • Es wird mehr als genug Informationen geben, um geeignete nichtlineare Transformationen der Variablen zu identifizieren . Wissen, wie man das macht.

  • Sie verfügen über genügend Daten, um nichtlineare Beziehungen, Trendänderungen, Nichtstationarität, Heteroskedastizität usw. zu erkennen.

  • Du wirst niemals fertig sein . Es gibt so viele Daten, dass Sie sie für immer studieren können. Es ist daher wichtig, dass Sie Ihre analytischen Ziele von Anfang an festlegen und diese ständig im Auge behalten.

Ich werde mit einer kurzen Anekdote enden, die einen unerwarteten Unterschied zwischen der Regressionsmodellierung mit einem großen Datensatz im Vergleich zu einem kleineren darstellt. Am Ende dieses Projekts musste mit den Census-Daten ein von mir entwickeltes Regressionsmodell in das Computersystem des Kunden implementiert werden, das das Schreiben von SQL-Code in eine relationale Datenbank bedeutete. Dies ist ein Routineschritt, aber der von den Datenbankprogrammierern generierte Code umfasste Tausende von SQL-Zeilen. Dies machte es fast unmöglich zu garantieren, dass es fehlerfrei war - obwohl wir die Fehler erkennen konnten (es gab unterschiedliche Ergebnisse bei den Testdaten), war es eine andere Sache, sie zu finden. (Alles, was Sie brauchen, ist ein Tippfehler in einem Koeffizienten ...) Ein Teil der Lösung bestand darin , ein Programm zu schreiben, das die SQL-Befehle direkt aus den Modellschätzungen generierte. Dies stellte sicher, dass das Ergebnis des Statistikpakets genau das war, was in das RDBMS eingeflossen ist. Als Bonus ersetzten einige Stunden, die für das Schreiben dieses Skripts aufgewendet wurden, möglicherweise mehrere Wochen für das Codieren und Testen von SQL. Dies ist ein kleiner Teil dessen, was es für den Statistiker bedeutet, seine Ergebnisse mitteilen zu können.


3
+1, ich werde diese wunderbare Antwort teilen (und sie ausdrucken, um sie in der Nähe zu haben ^ _ ^)
Dmitrij Celov

1
+1, das ist es, was ich meinen Schülern sicherlich viele Jahre später erzählen werde.
mpiktas

2
Die Anekdote erinnerte mich an die Zeit, als ich das Modell von Eviews auf R übertragen musste. Das ursprüngliche Modell wurde in Eviews erstellt. Das Ergebnis waren ungefähr 20 Gleichungen. Ich musste die Ergebnisse auf der Webseite mit interaktiver Oberfläche präsentieren. Da das Modell in Arbeit war, habe ich einen Code geschrieben, der die Ausgabe von Eviews in R-Code mit dem gleichen Zweck übersetzt, dass das exakte Modell sowohl in Eviews als auch in R verwendet wurde. R hat sehr gut funktioniert. Am Ende habe ich sogar den übersetzten Code differenziert zur Berechnung des analytischen Gradienten.
mpiktas

2
Es wird im Allgemeinen als konstruktiver angesehen (wenn nicht einfach mit freundlicher Genehmigung), wenn Abwertungen in einem Kommentar begründet sind, es sei denn, es gibt offensichtliche Gründe, dies nicht zu tun (z. B. eine einzeilige vage Antwort, keine Antwort auf die Aufforderung zur Aktualisierung einer falschen Antwort, anstössiges Verhalten). Dies trägt zur Verbesserung der Qualität einer Antwort bei, wenn gültige Argumente vorgebracht werden. In diesem speziellen Fall sehe ich keinen Grund für eine Ablehnung!
chl

2
+1 für die Automatisierung reduziert Fehler: " Schreiben Sie ein Programm, das die SQL-Befehle direkt aus den Modellschätzungen generiert ".
Orion

18

Ihre Frage sollte einige gute Antworten liefern. Hier sind einige Ansatzpunkte.

  1. Die Fähigkeit, mit den Kompromissen zwischen Präzision und den Anforderungen an die Rechenleistung zu arbeiten.

  2. Einrichtung mit Data-Mining-Techniken, die vor der Durchführung der Regression als vorläufiges Screening-Tool verwendet werden können. ZB Chaid, Cart oder Neuronale Netze.

  3. Ein tiefes Verständnis der Beziehung zwischen statistischer Signifikanz und praktischer Signifikanz. Ein breites Methodenrepertoire zur Variablenauswahl.

  4. Der Instinkt zur Kreuzvalidierung.


Ich würde auch Nr. 4 und Nr. 1 kombinieren: Es ist wichtig zu wissen, wie man eine Kreuzvalidierung durchführt, ohne Ihre Computerressourcen zu überlasten.
Zach

1
Könnten Sie Ihren 2. Punkt erläutern? Wie würden Sie CHAID / CART / Neuronale Netze als Screening-Tools für die Regression verwenden?
Raegtin

2
@raegtin - Ich kenne CHAID am besten, da es sogenannte "Interaktionen" gibt, bei denen es sich häufig um Haupteffekte handelt, die sich als Interaktionen tarnen, da das Verfahren sie nur auf diese Weise "einlässt". (In CHAID kann nur 1 Haupteffekt als solcher identifiziert werden, so dass alle anderen Haupteffekte in "Interaktions" -Zellen zusammengefasst werden.) CHAID hat jedoch den Vorteil, dass es viele, viele Interaktionen überprüfen kann. Sobald also einige vielversprechende identifiziert sind, können sie mit all ihren Komponenten niedrigerer Ordnung in eine Regression oder Anova einbezogen werden, und es kann geprüft werden, welche davon wirklich nützlich sind.
Rolando2

1
+1 Ich bin fasziniert von der Möglichkeit, mithilfe von Data Mining (insbesondere CHAID) potenzielle Auswirkungen zu untersuchen. Es wäre interessant, eine Anwendung zu sehen, beispielsweise mit dem künstlichen (und kleinen) Datensatz unter stats.stackexchange.com/q/10363/919
whuber

12

Gute Programmierkenntnisse sind ein Muss. Sie müssen in der Lage sein, effizienten Code zu schreiben, der große Datenmengen ohne Ersticken verarbeiten kann, und möglicherweise den Code parallelisieren kann, damit er in angemessener Zeit ausgeführt werden kann.


4
Codierung ist ein Muss, aber es ist auch wichtig zu wissen, wie man mit dem Betriebssystem arbeitet, nicht dagegen. Sie müssen verstehen, dass mit der Aufteilung der Arbeit manchmal zusätzliche Kosten verbunden sind, da der Zugriff auf Datenträger und Netzwerke zusätzliche Kosten verursacht. Sie müssen verschiedene Arten des Blockierens und Wartens sowie der Interprozesskommunikation verstehen. Ich habe großartigen wissenschaftlichen Code gesehen, der die meiste Zeit damit verbracht hat, auf einige Systemaufrufe zu warten. Befreunden Sie den Systemadministrator Ihres Systems, Sie können eine Menge Hilfe bei der Optimierung Ihrer Systeme erhalten, indem Sie ihnen Kaffee bringen;)
Marcin

2
Manchmal ist es besser, "ineffizienten Code" zu schreiben, wenn dies bei der Erstellung von Datenstrukturen hilft, die zusätzliche Fragen vorwegnehmen, die wahrscheinlich gestellt werden.
Ralph Winters

1
@Ralph: +1, da stimme ich voll und ganz zu und habe das auf die harte Tour selbst gelernt. Ich wollte nicht festlegen, dass Sie immer effizienten Code schreiben sollten, unabhängig von den Kompromissen, nur, dass Sie wissen, wie es geht.
Dsimcha

5

Ich möchte auch hinzufügen, dass die großen Datenmengen auch das Problem möglicher "schlechter Daten" mit sich bringen. Nicht nur fehlende Daten, sondern auch Datenfehler und inkonsistente Definitionen, die von jedem Teil eines Systems eingeführt wurden, das jemals die Daten berührt hat. Zusätzlich zu statistischen Fähigkeiten müssen Sie also ein Datenbereiniger für Experten werden, es sei denn, jemand anderes erledigt dies für Sie.

-Ralph Winters


3
Das sind gute Punkte. Ausreißer und andere Datenprobleme plagen jeden Datensatz, egal wie groß oder klein. Nach meiner Erfahrung sind sie in großen Datenmengen leichter zu identifizieren und zu verarbeiten, da Sie sie von der Datenmenge unterscheiden können. Insbesondere wenn Sie robuste Methoden verwenden, ist die Wahrscheinlichkeit geringer, dass sie die Ergebnisse beeinflussen. Übrigens führen Sie bei jeder Analyse immer eine "Datenbereinigung" durch. Dies kann nicht getrennt und an einen Spezialisten überwiesen werden, um ein für alle Mal gehandhabt zu werden. Ein Ausreißer ist nur ein Ausreißer im Kontext eines bestimmten Modells.
whuber

2
Schauen Sie sich google refine als halbautomatisches Datenbereinigungsprogramm an, mit dem Sie die Fallen der Handbearbeitung vermeiden können.
mindless.panda

5
  1. Das Problem im Map-Reduce- Framework einrahmen.
  2. Die technische Seite des Problems, z. B. wie sehr es weh tut, eine geringere Genauigkeit für die Parameter oder die Modellauswahl zu verwenden, die nicht nur auf der Verallgemeinerung, sondern auch auf den Speicher- und Berechnungskosten basiert.

Könnten Sie einen relevanten Link für das von Ihnen erwähnte Map-Reduce-Framework bereitstellen?
mindless.panda

@ sugar.panda, Wiki-Link hinzugefügt!
HighBandWidth

+1 für die Erwähnung einer geringeren Genauigkeit, obwohl dies keineswegs ein konstruktives Vorrecht darstellt. Je niedriger die Genauigkeit, desto wahrscheinlicher ist es, dass wir schlechte Entscheidungen treffen. Dies hängt eng mit dem Typ I / II-Fehler zusammen und erstreckt sich über mehrere Disziplinen, ist jedoch hauptsächlich für die Statistik, die Entscheidungswissenschaft und die Wirtschaftswissenschaften relevant. Nutzenfunktionen sollten im Voraus überlegt werden und Teil des Denkprozesses sein, um eine geeignete Methodik zu identifizieren.
Thomas Speidel
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.