Come gestire in modo efficiente un progetto di analisi statistica?


89

Sentiamo spesso parlare della gestione del progetto e dei modelli di progettazione nell'informatica, ma meno frequentemente nell'analisi statistica. Tuttavia, sembra che un passo decisivo verso la progettazione di un progetto statistico efficace e duraturo sia quello di mantenere le cose organizzate.

Sostengo spesso l'uso di R e un'organizzazione coerente di file in cartelle separate (file di dati grezzi, file di dati trasformati, script R, figure, note, ecc.). Il motivo principale di questo approccio è che potrebbe essere più semplice eseguire l'analisi in un secondo momento (quando, ad esempio, hai dimenticato come ti è capitato di produrre un determinato diagramma).

Quali sono le migliori pratiche per la gestione di progetti statistici o le raccomandazioni che vorresti dare dalla tua esperienza? Naturalmente, questo vale per qualsiasi software statistico. ( una risposta per post, per favore )


Sto votando per chiudere questa domanda come fuori tema perché riguarda la gestione del progetto
Aksakal

2
@Aksakal: penso che tu sia un po 'duro. :) È rilevante per "le persone interessate alle statistiche ". Anche gli oltre 70 voti suggeriscono fortemente che gli utenti standard hanno trovato utile e utile questa domanda.
usεr11852

1
Penso che questo dovrebbe essere considerato sull'argomento qui.
gung - Ripristina Monica

@gung Ti piacerebbe forse aggiungere una risposta a quel thread Meta in modo da poterne discutere?
amoeba,

Risposte:


80

Sto compilando una rapida serie di linee guida che ho trovato su SO (come suggerito da @Shane), Biostar (di seguito, BS) e questo SE. Ho fatto del mio meglio per riconoscere la proprietà di ciascun elemento e selezionare la prima o la più votata risposta. Ho anche aggiunto cose mie e contrassegnato elementi specifici per l'ambiente [R].

Gestione dei dati

  • Creare una struttura di progetto per mantenere tutte le cose nel posto giusto (dati, codice, figure, ecc., Giovanni / BS)
  • Non modificare mai i file di dati grezzi (idealmente, dovrebbero essere di sola lettura), copiarli / rinominarli in nuovi quando si effettuano trasformazioni, pulizia, ecc.
  • Verifica la coerenza dei dati ( whuber / SE)
  • Gestisci le dipendenze degli script e il flusso di dati con uno strumento di automazione della build, come GNU make ( Karl Broman / Zachary Jones )

Coding

  • organizzare il codice sorgente in unità logiche o blocchi ( Josh Reich / hadley / ars / SO; giovanni / Khader Shameer / BS)
  • separare il codice sorgente dalla modifica delle cose, in particolare per i progetti di grandi dimensioni, in parte sovrapposti all'elemento e ai report precedenti
  • Documenta tutto, ad es. Con ossigeno [R] ( Shane / SO) o auto-annotazione coerente nel file sorgente - una buona discussione su Medstats, analisi di documentazione e opzioni di modifica dei dati
  • [R] Le funzioni personalizzate possono essere inserite in un file dedicato (che può essere fornito all'occorrenza), in un nuovo ambiente (in modo da evitare di popolare lo spazio dei nomi di livello superiore, Brendan OConnor / SO) o un pacchetto ( Dirk Eddelbuettel / Shane / SO)

Analisi

  • Non dimenticare di impostare / registrare il seme che hai usato quando hai chiamato RNG o algoritmi stocastici (ad es. K-medie)
  • Per gli studi di Monte Carlo, potrebbe essere interessante archiviare specifiche / parametri in un file separato ( sumatra può essere un buon candidato, giovanni / BS)
  • Non limitarti a un grafico per variabile, usa display multivariati (traliccio) e strumenti di visualizzazione interattiva (ad es. GGobi)

versioning

  • Usa un qualche tipo di controllo di revisione per un facile monitoraggio / esportazione, ad esempio Git ( Sharpie / VonC / JD Long / SO) - questo segue da belle domande poste da @Jeromy e @Tal
  • Eseguire il backup di tutto, su base regolare ( Sharpie / JD Long / SO)
  • Tieni un registro delle tue idee o fai affidamento su un tracker di problemi, come ditz ( giovanni / BS) - parzialmente ridondante con l'elemento precedente poiché è disponibile in Git

Editing / Reporting

Come nota a margine, Hadley Wickham offre una panoramica completa della gestione del progetto R , compresa un'esemplificazione riproducibile e una filosofia unificata dei dati .

Infine, nel suo flusso di lavoro di analisi dei dati statistici orientato alla R , Oliver Kirchkamp offre una panoramica molto dettagliata del perché l'adozione e l'osservanza di un flusso di lavoro specifico aiuteranno gli statistici a collaborare tra loro, garantendo allo stesso tempo l'integrità dei dati e la riproducibilità dei risultati. Include inoltre alcune discussioni sull'utilizzo di un sistema di tessitura e controllo della versione. Gli utenti di Stata potrebbero trovare utile anche The Workflow of Data Analysis di J. Scott Long utilizzando Stata .


Ottimo lavoro chl! Andrebbe bene per te se pubblicarlo sul mio blog? (Voglio dire, questo testo è cc, quindi potrei, ma volevo comunque il tuo permesso :)) Saluti, Tal
Tal Galili,

