重要なデータチェックテスト


93

私の職務では、他の人のデータセットをよく使用します。専門家ではない人が臨床データを持ってきて、それを要約して統計テストを行うのを助けます。

私が抱えている問題は、私が持ってくるデータセットがほとんどの場合、タイプミス、矛盾、その他あらゆる種類の問題に満ちていることです。他の人が、入ってくるデータセットをチェックしようとする標準テストを持っているかどうかを知りたいです。

よく見るために各変数のヒストグラムを描いていましたが、このテストを乗り切ることができる恐ろしいエラーがたくさんあることに気付きました。たとえば、先日、反復測定データセットがありました。一部の個人では、反復測定が時間2と時間1で同一でした。これは、予想どおり正しくないことが判明しました。別のデータセットには、非常に重度の障害(高スコアで表される)から問題のない状態に移行した個人がいて、全体で0で表されています。これは絶対に不可能ですが、明確に証明することはできませんでした。

それでは、各データセットでどのような基本的なテストを実行して、タイプミスや不可能な値が含まれていないことを確認できますか?

前もって感謝します!


3
いい質問ですね。チェックはデータセットの詳細に依存するため、一般的な答えを出すのは難しいと思います。
mark999

2
@ mark999同意します。この質問に対する答えを読むことに興味があります。一般的な戦略はいくつかありますが、多くのチェックは、データがどのように見えるべきか、および発生する可能性のあるいくつかの一般的なエラーの両方について、ドメイン固有の期待値を構築することです。
ジェロミーアングリム

1
ここの読者は、次のスレッドにも関心があります:データベースの品質保証と品質管理(qa / qc)ガイドライン
GUNG

回答:


77

データがどのように記録されたかを理解するのに役立ちます。

話を共有させてください。かつて、多くのデータセットはフェージングハードコピーでのみ保存されていました。暗黒の時代、私は組織(素晴らしい血統と規模、多くの人がおそらくその株を所有している)と契約して、製造工場の1つで約10 ^ 5の環境モニタリングデータの記録をコンピューター化しました。これを行うには、私は個人的には、(データがいた場所を示すために)研究室の報告書の棚をマークアップされたデータ入力フォームを作成し、ために派遣会社と契約読み書きデータをフォームに入力するワーカー。(はい、読むことができる人には余分にお金を払わなければなりませんでした。)データの価値と機密性のために、私はこのプロセスを一度に2人の作業者と並行して行いました。数週間かかりました。2つのエントリセットを比較するソフトウェアを作成し、表示されたすべてのエラーを体系的に特定して修正しました。

少年はエラーがありました!何がうまくいかないのでしょうか?エラーを記述および測定する良い方法は、基本的な記録のレベルです。この状況では、特定の監視ポイントで得られた特定のサンプルの単一の分析結果(一部の化学物質の濃度)の記述でした。与えられた日付。2つのデータセットを比較すると、次のことがわかりました。

  • 省略の誤り:1つのデータセットにレコードが含まれ、別のデータセットには含まれません。これは通常、(a)ページの下部で1行または2行が見落とされるか、(b)ページ全体がスキップされるために発生しました。

  • 本当にデータ入力の間違いである、見逃しの明らかなエラー。レコードは、監視ポイント名、日付、および「分析物」(通常は化学名)によって識別されます。これらのいずれかに誤植がある場合、関連する他のレコードとは一致しません。実際には、正しいレコードが消え、誤ったレコードが表示されます。

  • 偽の複製。同じ結果が複数のソースに現れ、複数回転写され、そうでない場合は真の繰り返し測定値のように見えます。重複は簡単に検出できますが、誤っているかどうかを判断するには、重複がデータセットに表示されるかどうかを知る必要があります。時々、あなたはただ知ることができません。

  • 率直なデータ入力エラー。「良い」ものはデータムのタイプを変更するため、簡単にキャッチできます。たとえば、数字「0」に文字「O」を使用すると、数字が非数字に変わります。他の良いエラーは値を大きく変えるので、統計的検定で簡単に検出できます。(あるケースでは、「1,000,010 mg / Kg」の先頭の桁が切り捨てられ、10の値が残っていました。農薬濃度について話しているとき、それは大きな変化です!) 「50」を「80」と入力するなど、残りのデータに適合する(並べ替える)値。(この種の間違いは、OCRソフトウェアで常に発生します。)

  • トランスポーズ。正しい値を入力できますが、間違ったレコードキーに関連付けられています。これは、データセットのグローバルな統計特性が変更されないままになる可能性があるため、潜行性がありますが、グループ間で誤った違いが作成される可能性があります。おそらく、ダブルエントリのようなメカニズムだけがこれらのエラーを検出することさえできます。

