ユニット 2 / 11

データのクリーニングと準備: 欠損データ、外れ値、コーディング

利益:

  • 欠落しているデータ タイプ (MCAR/MAR/MNAR)、異常値、コーディング エラーを認識し、正しいデータで AI を使用してクリーンアップ コードと診断を生成する機能
  • 人工知能によって提案された各クリーニング手順 (削除、割り当て、変換) が分析結果にどのような影響を与えるかを確認し、可逆的で文書化されたワークフローを確立する機能
  • クリーンアップの決定はデータを生成するプロセスの知識に基づいており、人工知能は盲目のオートマトンではなく監視されたアシスタントであることを維持する

経験豊富なアナリストなら誰でも、1 つの真実を知っています。実証プロジェクトのほとんどの時間は、モデリングではなく、データ クリーニング (データ内のエラー、欠落、不一致を修正し、分析できる状態にする作業) に費やされるということです。大まかな経験則として、時間の約 70 ~ 80% がデータの理解、クリーニング、変換に費やされます。実際の分析には 20 ~ 30% だけが残っています。この単元では、人工知能 (AI) がこの重荷をどのように軽減するか、またどの決定をユーザーが残すべきなのか、そしてその理由を段階的に見ていきます。

まず 2 つの基本的な事実を述べましょう。まず、クリーニングの決定は、データを生成するプロセスに関するユーザーの知識に基づいて行われます。なぜ値が欠落しているのか、なぜ数値が大きすぎるのかを知っているのはユーザーだけです。 AI はデータを見ませんし、コンテキストも知りません。コードを書くだけで、意思決定はしません。第 2 に、各洗浄ステップによって分析結果が変化する可能性があります。外れ値を削除すると係数が逆転する可能性があります。欠損を平均値で埋めると、分散を人為的に減らすことができます。したがって、クリーンアップは元に戻すことができ、文書化する必要があります。生データには決して触れず、コードで各ステップを実行し、各ステップの影響を記録します。

段階的な清掃ワークフロー

1. データを知る。まず構造を確認します: 行 (観測値) と列 (変数) の数、各変数のタイプ (数値、カテゴリ、日付)、要約統計量、欠損値の数。 AI にこの「データ プロファイル」コードを要求できます。しかし、出力を読んで、「なぜこの変数がテキストとして来たのか?」というような質問をします。

2. 欠損データを理解し、分類します。欠損データは 3 つのタイプに分類されます。 MCAR (完全にランダムな欠落): 欠落の原因は何もありません。たとえば、センサーがランダムに故障したなどです。 MAR (Missing At Random): 欠損は他の観測変数に依存します。たとえば、高齢者は質問を空白のままにすることが多くなりますが、年齢はわかります。 MNAR (Missing Not At Random): 欠損は観測されていない値自体に依存します。たとえば、高所得者は収入を報告しません。この区別は解決方法を決定するものであり、AI がこれを決定することはできないため、重要です。

3. 不足しているものに対処します。オプション: リストごとの削除、平均/中央値の代入、モデルベースの多重代入。 MCAR での削除は比較的安全ですが、サンプル サイズが減少します。 MAR では複数の割り当ての方が適切です。 MNAR の不偏性を保証する簡単な方法はありません。欠乏のメカニズムをモデル化するか、少なくとも感度分析を実行する必要があります。平均値を埋めることは簡単ですが危険です。分散を減らし、関係を弱め、不確実性を隠します。

4. 外れ値を調べます。外れ値とは、他の観測値から非常に遠く離れた観測値です。 2 つの質問を分けてください: これはエラーですか (データ入力に年齢 999 と書き込まれました)、それとも実際の外れ値ですか (億万長者の収入)。バグを修正します。真の外れ値はデータを表すため、削除しないでください。 「面倒だから」外れ値を削除すると、データが結果に向かって偏ることになります。

5. コーディングと一貫性。カテゴリを標準化し (「男性」、「男性」、「E」をすべて 1 つのコードに)、日付を 1 つの形式に、単位を 1 つのスケールにまとめ、重複行を検出します。これは、AI が最も効果的に役立つ最もリスクの低いフェーズです。

