Quali competenze sono necessarie per eseguire analisi statistiche su larga scala?


107

Molti lavori statistici richiedono esperienza con dati su larga scala. Quali sono le competenze statistiche e computazionali che sarebbero necessarie per lavorare con grandi set di dati. Ad esempio, che ne dici di costruire modelli di regressione dati un set di dati con 10 milioni di campioni?


1
Alcuni buoni suggerimenti qui .
Radek,

Sarebbe utile se riassumessi quelli che ritieni migliori.
rolando2,

Interessante anche la discussione correlata del test di ipotesi con grandi serie di dati: stats.stackexchange.com/q/2516/919
whuber

Risposte:


115

Buone risposte sono già apparse. Pertanto condividerò solo alcuni pensieri basati sull'esperienza personale: adattare quelli pertinenti alla propria situazione, se necessario.

Per sfondo e contesto- così puoi rendere conto di eventuali pregiudizi personali che potrebbero insinuarsi in questo messaggio - gran parte del mio lavoro è stato di aiutare le persone a prendere decisioni importanti basate su set di dati relativamente piccoli. Sono piccoli perché i dati possono essere costosi da raccogliere (10K dollari per il primo campione di un pozzo di monitoraggio delle acque sotterranee, ad esempio, o diverse migliaia di dollari per analisi di sostanze chimiche insolite). Sono abituato a ottenere il più possibile da tutti i dati disponibili, a esplorarli fino alla morte e ad inventare nuovi metodi per analizzarli, se necessario. Tuttavia, negli ultimi anni sono stato impegnato a lavorare su alcuni database abbastanza grandi, come uno di dati socioeconomici e ingegneristici che coprono tutti gli Stati Uniti a livello di blocco del censimento (8,5 milioni di record,

Con set di dati molto grandi l'intero approccio e la mentalità cambiano . Ora ci sono troppi dati da analizzare. Alcune delle implicazioni ovvie immediate (e, in retrospettiva) (con enfasi sul modello di regressione) includono

  • Qualsiasi analisi che pensi di fare può richiedere molto tempo e calcoli. Sarà necessario sviluppare metodi di sottocampionamento e lavorare su set di dati parziali in modo da poter pianificare il flusso di lavoro durante l'elaborazione con l'intero set di dati. (Il sottocampionamento può essere complicato, poiché è necessario un sottoinsieme rappresentativo dei dati che sia ricco quanto l'intero set di dati. E non dimenticare di convalidare in modo incrociato i tuoi modelli con i dati di cui è stato eseguito il controllo).

    • Per questo motivo, passerai più tempo a documentare ciò che fai e a scrivere tutto (in modo che possa essere ripetuto).

    • Come ha appena notato @dsimcha, sono utili buone capacità di programmazione . In realtà, non hai bisogno di molto in termini di esperienza con gli ambienti di programmazione, ma hai bisogno di una volontà di programmazione, la capacità di riconoscere quando la programmazione ti aiuterà (in quasi ogni fase, davvero) e una buona comprensione degli elementi di base di informatica, come la progettazione di strutture dati appropriate e come analizzare la complessità computazionale degli algoritmi. È utile sapere in anticipo se il codice che prevedi di scrivere verrà ridimensionato all'intero set di dati.

    • Alcuni set di dati sono grandi perché hanno molte variabili (migliaia o decine di migliaia, tutte diverse). Aspettati di dedicare molto tempo al solo riepilogo e comprensione dei dati . Un libro di codici o un dizionario di dati e altre forme di metadati diventano essenziali.

  • Gran parte del tuo tempo viene speso semplicemente spostando i dati e riformattandoli. Sono necessarie competenze con l'elaborazione di database di grandi dimensioni e competenze con il riepilogo e la rappresentazione grafica di grandi quantità di dati. ( Il piccolo multiplo di Tufte viene alla ribalta qui.)

  • Alcuni dei tuoi strumenti software preferiti falliranno. Dimentica fogli di calcolo, ad esempio. Molti software open source e accademici non saranno in grado di gestire set di dati di grandi dimensioni: l'elaborazione richiederà un'eternità o il software andrà in crash. Aspettatevi questo e assicuratevi di avere più modi per eseguire le attività chiave.

  • Quasi tutti i test statistici eseguiti saranno così potenti che è quasi sicuro di identificare un effetto "significativo". È necessario concentrarsi molto di più su statistiche importanza , come la dimensione effetto, piuttosto che significato.

  • Allo stesso modo, la selezione del modello è problematica perché quasi tutte le variabili e le interazioni che potresti prendere in considerazione sembreranno significative. Devi concentrarti maggiormente sulla significatività delle variabili che scegli di analizzare.

  • Ci saranno informazioni più che sufficienti per identificare le trasformazioni non lineari appropriate delle variabili. Sapere come farlo.

  • Avrai abbastanza dati per rilevare relazioni non lineari, cambiamenti nelle tendenze, non stazionarietà, eteroscedasticità , ecc.

  • Non avrai mai finito . Ci sono così tanti dati che potresti studiarli per sempre. È quindi importante stabilire fin dall'inizio i tuoi obiettivi analitici e tenerli costantemente a mente.

Concluderò con un breve aneddoto che illustra una differenza inaspettata tra i modelli di regressione con un set di dati di grandi dimensioni rispetto a uno più piccolo. Alla fine di quel progetto con i dati del censimento, un modello di regressione che avevo sviluppato doveva essere implementato nel sistema informatico del cliente, il che significava scrivere codice SQL in un database relazionale. Questo è un passaggio di routine, ma il codice generato dai programmatori di database ha coinvolto migliaia di righe di SQL. Ciò ha reso quasi impossibile garantire che fosse privo di bug - anche se siamo stati in grado di rilevare i bug (ha dato risultati diversi sui dati dei test), trovarli era un'altra questione. (Tutto ciò che serve è un errore tipografico in un coefficiente ...) Parte della soluzione era scrivere un programma che generasse i comandi SQL direttamente dalle stime del modello. Ciò ha assicurato che ciò che è uscito dal pacchetto statistico era esattamente ciò che è andato nel RDBMS. Come bonus, alcune ore trascorse a scrivere questo script hanno sostituito probabilmente diverse settimane di codifica e test SQL. Questa è una piccola parte di ciò che significa per lo statistico essere in grado di comunicare i loro risultati.


3
+1, condividerò questa meravigliosa risposta (e la
stamperò

1
+1, questo è ciò che sicuramente racconterò ai miei studenti molti anni a venire.
mpiktas,

2
l'aneddoto mi ha ricordato il momento in cui ho dovuto trasferire il modello da Eviews a R. Il modello originale è stato fatto in Eviews, il risultato è stato di circa 20 equazioni. Ho dovuto presentare i risultati nella pagina web con interfaccia interattiva. Dal momento che il modello era in fase di elaborazione, ho scritto un codice che traduceva l'output di Eviews in codice R con lo stesso scopo che il modello esatto era utilizzato sia in Eviews che in R. R funzionava molto bene, ho persino finito per differenziare il codice tradotto per il calcolo del gradiente analitico.
mpiktas,

2
È generalmente considerato più costruttivo (se non semplice cortesia) quando i commenti negativi sono giustificati in un commento, a meno che non vi siano ovvi motivi per non farlo (ad es. Risposta vaga di una riga, nessuna risposta alla richiesta di aggiornamento di una risposta errata, comportamento offensivo). Ciò contribuisce a migliorare la qualità di una risposta, quando vengono formulate argomentazioni valide. In questo caso particolare, non vedo alcun motivo per un downvote!
chl

2
+1 per l'automazione riduce l'errore: " scrivere un programma che ha generato i comandi SQL direttamente dalle stime del modello ".
Orion,

18

La tua domanda dovrebbe dare delle buone risposte. Ecco alcuni punti di partenza.

  1. Una capacità di lavorare con i compromessi tra precisione e le esigenze poste sulla potenza di calcolo.

  2. Funzionalità con tecniche di data mining che possono essere utilizzate come strumenti di screening preliminari prima di eseguire la regressione. Ad esempio, reti caid, cart o neurali.

  3. Una profonda comprensione della relazione tra significato statistico e significato pratico. Un ampio repertorio di metodi per la selezione variabile.

  4. L'istinto da crossvalidare.


Vorrei anche combinare il n. 4 e il n. 1: è importante sapere come eseguire la convalida incrociata senza sovraccaricare le risorse di elaborazione.
Zach,

1
Potresti spiegare il tuo secondo punto? Come useresti CHAID / CART / reti neurali come strumenti di screening per la regressione?
Raegtin

2
@raegtin - Conosco molto bene CHAID, che produce le cosiddette "interazioni" che sono spesso i principali effetti mascherati da interazioni perché è l'unico modo in cui la procedura "le lascerà entrare". (In CHAID può esserci solo 1 effetto principale identificato come tale, quindi tutti gli altri effetti principali vengono compressi in celle di "interazione". Ma CHAID ha il vantaggio di essere in grado di controllare molte interazioni. Quindi, una volta identificati alcuni promettenti, possono essere incorporati in una regressione o anova, con tutti i loro componenti di ordine inferiore, e si può verificare quali sono veramente utili.
rolando2,

1
+1 Sono incuriosito dalla possibilità di utilizzare il data mining (in particolare CHAID) per esplorare potenziali effetti. Sarebbe interessante vedere un'applicazione, ad esempio con l'insieme di dati artificiali (e piccoli) su stats.stackexchange.com/q/10363/919
whuber

12

Buone capacità di programmazione sono un must. Devi essere in grado di scrivere codice efficiente in grado di gestire enormi quantità di dati senza soffocare e forse essere in grado di parallelizzare tale codice per farlo funzionare in un ragionevole lasso di tempo.


4
La codifica è un must, ma è anche importante sapere come lavorare con il sistema operativo non contro di esso. È necessario comprendere che a volte la suddivisione dell'opera comporta costi aggiuntivi associati, poiché l'accesso a dischi e reti comporta costi aggiuntivi. Devi capire diversi modi di bloccare, aspettare e fare comunicazione tra processi. Ho visto un ottimo codice scientifico che avrebbe trascorso la maggior parte del tempo ad aspettare il completamento di alcune chiamate di sistema. Fai amicizia con l'amministratore di sistema del tuo sistema, puoi ottenere molto aiuto per l'ottimizzazione dei tuoi sistemi portando loro caffè;)
Marcin

2
A volte è meglio scrivere "Codice inefficiente" se questo aiuterà a creare strutture di dati che anticipano ulteriori domande lungo la strada che probabilmente verranno poste.
Ralph Winters,

1
@Ralph: +1, sono assolutamente d'accordo e l'ho imparato nel modo più duro. Non intendevo applicare che dovresti sempre scrivere un codice efficiente, indipendentemente dai compromessi, solo che dovresti sapere come farlo.
dsimcha,

5

Vorrei anche aggiungere che i dati su larga scala introducono anche il problema dei potenziali "dati errati". Non solo dati mancanti, ma errori di dati e definizioni incoerenti introdotte da ogni parte di un sistema che ha mai toccato i dati. Quindi, oltre alle capacità statistiche, devi diventare un esperto di pulizia dei dati, a meno che qualcun altro non lo stia facendo per te.

-Ralph Winters


3
Questi sono buoni punti. Valori anomali e altri problemi relativi ai dati affliggono qualsiasi set di dati, non importa quanto grande o piccolo. In base alla mia esperienza, in realtà sono più facili da identificare e gestire in set di dati di grandi dimensioni, poiché hai il potere di discriminarli dalla massa di dati e, soprattutto se usi metodi affidabili, hanno meno probabilità di influenzare i risultati. A proposito, stai sempre facendo "pulizia dei dati" durante ogni analisi. Questo non è qualcosa che può essere separato e indirizzato a uno specialista da gestire una volta per tutte. Un outlier è solo un outlier nel contesto di un particolare modello.
whuber

2
Scopri google refine come un pulitore di dati semi automatizzato che aiuta a evitare le insidie ​​della modifica manuale.
mindless.panda,

5
  1. Inquadrare il problema nel framework di riduzione della mappa .
  2. Il lato ingegneristico del problema, ad esempio, quanto fa male usare una precisione inferiore per i parametri o la selezione del modello basata non solo sulla generalizzazione, ma anche sui costi di archiviazione e calcolo.

Potresti fornire un link pertinente per il framework di riduzione delle mappe che menzioni?
mindless.panda,

@ sugar.panda, collegamento wiki aggiunto!
highBandWidth,

+1 per menzionare la precisione inferiore, sebbene sia lungi dall'essere una prerogativa ingegneristica. Minore è la precisione, maggiore è la probabilità che prendiamo decisioni sbagliate. Ciò è strettamente legato all'errore di tipo I / II e abbraccia diverse discipline, ma è principalmente rilevante per la statistica, la scienza delle decisioni e l'economia. Le funzioni di utilità dovrebbero essere pensate in anticipo e parte del processo di pensiero per identificare una metodologia adatta.
Thomas Speidel,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.