これらのエラーを認識し、その発生方法を知っているか、または理論を把握したら、スクリプトを記述して、データセットにそのようなエラーが存在する可能性を調べ、さらに注意を喚起するためにフラグを立てることができます。それらを常に解決できるわけではありませんが、少なくとも「コメント」または「品質フラグ」フィールドを含めて、後の分析を通じてデータに付随させることができます。

それ以来、データ品質の問題に注意を払い、大規模な統計データセットの包括的なチェックを行う機会が増えました。完璧なものはありません。それらはすべて品質チェックの恩恵を受けます。これを行うために長年にわたって開発してきたいくつかの原則には、

  1. 可能な限り、データ入力およびデータ転記手順の冗長性作成します。チェックサム、合計、繰り返しエントリ:一貫性の自動内部チェックをサポートするもの。

  2. 可能であれば、データがどのように見えるかを説明する別のデータベース、つまりコンピューターが読み取り可能なメタデータを作成して活用します たとえば、薬物実験では、すべての患者が3回見られることを事前に知っている場合があります。これにより、すべての正しいレコードと、入力待ちの値を持つ識別子を含むデータベースを作成できます。指定されたデータを入力し、重複、省略、予期しないデータをチェックします。

  3. 分析用にデータセットをフォーマットする方法に関係なく、データを常に正規化します(具体的には、少なくとも4番目の正規形式に変換します)。これにより、モデリングする概念的に異なるすべてのエンティティのテーブルを作成する必要があります。(環境の場合、これには監視場所、サンプル、化学物質(特性、典型的な範囲など)の表、それらのサンプルのテスト(テストは通常​​化学物質のスイートをカバーします)、およびそれらのテストの個々の結果が含まれます。そうすることで、データの品質と一貫性の多くの効果的なチェックを作成し、潜在的に欠落または重複または不整合な値を特定します。

    この作業(優れたデータ処理スキルが必要ですが、簡単です)は驚くほど効果的です。大規模または複雑なデータセットの分析を望んでおり、リレーショナルデータベースとその理論の実用的な知識がない場合は、できるだけ早く学習するもののリストに追加してください。それはあなたのキャリアを通して配当を支払います。

  4. 可能な限り多くの「愚かな」チェックを常に実行してください。これらは、日付が予想される期間に収まる、患者(または化学物質など)のカウントが常に正しく加算される、値が常に合理的である(たとえば、pHが0から14であり、これは、ドメインの専門知識が最も役立つ可能性がある場所です。統計学者は、専門家の愚かな質問を恐れずに尋ね、データを確認するために答えを悪用することができます。

もちろん、もっと多くのことを言うことができます-主題は本の価値があります-しかし、これはアイデアを刺激するのに十分なはずです。



2
1つのフォローアップの質問-主題は本の価値があります-本はありますか?
クリスビーリー

5
+1-すばらしい答えです。私はあなたが(私はr-bloggers.comにあなたの文章を追加するために愛しているだろう):)ブログを持っていたい
タルGalili

2
あなたは主題が価値がある本を書くべきです!
ザック

1
これは非常に複雑なため、多くのコンサルタント会社が「データの取得/クリーニング/保存」に特化しています。
ルーカスレイ

25

@whuberは素晴らしい提案をします。私はこれを追加するだけです:プロット、プロット、プロット、プロット。散布図、ヒストグラム、箱ひげ図、ラインプロット、ヒートマップなど、考えられるあらゆるもの。もちろん、あなたが見つけたように、どのプロットでも明らかではないエラーがありますが、それらは開始するのに適した場所です。ソフトウェアが欠落データなどをどのように処理するかを明確にしてください。

コンテキストに応じて、クリエイティブを取得できます。多変量データでやりたいことの1つは、ある種の因子モデル/確率的PCA(欠損データに対して複数の補完を行うもの)に適合させ、できるだけ多くのコンポーネントのスコアを調べることです。重要度の低いコンポーネント/ファクターで高いスコアをとるデータポイントは、多くの場合、他では見られない外れ値です。


5
+1プロットは統計のためのもので、シカゴに対する投票とは何ですか。誰もが早く頻繁に行うことです。;-)
whuber