6. 文書化して凍結します。各ステップをコードとコメント行で記録し、生のデータとクリーンなデータを分けて保存します。したがって、審判が「なぜこれらの観察は削除されたのですか?」と尋ねると、あなたには答えが用意されています。

注意: 結果に基づいてクリーニングを決定しないでください。 「この行を削除すると、係数が重要になります」という行を削除することは、p ハッキングの最も陰湿な形式であり、これについては次の単元で説明します。

比較表: 欠損データのメソッド

方法

いつが適切ですか?

リスク

AIの役割

行を削除する

MCAR、低い欠損率

サンプルが小さくなる、MAR/MNAR に偏りがある

コードを書きます。あなたが決める

平均/中央値の割り当て

迅速な予備分析

差異を減らし、関係を隠す

簡単ですが、お勧めしません。警告する必要があります

多重割り当て (MI)

MAR、重要な変数

正しくインストールされていないと誤解を招く可能性があります

推奨コードとパッケージ (マウス)

機構モデリング

MNAR

複雑で仮定が多い

ドラフトのみ。専門家が必要です

コピー可能な 4 つのプロンプト

1. データプロファイリング:

あなたの役割: データ クレンジング アシスタント。データを共有しません。R コードが必要です。 「digital」という名前の data.frame があります。変数: ID、年齢 (数値)、収入 (数値)、教育 (カテゴリ)、地域 (カテゴリ)、日付 (日付)。タスク: 各変数の型、欠損数と割合、数値の場合は要約統計量、カテゴリの場合は度数表を生成するコードを作成します。コメント行を追加します。

2. 欠損データの診断:

上記の「数字」データの欠損パターンを調べるコードを作成します。 - 各変数の欠損率、 - 欠損と他の変数の関係を示す単純な表/グラフ。コードの出力を見て、MCAR/MAR/MNAR を区別します。診断ツールを作成するだけであり、割り当て方法は決定しないでください。

3. 異常値の検査 (削除ではない):

削除せずに外れ値を検査する変数 'income' のコードを作成します: 箱ひげ図、IQR ベースの範囲、および外れ値の観測値と値をリストしたテーブル。これらが間違いなのか本当なのか見てみましょう。自動削除を追加します。

4. コーディングの標準化:

「education」変数には、「小学校」、「小学校」、「PRIMARY」、「高校」、「高校」、「大学」、「大学」という値が混在して書かれています。これらを一貫したカテゴリに再コード化する R コードを作成します。各変換を確認できるように、マッピング テーブルを明確に示します。認識できない値は「UNKNOWN」に設定してください。

弱いプロンプト / 強いプロンプト

弱いプロンプト:

データをクリーンアップし、ギャップを埋め、外れ値を破棄します。

この要求は危険です。AI に盲目的な権限を与えてしまいます。どのような種類の欠落があり、どのような詰め物があり、どのような矛盾した真実があるのか​​、どれも明らかではありません。その結果、密かに偏ったデータセットが作成される可能性があります。

強力なプロンプト:

あなたの役割: 清掃アシスタント。あなたは意思決定者ではありません。ステップごとに進めて、各ステップの影響をレポートするコードを作成します。1) 欠落しているパターンを表示します (削除/埋めないでください)、2) 外れ値の候補をリストします (削除しないでください)、3) マッピング テーブルとのカテゴリの不一致を修正します。各ステップの後に行数と要約統計を出力して、変更を確認して確認できるようにします。自動割り当て/削除挿入。

違いは明らかです。強い意志は AI を監視されたアシスタントとして位置づけ、可逆的で文書化された手順を生成します。

ミニケース3個

ケース 1 — 平均割り当てトラップ。あるアナリストの5,000人分の所得データには18%が欠けていた。彼はAIに「ギャップを埋める」ように言いました。 AI がそれらをすべて平均化しました。結果: 収入の分散は 22% 減少し、教育と収入の関係の係数は以前よりも弱いことが判明しました。正しい方法: 不足は MAR (教育による) であり、複数の課題 (マウス) で補う必要がありました。教訓: 充填方法はメカニズムに依存します。

