Test di controllo dei dati essenziali


93

Nel mio ruolo lavorativo lavoro spesso con set di dati di altre persone, i non esperti mi portano dati clinici e li aiuto a riassumere ed eseguire test statistici.

Il problema che sto riscontrando è che i set di dati che mi vengono proposti sono quasi sempre pieni di errori di battitura, incoerenze e ogni sorta di altri problemi. Sono interessato a sapere se altre persone hanno test standard che fanno per provare a controllare tutti i set di dati che arrivano.

Disegnavo istogrammi di ogni variabile solo per dare un'occhiata ma ora mi rendo conto che ci sono molti errori orribili che possono sopravvivere a questo test. Ad esempio, l'altro giorno ho avuto un set di dati di misure ripetute in cui, per alcuni individui, la misura ripetuta era identica al tempo 2 come al tempo 1. Ciò è stato successivamente dimostrato errato, come ci si aspetterebbe. Un altro set di dati ha avuto un individuo che è passato da un disordine molto grave (rappresentato da un punteggio elevato) a un problema senza problemi, rappresentato da 0 su tutta la linea. Questo è semplicemente impossibile, anche se non ho potuto dimostrarlo definitivamente.

Quindi quali test di base posso eseguire su ogni set di dati per assicurarmi che non abbiano errori di battitura e che non contengano valori impossibili?

Grazie in anticipo!


3
Ottima domanda Sospetto che sarà difficile dare risposte generali perché i controlli dipenderanno dalle specifiche del set di dati.
mark999

2
@ mark999 Sono d'accordo. Sarò interessato a leggere le risposte a questa domanda. Esistono alcune strategie generali, ma trovo che un sacco di controlli riguardino la costruzione di aspettative specifiche del dominio, sia su come dovrebbero apparire i dati, sia su alcuni degli errori comuni che possono sorgere.
Jeromy Anglim,

Risposte:


77

Aiuta a capire come sono stati registrati i dati.

Vorrei condividere una storia . Una volta, molto tempo fa, molti set di dati venivano archiviati solo in scolorimento. In quei giorni bui ho stipulato un contratto con un'organizzazione (di grande genealogia e dimensioni; molti di voi probabilmente possiedono il proprio stock) per informatizzare circa 10 ^ 5 registrazioni di dati di monitoraggio ambientale in uno dei suoi impianti di produzione. Per fare ciò, ho personalmente contrassegnato uno scaffale di rapporti di laboratorio (per mostrare dove fossero i dati), creato moduli di immissione dei dati e contratto con un'agenzia temporanea per alfabetizzatilavoratori per digitare i dati nei moduli. (Sì, hai dovuto pagare un extra per le persone che potevano leggere.) A causa del valore e della sensibilità dei dati, ho condotto questo processo in parallelo con due lavoratori alla volta (che di solito cambiavano di giorno in giorno). Ci sono volute un paio di settimane. Ho scritto un software per confrontare le due serie di voci, identificando e correggendo sistematicamente tutti gli errori che sono emersi.

Ragazzo ci sono stati errori! Cosa può andare storto? Un buon modo per descrivere e misurare gli errori è a livello del record di base , che in questa situazione era una descrizione di un singolo risultato analitico (la concentrazione di alcuni prodotti chimici, spesso) per un particolare campione ottenuto in un determinato punto di monitoraggio su un data data. Nel confrontare i due set di dati, ho trovato:

  • Errori di omissione : un set di dati includerebbe un record, un altro no. Questo di solito accade perché (a) una o due righe verrebbero ignorate nella parte inferiore di una pagina o (b) un'intera pagina verrebbe ignorata.

  • Apparenti errori di omissione che erano realmente errori di immissione dei dati. Un record è identificato da un nome punto di monitoraggio, una data e "analita" (di solito un nome chimico). Se uno di questi presenta un errore tipografico, non verrà associato agli altri record a cui è correlato. In effetti, il record corretto scompare e appare un record errato.

  • Duplicazione falsa . Gli stessi risultati possono apparire in più fonti, essere trascritti più volte e sembrano essere vere misure ripetute quando non lo sono. I duplicati sono facili da rilevare, ma decidere se sono errati dipende dal sapere se i duplicati devono apparire anche nel set di dati. A volte non puoi proprio saperlo.

  • Errori di immissione dei dati di Frank . I "buoni" sono facili da catturare perché cambiano il tipo di dato: usando la lettera "O" per la cifra "0", ad esempio, trasforma un numero in un non-numero. Altri buoni errori cambiano il valore così tanto che può essere facilmente rilevato con test statistici. (In un caso, la cifra principale in "1.000.010 mg / Kg" è stata tagliata, lasciando un valore di 10. Questo è un enorme cambiamento quando si parla di una concentrazione di pesticidi!) I cattivi errori sono difficili da rilevare perché cambiano un valore in uno che si adatta (più o meno) al resto dei dati, come digitare "80" per "50". (Questo tipo di errore si verifica continuamente con il software OCR.)

  • Trasposizioni . I valori corretti possono essere inseriti ma associati a chiavi record errate. Questo è insidioso, perché le caratteristiche statistiche globali del set di dati potrebbero rimanere inalterate, ma è possibile creare differenze spurie tra i gruppi. Probabilmente solo un meccanismo come la doppia entrata è persino in grado di rilevare questi errori.