15

私がチェックする傾向がある大きなもの:

  1. 変数タイプ-数値が因子/文字ではなく数値であることを確認します(入力されたデータに何らかの問題があることを示している可能性があります)
  2. 一貫した値レベル-「t1」という名前の変数が「t1」または「t 1」という名前の変数を再び見つけられなかったことを確認する
  3. 外れ値-値の範囲が意味をなすことを確認します。(血圧値は0ですか?マイナスですか?)。ここで、誰かが-5を欠損値またはそのようなものとしてエンコードしたことがわかります。
  4. 線形制限。私はそれを使用しませんが、いくつかの列の依存関係に再構築したいという人もいます(列A、BはCに追加する必要がある、またはそのようなもの)。このため、重複排除パッケージを見ることができます(前回のuseR会議で講演者のMark van der Looに会いました-そして彼のパッケージには非常に感銘を受けました)
  5. ランダム性が少なすぎる。値が特定の値に丸められたり、ある時点で切り捨てられたりすることがありました。これらのタイプの事柄は、散布図でより明確になります。
  6. 欠損値-欠損が他の変数に関連していないことを確認します(ランダムに欠損)。しかし、ここで説明する経験則はありません。
  7. 空の行またはほとんど値のない行。これらは(通常)見つけられ、省略されるべきです。

素晴らしい質問ところで-私はこの問題に関する他の人々の経験を読んでみたい。


10

時間に沿った測定値(「縦断的データ」)がある場合、勾配と周辺分布をチェックすると便利なことがよくあります。この勾配は、さまざまなスケールで計算できます。より一般的には、データに対して有意な変換(フーリエ、ウェーブレット)を行い、変換されたデータの周辺の分布を確認できます。


7

私が常に経験するいくつか:

  1. あるはずのレコードの数はありますか?たとえば、別のソースからデータを取得した場合、またはそのデータが他の誰かのデータのサブセットである場合、数値は適切に見えますか。あなたはこれがカバーされると思うだろうが、あなたは...驚くだろう。
  2. すべての変数がありますか?これらの変数の値には意味がありますか?たとえば、Yes / No / Missing変数が「1,2,3」とコーディングされている場合-それはどういう意味ですか?
  3. 欠損値はどこにありますか?情報が不足していると思われるいくつかの変数はありますか?膨大な数の欠損値を持つ特定の主題があります。

これらは、データセットが探索的データ分析などの準備が整っていることを確認するための最初のステップです。ただ座って、データについて歩き回って、「それは…そうですか?」


1

各列にアクセプタンスサンプリングメソッドを使用します(高品質と低品質の間の線を引くことができるカットオフ番号を提供します)。そのためのオンライン計算機があります。


3
これは、現在の答えよりもコメントとしての方が適しています。少し詳しく説明してください。リソースや参考文献へのリンクなどを提供してください。
アントワーヌ

1
これが効果的であり、まったく機能しない(文字列または他の名義データなど)またはひどい(すべての多変量関係を完全に無視するため)の多くを見つけるのが簡単な多くの状況を確認することは困難です。時系列(およびいくつかの関連データ)を除いて、データテーブルのレコードには固有の順序がないため、多くの(すべてではないにしても)受け入れサンプリング方法はシーケンスに依存するため、これもarbitrary意的です。
whuberの

さて、ここに使用する計算機があります:sqconline.com/… ランダム化受け入れサンプリングを使用する限り使用できます。複雑にしたい場合は、体系的なサンプリング手法を使用してから、各セグメントで受け入れサンプリングを使用できます
Tareq Shahwan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.