Essentiels tests de vérification des données

93

Dans mon travail, je travaille souvent avec des ensembles de données d'autres personnes. Des non-experts m'apportent des données cliniques et je les aide à les résumer et à effectuer des tests statistiques.

Le problème que je rencontre est que les ensembles de données que je suis amené sont presque toujours semés de fautes de frappe, d'incohérences et de toutes sortes d'autres problèmes. Je suis intéressé de savoir si d’autres personnes ont des tests standard pour vérifier tous les jeux de données entrants.

Auparavant, je dessinais des histogrammes de chaque variable, mais je me rends compte à présent que de nombreuses erreurs horribles peuvent survivre à ce test. Par exemple, l’autre jour, j’ai eu un jeu de données de mesures répétées où, pour certains individus, la mesure répétée était identique à l’heure 2 et à l’heure 1. Cela s’est par la suite avéré inexact, comme on pouvait s’y attendre. Un autre ensemble de données comprenait une personne qui était passée d’un très grave désordre (représenté par un score élevé) à une situation sans problème, représentée par un 0 dans l’ensemble. C'est tout simplement impossible, bien que je ne puisse pas le prouver définitivement.

Quels tests de base puis-je exécuter sur chaque jeu de données pour vérifier qu'ils ne contiennent pas de fautes de frappe et qu'ils ne contiennent pas de valeurs impossibles?

Merci d'avance!

Chris Beeley
la source
3
Excellente question. Je pense qu’il sera difficile de donner des réponses générales car les contrôles dépendront des spécificités de l’ensemble de données.
Mark999
2
@ mark999 je suis d'accord. Je serais intéressé de lire les réponses à cette question. Il existe certaines stratégies générales, mais j'estime que de nombreuses vérifications consistent à définir des attentes spécifiques à un domaine, à la fois à propos de l'apparence des données et de certaines des erreurs courantes pouvant survenir.
Jeromy Anglim
1
Les lecteurs ici intéressés seront également intéressés par le fil suivant: Lignes directrices sur l'assurance de la qualité et le contrôle de la qualité (qa / qc) pour une base de données .
Gay - Rétablir Monica

Réponses:

77

Cela aide à comprendre comment les données ont été enregistrées.

Laisse-moi partager une histoire . Une fois, il y a longtemps, de nombreux jeux de données étaient uniquement stockés dans une copie papier à fondu. En ces jours sombres, j’ai passé un contrat avec une organisation (de grande taille, dont vous possédez probablement le stock) pour informatiser environ 10 ^ 5 enregistrements de données de surveillance de l’environnement dans l’une de ses usines de fabrication. Pour ce faire, j'ai personnellement balisé une étagère de rapports de laboratoire (pour montrer où se trouvaient les données), créé des formulaires de saisie de données et passé un contrat avec une agence de travail temporaire pour savoir lire et écrire.les travailleurs à taper les données dans les formulaires. (Oui, vous deviez payer un supplément pour les personnes sachant lire.) En raison de la valeur et de la sensibilité des données, j'ai conduit ce processus en parallèle avec deux travailleurs à la fois (qui changeaient généralement de jour en jour). Cela a pris quelques semaines. J'ai écrit un logiciel pour comparer les deux ensembles d'entrées, en identifiant et en corrigeant systématiquement toutes les erreurs qui se sont présentées.