Una volta che sei a conoscenza di questi errori e conosci, o hai una teoria, su come si verificano, puoi scrivere script per trollare i tuoi set di dati per la possibile presenza di tali errori e segnalarli per ulteriore attenzione. Non è sempre possibile risolverli, ma almeno è possibile includere un campo "commento" o "flag di qualità" per accompagnare i dati durante le loro analisi successive.

Da quel momento ho prestato attenzione ai problemi di qualità dei dati e ho avuto molte più opportunità di effettuare controlli completi di grandi set di dati statistici. Nessuno è perfetto; beneficiano tutti di controlli di qualità. Alcuni dei principi che ho sviluppato negli anni per farlo includono

  1. Ove possibile, creare ridondanza nelle procedure di immissione e trascrizione dei dati: checksum, totali, voci ripetute: qualsiasi cosa per supportare controlli interni automatici di coerenza.

  2. Se possibile, creare e sfruttare un altro database che descriva come dovrebbero essere i dati: vale a dire metadati leggibili dal computer. Ad esempio, in un esperimento farmacologico potresti sapere in anticipo che ogni paziente sarà visto tre volte. Ciò consente di creare un database con tutti i record corretti e i relativi identificatori con i valori che aspettano solo di essere compilati. Compilarli con i dati forniti e quindi verificare la presenza di duplicati, omissioni e dati imprevisti.

  3. Normalizza sempre i tuoi dati (in particolare, mettili in almeno la quarta forma normale ), indipendentemente da come prevedi di formattare il set di dati per l'analisi. Questo ti costringe a creare tabelle di ogni entità concettualmente distinta che stai modellando. (Nel caso ambientale, ciò includerebbe tabelle di posizioni di monitoraggio, campioni, sostanze chimiche (proprietà, intervalli tipici, ecc.), Prove di quei campioni (una prova di solito copre una serie di sostanze chimiche) e i singoli risultati di tali prove. In tal modo si creano molti controlli efficaci sulla qualità e coerenza dei dati e si identificano molti valori potenzialmente mancanti o duplicati o incoerenti.

    Questo sforzo (che richiede buone capacità di elaborazione dei dati ma è semplice) è sorprendentemente efficace. Se aspiri ad analizzare set di dati di grandi dimensioni o complessi e non hai una buona conoscenza pratica dei database relazionali e della loro teoria, aggiungi quello al tuo elenco di cose da imparare il prima possibile. Pagherà dividendi per tutta la tua carriera.

  4. Esegui sempre quanti più "stupidi" controlli possibili . Si tratta di una verifica automatizzata di cose ovvie tali che le date rientrano nei loro periodi previsti, il conteggio dei pazienti (o sostanze chimiche o altro) si sommano sempre correttamente, che i valori sono sempre ragionevoli (ad esempio, un pH deve essere compreso tra 0 e 14 e forse in un intervallo molto più ristretto, ad esempio, per le letture del pH del sangue), ecc. Qui è dove la competenza del dominio può essere di grande aiuto: lo statistico può fare domande senza paura agli esperti e sfruttare le risposte per controllare i dati.

Naturalmente si può dire molto di più - l'argomento merita un libro - ma questo dovrebbe essere sufficiente per stimolare le idee.


5
eccellente addendum al tuo database Linee guida QA / QC
David LeBauer

2
Una domanda di follow-up - l'argomento vale un libro- c'è un libro?
Chris Beeley,

5
+1 - meravigliosa risposta whuber. Vorrei che avessi un blog :) (Mi sarebbe piaciuto aggiungere i tuoi scritti a r-bloggers.com)
Tal Galili,

2
Dovresti scrivere il libro che vale la pena!
Zach,

1
Ciò è così complicato che molte società di consulenza sono specializzate in "recupero / pulizia / archiviazione dei dati".
Lucas Reis,

25

@whuber dà ottimi suggerimenti; Vorrei solo aggiungere questo: grafici, grafici, grafici, grafici. Grafici a dispersione, istogrammi, grafici a scatole, grafici a linee, mappe di calore e qualsiasi altra cosa ti venga in mente. Naturalmente, come hai scoperto, ci sono errori che non saranno evidenti in nessuna trama ma sono un buon punto di partenza. Assicurati solo di essere chiaro su come il tuo software gestisce i dati mancanti, ecc.