ケース 2 — 外れ値のクリーニングにより、結果が逆転します。 1 つの企業データには 3 つの非常に大規模な企業 (観測結果全体の 0.6%) が含まれていました。これらは AI の「クリーニング」提案によって削除されました。規模の経済係数はプラスからマイナスに転じました。しかし、これら 3 社は実在し、業界の重要な部分を占めていました。正しい方法は、削除するのではなく、完全かつ堅牢な推定の両方を使用してレポートすることでした。教訓: 実際の外れ値はデータであり、ノイズではありません。

ケース 3 — サイレントコーディングエラー。 1 つのパネルでは、日付変数が 2 つの異なる形式 (「2020-03-01」と「01/03/2020」) で示されています。 AIが生成した組み合わせコードがそれらを異なる値と間違えると、1,400の観測値が一致せず、増加率がとんでもないものになった。アナリストが行数をチェックしなくても問題ありません。教訓: 各ステップ後の観察カウントと健全性チェックは必須です。

よくある間違い

  • 平均とのギャップをやみくもに埋める。これにより、分散が減少し、不確実性が隠蔽され、MAR/MNAR にバイアスが生じます。まずメカニズムを分類します。
  • 外れ値は「面倒だから」削除。真の外れ値はデータを表します。削除すると結果が変わります。間違っているものを修正し、真実を保ちます。
  • 生データをタップします。生データは決して変更しないでください。別のコピーのコードを使用してすべてのクリーンアップを実行し、元に戻せるようにします。
  • 段差の影響を測定していない。各ステップの後に行数と要約統計がチェックされないと、サイレント エラーが蓄積されます。
  • 結果としては大掃除。 「この行を追加すると結果が良くなる」というロジックは p-ハッキング です。クリーニングは、分析結果とは関係なく、事前に計画する必要があります。
ヒント: クリーンアップの前後に、同じ基本統計 (平均、中央値、観測値の数、いくつかの相関関係) を並べた「前後」の表を作成しておきます。予期せぬジャンプは、隠れたエラーの最良の前兆です。

要約すると

データ クリーニングは、実証作業の中で最も時間がかかり、意思決定が必要なフェーズです。この点では、AI は強力なコード ジェネレーターですが、決定権を握ることはできません。欠落しているデータ タイプ (MCAR/MAR/MNAR) を分類し、外れ値がエラーか本物かを判断し、各ステップを元に戻せるようにして文書化します。 AI に盲目的な「明確な」権限を与えるのではなく、その影響が測定および検証される段階的なワークフローを確立します。各ステップの後に観測数と要約統計量を確認することが、サイレント エラーに対する最善の対策となります。

アプリケーションタスク

データ セット (独自のデータまたはサンプル セット) 内の欠損値と外れ値を含む変数を少なくとも 2 つ選択します。上記の「ステップバイステップ、削除/入力しないでください」プロンプトを介して AI から診断コードをリクエストし、実行します。欠陥を MCAR/MAR/MNAR に分類し、その理由を 1 文で書きます。矛盾した候補を 1 つずつ調べて、どれが間違いでどれが本物かを判断します。最後に、クリーニング前後の「ビフォーアフター」表を作成し、予期せぬ変化があったかどうかを報告します。

チェックリスト

  • [ ] 生データを変更せずに別のコピーでクリーンアップしました。
  • [ ] 私は欠損症を MCAR/MAR/MNAR に分類し、それに応じて方法を選択しました。
  • [ ] 私は外れ値を 1 つずつ調べて、それがエラーなのか本物なのかを調べました。やみくもに削除したわけではありません。
  • [ ] 各クリーニング手順の後に、観察数と要約統計量を確認しました。
  • [ ] すべての手順をコードとコメント行で文書化しました。可逆。
  • [ ] 私は分析結果ではなく、データを生成するプロセスの知識に基づいてクリーニングを行いました。