Boy étaient là des erreurs! Qu'est-ce qui peut aller mal? Un bon moyen de décrire et de mesurer les erreurs est au niveau de l’ enregistrement de base , qui dans cette situation était la description d’un seul résultat analytique (la concentration de certains produits chimiques, souvent) pour un échantillon particulier obtenu à un point de surveillance donné sur une période donnée. date donnée. En comparant les deux jeux de données, j'ai trouvé:

  • Erreurs d'omission : un jeu de données inclurait un enregistrement, pas un autre. Cela se produit généralement parce que soit (a) une ligne ou deux seraient négligés au bas d'une page ou (b) une page entière serait ignorée.

  • Erreurs apparentes d'omission qui étaient en réalité des erreurs de saisie de données. Un enregistrement est identifié par un nom de point de surveillance, une date et "l'analyte" (généralement un nom chimique). Si l'un de ces éléments présente une erreur typographique, il ne sera pas mis en correspondance avec les autres enregistrements auxquels il est lié. En effet, l'enregistrement correct disparaît et un enregistrement incorrect apparaît.

  • Fausse duplication . Les mêmes résultats peuvent apparaître dans plusieurs sources, être transcrits plusieurs fois et semblent être de vraies mesures répétées quand ils ne le sont pas. Les doublons sont faciles à détecter, mais le fait de savoir s’ils sont erronés dépend du fait de savoir si des doublons doivent même apparaître dans le jeu de données. Parfois, vous ne pouvez pas savoir.

  • Frank erreurs de saisie de données . Les "bons" sont faciles à attraper car ils changent le type de donnée: en utilisant la lettre "O" pour le chiffre "0", par exemple, on transforme un nombre en un non-nombre. D'autres bonnes erreurs changent tellement la valeur qu'elle peut être facilement détectée avec des tests statistiques. (Dans un cas, le premier chiffre de "1 000,010 mg / Kg" a été coupé, ce qui laisse une valeur de 10. C'est un changement énorme lorsque vous parlez d'une concentration de pesticide!) Les mauvaises erreurs sont difficiles à détecter car elles changent une valeur dans une qui correspond (en quelque sorte) au reste des données, telle que la saisie de "80" pour "50". (Ce genre d'erreur se produit tout le temps avec le logiciel OCR.)

  • Transpositions . Les bonnes valeurs peuvent être entrées mais associées aux mauvaises clés d’enregistrement. Cela est insidieux, car les caractéristiques statistiques globales de l'ensemble de données peuvent rester inchangées, mais des différences parasites peuvent être créées entre les groupes. Seul un mécanisme comme la double entrée est même capable de détecter ces erreurs.

Une fois que vous êtes conscient de ces erreurs et que vous connaissez ou avez une théorie de la façon dont elles se produisent, vous pouvez écrire des scripts pour surveiller vos ensembles de données afin de détecter la présence éventuelle de telles erreurs et les signaler pour plus d'attention. Vous ne pouvez pas toujours les résoudre, mais vous pouvez au moins inclure un champ "commentaire" ou "indicateur de qualité" pour accompagner les données lors de leur analyse ultérieure.

Depuis lors, j'ai porté une attention particulière aux problèmes de qualité des données et j'ai eu beaucoup plus d'occasions de procéder à des vérifications complètes de grands ensembles de données statistiques. Aucune n'est parfaite. ils bénéficient tous de contrôles de qualité. Certains des principes que j'ai développés au fil des ans pour ce faire incluent

  1. Dans la mesure du possible, créez une redondance dans les procédures de saisie et de transcription de données: sommes de contrôle, totaux, saisies répétées: tout pour prendre en charge les contrôles internes internes de cohérence.

  2. Si possible, créez et exploitez une autre base de données décrivant à quoi les données devraient ressembler: il s'agit de métadonnées lisibles par ordinateur. Par exemple, dans le cadre d’une expérience sur un médicament, vous pouvez savoir à l’avance que chaque patient sera vu trois fois. Cela vous permet de créer une base de données avec tous les enregistrements corrects et leurs identifiants avec les valeurs qui ne demandent qu'à être renseignées. Remplissez-les avec les données qui vous ont été fournies, puis recherchez les doublons, les omissions et les données inattendues.

  3. Normalisez toujours vos données (en particulier, placez- les sous au moins la quatrième forme normale ), quelle que soit la manière dont vous envisagez de formater l'ensemble de données pour analyse. Cela vous oblige à créer des tableaux de chaque entité conceptuellement distincte que vous modélisez. (Dans le cas environnemental, cela inclurait des tableaux de sites de surveillance, des échantillons, des produits chimiques (propriétés, plages typiques, etc.), des tests de ces échantillons (un test couvre généralement une série de produits chimiques) et les résultats individuels de ces tests. Ce faisant, vous créez de nombreuses vérifications efficaces de la qualité et de la cohérence des données et identifiez de nombreuses valeurs potentiellement manquantes, en double ou incohérentes.

    Cet effort (qui nécessite de bonnes compétences en traitement de données mais qui est simple) est étonnamment efficace. Si vous aspirez à analyser des ensembles de données volumineux ou complexes et que vous n’avez pas une bonne connaissance pratique des bases de données relationnelles et de leur théorie, ajoutez-le à votre liste de choses à apprendre le plus tôt possible. Cela rapportera des dividendes tout au long de votre carrière.

  4. Effectuez toujours autant de contrôles "stupides" que possible . Ce sont des vérifications automatisées d'éléments évidents tels que les dates tombent dans les périodes prévues, le nombre de patients (ou de produits chimiques ou autres) s'additionne toujours correctement, les valeurs sont toujours raisonnables (par exemple, un pH doit être compris entre 0 et 14 et peut-être dans une plage beaucoup plus étroite pour, par exemple, les lectures de pH sanguin), etc. C'est là que l'expertise du domaine peut être la plus utile: le statisticien peut sans crainte poser des questions stupides aux experts et exploiter les réponses pour vérifier les données.

Bien entendu, on peut en dire beaucoup plus - le sujet vaut la peine d'être lu - mais cela devrait suffire à stimuler les idées.

whuber
la source
5
excellent addenda à votre base de données Directives QA / QC
David LeBauer
2
Une question de suivi - le sujet vaut un livre - existe-t-il un livre?
Chris Beeley
5
+1 - réponse merveilleuse whuber. J'aurais aimé que vous ayez un blog :) (J'aurais bien aimé ajouter votre écriture à r-bloggers.com)
Tal Galili
2
Vous devriez écrire le livre que le sujet vaut!
Zach
1
C'est tellement compliqué que de nombreuses sociétés de conseil se spécialisent dans "la récupération / le nettoyage / le stockage de données".
Lucas Reis
25