@Tal Nessun problema. È lungi dall'essere un elenco completo, ma forse puoi aggregare altri link utili in un secondo momento. Inoltre, sentiti libero di adattarti o riorganizzarti in un modo migliore.
chl,

+1 Questa è una bella lista. Potresti considerare di "accettarlo" in modo che sia sempre in primo piano; dato che è CW, chiunque può tenerlo aggiornato.
Shane,

@Shane Beh, sono in debito con te per avermi fornito una prima risposta con link così utili. Sentiti libero di aggiungere / modificare come desideri.
chl,

L'ho ripubblicato qui. Ottima lista! r-statistics.com/2010/09/…
Tal Galili

21

Grazie per i collegamenti! La domanda è aperta a qualsiasi software statistico: di tanto in tanto utilizzo Python e Stata, quindi mi chiedo se gli utenti confermati possano portare interessanti consigli lì.
chl

Assolutamente; anche se aggiungerei che le raccomandazioni nei link sopra potrebbero davvero applicarsi a qualsiasi progetto statistico (indipendentemente dalla lingua).
Shane,

Decisamente sì! Ho aggiornato la mia domanda allo stesso tempo.
chl

8

Questo si sovrappone alla risposta di Shane, ma a mio avviso ci sono due moli principali:

  • Riproducibilità ; non solo perché non si finirà con risultati resi "in qualche modo", ma si potrà anche rieseguire l'analisi più velocemente (su altri dati o con parametri leggermente modificati) e avere più tempo per pensare ai risultati. Per dati enormi, puoi prima testare le tue idee su alcuni piccoli "playset" e poi estenderli facilmente su tutti i dati.
  • Buona documentazione ; script commentati sotto controllo di versione, alcune riviste di ricerca, persino un sistema di ticket per progetti più complessi. Migliora la riproducibilità, semplifica il monitoraggio degli errori e semplifica la scrittura di report finali.

+1 Mi piace il secondo punto (uso roxygen + git). Il primo punto mi fa pensare anche alla possibilità di dare il tuo codice a un altro statistico che sarà in grado di riprodurre i risultati in una fase successiva del progetto, senza alcun aiuto.
chl,

Riproducibilità? I dati hanno comunque errori casuali, quindi chi se ne frega. Documentazione? Due possibili risposte: 1) Siamo troppo occupati, non abbiamo tempo per la documentazione o 2) Avevamo solo il budget per fare l'analisi o documentarla, quindi abbiamo scelto di fare l'analisi. Pensi che sto scherzando? Ho visto / sentito questi atteggiamenti in molte occasioni - in progetti in cui la vita cavalcava la linea.
Mark L. Stone,


1

Solo i miei 2 centesimi. Ho trovato Notepad ++ utile per questo. Sono in grado di mantenere script separati (controllo del programma, formattazione dei dati, ecc.) E un file .pad per ciascun progetto. Il file .pad chiama tutti gli script associati a quel progetto.


3
Intendi notepad ++ con l'uso di npptor :)
Tal Galili,

1

Mentre le altre risposte sono ottime, aggiungerei un altro sentimento: evitare di usare SPSS. Ho usato SPSS per la tesi di laurea magistrale e ora lavoro regolarmente nelle ricerche di mercato.

Lavorando con SPSS, è stato incredibilmente difficile sviluppare codice statistico organizzato, a causa del fatto che SPSS non è in grado di gestire più file (certo, è possibile gestire più file, ma non è indolore come R), perché non è possibile archiviare set di dati a una variabile - devi usare "dataset activ x" - codice, che può essere una seccatura totale. Inoltre, la sintassi è goffa e incoraggia gli shorthands, che rendono il codice ancora più illeggibile.


0

I quaderni di Jupyter, che funzionano con R / Python / Matlab / etc, rimuovono il fastidio di ricordare quale script genera una certa figura. Questo post descrive un modo ordinato per mantenere il codice e la figura uno accanto all'altro. Conservare tutte le cifre per un capitolo di un articolo o di una tesi in un singolo taccuino rende molto facile trovare il codice associato.

Ancora meglio, infatti, perché puoi scorrere, diciamo, una dozzina di figure per trovare quella che desideri. Il codice viene nascosto fino a quando non è necessario.

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.