A seconda del contesto puoi diventare creativo. Una cosa che mi piace fare con i dati multivariati è adattarsi a una sorta di modello fattoriale / PCA probabilistico (qualcosa che farà imputazione multipla per i dati mancanti) e guardare i punteggi per il maggior numero possibile di componenti. I punti dati che ottengono un punteggio elevato sui componenti / fattori meno importanti sono spesso valori anomali che altrimenti non si potrebbero vedere.


5
+1 La trama è per le statistiche ciò che il voto è per Chicago: qualcosa che tutti fanno presto e spesso. ;-)
whuber

15

Grandi cose che tendo a controllare:

  1. Tipo di variabile - per vedere che un numero è numerico e non fattore / carattere (potrebbe indicare qualche problema con i dati inseriti)
  2. Livelli di valore coerenti - per vedere che una variabile con il nome "t1" non si è trovata di nuovo con il nome "t1" o "t 1"
  3. Valori erratici: vedere che gli intervalli di valori hanno un senso. (hai avuto un valore di pressione sanguigna di 0? o meno?). Qui a volte scopriamo che qualcuno ha codificato -5 come valore mancante o qualcosa del genere.
  4. Restrizioni lineari. Non lo uso, ma alcuni trovano che desiderano avere restrizioni sulle dipendenze di alcune colonne (le colonne A, B devono aggiungere a C o qualcosa del genere). Per questo puoi dare un'occhiata al pacchetto deducibile (ho incontrato il relatore, Mark van der Loo, nell'ultima conferenza useR - e sono rimasto molto colpito dal suo pacchetto)
  5. troppo poca casualità. A volte i valori devono essere arrotondati ad alcuni valori o troncati ad un certo punto. Questo tipo di cose è spesso più chiaro nei grafici a dispersione.
  6. Valori mancanti: accertarsi che la mancanza non sia correlata ad altre variabili (mancanti a caso). Ma non ho una regola pratica da dare qui.
  7. Righe vuote o righe per lo più senza valori. Questi dovrebbero essere (di solito) trovati e omessi.

Grande domanda BTW - Spero di leggere l'esperienza degli altri sull'argomento.


10

Quando si hanno misure nel tempo (" dati longitudinali ") è spesso utile controllare i gradienti e le distribuzioni marginali. Questo gradiente può essere calcolato su scale diverse. Più in generale puoi fare trasformazioni significative sui tuoi dati (fourier, wavelet) e controllare le distribuzioni dei marginali dei dati trasformati.


7

Alcuni ne passo sempre attraverso:

  1. Ci sono il numero di record che dovrebbero esserci? Ad esempio, se hai estratto i tuoi dati da un'altra fonte o è un sottoinsieme di dati di qualcun altro, i tuoi numeri sembrano ragionevoli. Penseresti che questo sarebbe coperto, ma saresti ... sorpreso.
  2. Ci sono tutte le tue variabili lì? I valori di queste variabili hanno senso? Ad esempio, se una variabile Sì / No / Mancante è codificata "1,2,3", cosa significa?
  3. Dove sono i tuoi valori mancanti? Ci sono alcune variabili che sembrano sovraccaricate di informazioni mancanti? Ci sono alcuni soggetti con un numero enorme di valori mancanti.

Questi sono i primi passi che faccio attraverso per assicurarsi che un set di dati sia persino pronto per qualcosa come l'analisi esplorativa dei dati. Stando semplicemente seduti, girovagando per i dati andando "Sembra ... sembra giusto?"


1

Vorrei utilizzare il metodo di campionamento di accettazione per ogni colonna (fornisce il numero di cut-off in cui è possibile tracciare la linea tra alta qualità e bassa qualità), c'è un calcolatore online per quello.


3
questo si adatterebbe meglio come commento che come risposta così com'è attualmente. si prega di elaborare un po ', fornire collegamenti a risorse o riferimenti, ecc.
Antoine

1
È difficile vedere molte circostanze in cui questo sarebbe efficace e facile trovarne molte per le quali o non funziona affatto (come stringhe o altri dati nominali) o è terribile (perché ignora completamente tutte le relazioni multivariate). Sembra anche arbitrario, perché ad eccezione delle serie temporali (e di alcuni dati correlati), non esiste un ordine intrinseco nei record di una tabella di dati, mentre molti (se non tutti) metodi di campionamento di accettazione dipendono dalla sequenza.
whuber

Bene, ecco il calcolatore da utilizzare: sqconline.com/… Finché si utilizza il campionamento per accettazione randomizzato può essere utilizzato. Se si desidera complicarlo, è possibile utilizzare la tecnica di campionamento sistematico e quindi utilizzare il campionamento di accettazione su ciascun segmento
Tareq Shahwan
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.