@ Whuber fait de bonnes suggestions. Je voudrais seulement ajouter ceci: parcelles, parcelles, parcelles, parcelles. Nuages ​​de points, histogrammes, boîtes à moustaches, diagrammes de lignes, cartes thermiques et tout ce que vous pouvez penser. Bien sûr, comme vous l'avez constaté, certaines erreurs ne sont apparentes sur aucune parcelle, mais elles constituent un bon point de départ. Assurez-vous simplement que votre logiciel gère clairement les données manquantes, etc.

Selon le contexte, vous pouvez faire preuve de créativité. Une chose que j’aime faire avec les données multivariées est d’ajuster un modèle factoriel / ACP probabiliste (quelque chose qui permettra l’imputation multiple pour les données manquantes) et de rechercher les scores pour autant de composantes que possible. Les points de données qui ont un score élevé sur les composants / facteurs moins importants sont souvent des valeurs aberrantes que vous ne verriez peut-être pas autrement.

JMS
la source
5
+1 Le tracé représente les statistiques pour ce qui est de voter pour Chicago: quelque chose que tout le monde fait tôt et souvent. ;-)
whuber
15

Les grandes choses que j'ai tendance à vérifier:

  1. Type de variable - pour voir qu'un nombre est numérique, et non pas facteur / caractère (peut indiquer un problème avec les données entrées)
  2. Niveaux de valeur cohérents - pour voir qu'une variable avec le nom "t1" ne s'est pas retrouvée avec le nom "t1" ou "t 1"
  3. Les valeurs aberrantes - voyez que les fourchettes de valeur ont un sens. (avez-vous obtenu une valeur de pression artérielle de 0? ou moins?). Ici, nous découvrons parfois que quelqu'un a codé -5 comme valeur manquante, ou quelque chose comme ça.
  4. Restrictions linéaires. Je n'utilise pas cela, mais certains trouvent qu'ils souhaitent avoir des restrictions sur les dépendances de certaines colonnes (les colonnes A, B doivent ajouter à C, ou quelque chose comme ça). Pour cela, vous pouvez jeter un coup d’œil au paquet déducorrect (j’ai rencontré le conférencier, Mark van der Loo, lors de la dernière conférence utilisateur - et j’ai été très impressionné par son paquet)
  5. trop peu de hasard. Parfois, les valeurs devaient être arrondies à certaines valeurs, ou tronquées à un moment donné. Ce type de choses est souvent plus clair dans les diagrammes de dispersion.
  6. Valeurs manquantes - s'assurer que la valeur manquante n'est pas liée à une autre variable (manquante au hasard). Mais je n'ai pas de règle à donner ici.
  7. Vider les lignes ou les lignes avec la plupart du temps aucune valeur. Ceux-ci devraient être (généralement) trouvés et omis.

Bonne question BTW - J'espère lire l'expérience d'autres personnes à ce sujet.

Tal Galili
la source
10

Lorsque vous avez des mesures dans le temps (" données longitudinales "), il est souvent utile de vérifier les gradients ainsi que les distributions marginales. Ce gradient peut être calculé à différentes échelles. Plus généralement, vous pouvez effectuer des transformations significatives sur vos données (fourier, ondelette) et vérifier les distributions des marginaux des données transformées.

robin girard
la source
7

Quelques-uns je passe toujours par:

  1. Y a-t-il le nombre de disques qu'il est supposé avoir? Par exemple, si vous avez extrait vos données d'une autre source ou d'un sous-ensemble de données de quelqu'un d'autre, vos chiffres ont-ils une apparence raisonnable? Vous penseriez que cela serait couvert, mais vous seriez ... surpris.
  2. Est-ce que toutes vos variables sont là? Les valeurs de ces variables ont-elles un sens? Par exemple, si une variable oui / non / manquante est codée "1,2,3", qu'est-ce que cela signifie?
  3. Où sont vos valeurs manquantes? Y a-t-il des variables qui semblent surchargées d'informations manquantes? Y at-il certains sujets avec un nombre massif de valeurs manquantes?

Ce sont les premières étapes que je franchis pour m'assurer qu'un jeu de données est même prêt pour quelque chose comme une analyse exploratoire des données. Assis, errant à propos des données, certains vont "Est-ce que ... ça semble correct?"

Fomite
la source
1

J'utiliserais une méthode d'échantillonnage d'acceptation pour chaque colonne (il donne le nombre de coupures où vous pouvez tracer une ligne de démarcation entre qualité élevée et qualité médiocre), il existe un calculateur en ligne pour cela.

Tareq Shahwan
la source
3
cela conviendrait mieux comme commentaire que comme réponse tel qu'il est actuellement. veuillez élaborer un peu, fournir des liens vers des ressources ou des références, etc.
Antoine
1
Il est difficile de voir de nombreuses circonstances dans lesquelles cela serait efficace et il est facile d'en trouver beaucoup pour lesquelles cela ne fonctionne pas du tout (telles que des chaînes ou autres données nominales) ou est terrible (car il ignore complètement toutes les relations multivariées). Cela semble également arbitraire, car, sauf pour les séries chronologiques (et certaines données connexes), il n'y a pas d'ordre inhérent dans les enregistrements d'un tableau de données, alors que de nombreuses méthodes d'échantillonnage par acceptation (sinon toutes) dépendent de la séquence.
whuber
Eh bien, voici la calculatrice à utiliser: sqconline.com/… Tant que vous utilisez l'échantillonnage d'acceptation par randomisation, vous pouvez l'utiliser. Si vous voulez compliquer les choses, vous pouvez utiliser la technique d'échantillonnage systématique, puis l'échantillonnage d'acceptation sur chaque segment
Tareq Shahwan