ChatGPTソラ先生と学ぶ!中級者のためのAI実践講座【第17回】ChatGPTでデータの異常値を見つける方法|Excelの入力ミス・外れ値・重複データを検出して正確に分析する実践講座
こんにちは、ソラ先生です。
前回は、ChatGPTを使ってExcelの売上データを集計し、グラフを作成しながら、数字の変化や傾向を読み取る方法を学びました。
今回は、そのデータ分析で見落としてはいけない重要なテーマを取り上げます。
それが「異常値の発見とデータの確認」です。
皆さんは、こんな経験はありませんか?
「Excelの売上合計が、実際の金額と合わない」
「平均値を計算したら、予想より大きな数字になった」
「同じ注文が二重に登録されていた」
「一部のデータだけ、ほかと大きく違っている」
「数字を修正したら、分析結果が大きく変わった」
日常業務では、さまざまなデータを扱います。
売上金額、受注件数、在庫数量、加工時間、測定結果、製品の不良率などです。
こうしたデータを分析するとき、最初に確認したいのは、数字が正しく記録されているかどうかです。
どれだけ優れた分析方法を使っても、元になるデータに間違いがあれば、結果も不正確になる可能性があります。
ChatGPTは、データの中から不自然な数値や重複、入力形式の違いなどを見つける手助けができます。
しかし、ほかと違う数字が見つかったからといって、それが間違いとは限りません。
今回は、異常値を発見し、その理由を調べ、正しいデータとして扱うべきか判断するまでの流れを学んでいきましょう。
1.異常値とは何でしょうか?
異常値とは、通常の範囲や傾向と大きく異なる数値などを指します。
例えば、ある会社で、製品1個の加工時間を記録しているとします。
通常は20分前後で加工しています。
ところが、ある日の記録に「200分」という数字がありました。
この数字を見たら、どう考えるでしょうか。
入力時にゼロを一つ多く記入したのかもしれません。
設備が故障して、実際に長い時間がかかったのかもしれません。
加工中に追加作業が発生した可能性もあります。
つまり、200分という数字が不自然に見えても、すぐに間違いとは判断できません。
ここで、三つの言葉を区別してみましょう。
異常値
通常の傾向から大きく外れた、調査が必要と考えられる値。
外れ値
ほかの観測値と比較して、統計的に大きく離れている値。
入力ミス
記録や転記の際に、実際とは異なる内容が入力されたもの。
外れ値は、必ずしも入力ミスではありません。
また、入力ミスが、必ず目立つ異常値になるとも限りません。
例えば、本来100個と入力するところを110個と入力した場合、周囲の数字と似ているため、単純な異常値検出では見つからないかもしれません。
この違いを理解することが、正確なデータ分析の第一歩です。
2.実践例|加工時間に異常値が見つかった
今回は、製造業の加工時間を例に考えてみましょう。
次の表は、同じ種類の製品について、加工時間を記録した架空のデータです。
| 製品番号 | 加工時間 |
|---|---|
| A001 | 19分 |
| A002 | 21分 |
| A003 | 20分 |
| A004 | 18分 |
| A005 | 22分 |
| A006 | 20分 |
| A007 | 200分 |
| A008 | 21分 |
| A009 | 19分 |
| A010 | 20分 |
この表を見ると、A007の200分が目立ちます。
ほかの製品は18〜22分なのに、A007だけ200分です。
そこで、ChatGPTに質問してみましょう。
実践プロンプト①
「次の加工時間データについて、ほかの値と大きく異なる数値を探してください。ただし、異常値と判断した理由を説明し、入力ミスだと決めつけないでください」
AIは、A007の200分を確認対象として挙げると考えられます。
しかし、ここで作業を終わらせてはいけません。
重要なのは、200分という数字が、なぜ記録されているのかを調べることです。
3.異常値が平均値に与える影響
先ほどの加工時間を使って、平均値を計算してみましょう。
10件の合計加工時間は380分です。
したがって、平均加工時間は38分になります。
ところが、200分のデータを除いて計算すると、残り9件の平均は20分です。
つまり、1件の大きな数値によって、平均値が大きく変わっています。
| 集計条件 | 平均加工時間 |
|---|---|
| 10件すべて | 38分 |
| A007を除く9件 | 20分 |
ここで注意してほしいことがあります。
200分という記録が正しいなら、分析の目的によっては除外してはいけません。
例えば、設備停止や段取りの遅れも含めた実際の作業負荷を調べたい場合、その200分は重要な情報かもしれません。
一方、通常の加工条件における加工時間を把握したい場合は、特別な事情があった作業を分けて分析する方法もあります。
そこでChatGPTに質問します。
実践プロンプト②
「A007の加工時間200分によって、平均値が大きく変わりました。このデータを残して分析する場合と、通常作業とは分けて分析する場合の違いを説明してください。分析目的によって判断がどう変わるか整理してください」
異常値を削除する前に、何のために分析しているのか確認することが大切です。
4.平均値だけでなく中央値も確認する
異常値の影響を考えるとき、役立つのが「中央値」です。
中央値とは、データを小さい順に並べたとき、中央に位置する値です。
データが偶数個の場合は、中央にある二つの値の平均を使います。
先ほどの加工時間データを小さい順に並べると、
18、19、19、20、20、20、21、21、22、200
となります。
中央の5番目と6番目は、どちらも20分です。
したがって、中央値は20分になります。
平均値は38分でしたが、中央値は20分です。
この違いを見ると、200分という大きな値が平均へ強く影響していることが分かります。
ChatGPTには、次のように依頼できます。
実践プロンプト③
「この加工時間データについて、平均値、中央値、最小値、最大値を計算してください。それぞれが何を示しているのか説明し、極端な値がある場合の注意点も整理してください」
ただし、中央値が20分だからといって、200分の記録が間違っていると証明されたわけではありません。
平均値と中央値は、データの特徴を異なる方法で表しているのです。
5.ChatGPTへExcelファイルを読み込ませる
実際の仕事では、10件ではなく、数百件、数千件のデータを扱うことがあります。
この場合、すべての数字を目で確認するのは大変です。
そこで、ExcelファイルをChatGPTへアップロードし、データの確認を依頼する方法があります。
例えば、加工時間を記録したExcelファイルがあるとします。
まず、ファイルの内容を確認します。
実践プロンプト④
「添付したExcelファイルについて、シート名、列名、データ件数、数値の範囲を確認してください。まだデータを変更せず、どのような情報が含まれているのか整理してください」
次に、異常値の候補を調べます。
「加工時間の列について、ほかの値と大きく異なるデータを抽出してください。該当する行番号、製品番号、加工時間、異常と判断した理由を一覧にしてください」
このように、最初にデータ構成を確認してから分析すると、対象となる列を間違える可能性を減らせます。
ただし、AIが作成した結果についても、元のExcelファイルと照合する必要があります。
6.Excelで異常値を見つける方法
ChatGPTへファイルを送らなくても、Excelの機能を使って確認できることがあります。
例えば、加工時間がB2からB11まで入力されているとします。
平均値を計算するには、次の関数を使います。
=AVERAGE(B2:B11)
中央値を求めるには、
=MEDIAN(B2:B11)
最大値を確認するには、
=MAX(B2:B11)
最小値は、
=MIN(B2:B11)
です。
また、一定の基準を超えた値を見つけたい場合には、条件付き書式を使う方法があります。
例えば、加工時間が60分を超えたセルを目立たせる設定です。
ただし、60分という基準は、今回の説明用に設定したものです。
実際には、作業内容や製品によって適切な基準が変わります。
ChatGPTには次のように質問できます。
実践プロンプト⑤
「ExcelのB列に加工時間が入力されています。60分を超える数値を条件付き書式で目立たせたいです。Windows版Excelでの操作方法を、一つずつ説明してください」
このように、Excelの標準機能とChatGPTを組み合わせることもできます。
7.統計的な方法で外れ値を探す
データが多い場合、統計的な方法を使って外れ値の候補を探すことがあります。
代表的な方法の一つに、四分位範囲を使った方法があります。
四分位範囲とは、データを小さい順に並べたとき、中央の50%に相当する範囲の広さを表すものです。
第1四分位数をQ1、第3四分位数をQ3とすると、
四分位範囲(IQR)=Q3-Q1
となります。
一般的な外れ値の検出方法の一つでは、
下限=Q1-1.5×IQR
上限=Q3+1.5×IQR
という範囲を計算します。
この範囲から外れたデータを、外れ値の候補として確認します。
ただし、この方法にも限界があります。
データの件数が少ない場合や、分布の特徴によっては、適切な判定にならないことがあります。
また、外れ値として検出されたデータが間違っているとは限りません。
ChatGPTには次のように相談できます。
実践プロンプト⑥
「このデータについて、四分位範囲(IQR)を使って外れ値の候補を検出してください。計算に使った四分位数の定義と判定基準を示し、外れ値として検出された理由を説明してください。データを自動的に削除しないでください」
統計的な方法は、確認すべきデータを探すための道具です。
それだけでデータの正誤を判断できるわけではありません。
8.異常値の原因を調べる
先ほどの加工時間200分の記録について、実際の作業日報を確認したとします。
すると、次の内容が記録されていました。
「加工中に設備が停止し、復旧作業に時間がかかった」
この場合、200分という数字は実際の作業記録だった可能性があります。
そこで、もう一つ確認したいことがあります。
その200分には、設備の停止時間も含まれているのでしょうか。
もし含まれているなら、純粋な切削時間と、設備停止による時間を分けて考えた方がよい場合があります。
例えば、
通常の加工時間:20分。
設備停止と復旧による追加時間:180分。
合計:200分。
という内訳だったとします。
この場合、200分という記録を削除するのではなく、作業時間の内訳を明確にすることで、より役立つ情報になります。
ChatGPTには次のように質問します。
実践プロンプト⑦
「加工時間200分の記録について、設備停止が発生していたことが分かりました。通常の加工時間と停止・復旧時間を分けて管理する場合、どのような記録項目が必要か考えてください」
こうした分析によって、単なる異常値が、設備改善のための重要な情報に変わることがあります。
9.重複データを見つける
データ分析では、異常値だけでなく、重複データにも注意が必要です。
例えば、受注管理表に次の記録があったとします。
| 注文番号 | 売上金額 |
|---|---|
| A1001 | 50万円 |
| A1002 | 30万円 |
| A1003 | 40万円 |
| A1002 | 30万円 |
この表では、注文番号A1002が2回登録されています。
もし同じ注文を誤って二重登録していたなら、売上合計が実際より30万円多くなります。
しかし、注文番号が同じだからといって、必ず入力ミスとは限りません。
例えば、一つの注文について複数回の納品や分割請求を管理している場合です。
そのため、重複の意味を確認する必要があります。
ChatGPTには次のように依頼できます。
実践プロンプト⑧
「受注データの注文番号に重複がないか確認してください。重複している行を一覧にし、完全な二重登録の可能性と、分割納品などによって正しく複数登録されている可能性を区別するための確認項目を整理してください」
重複を見つけた段階では、削除せず、実際の取引記録と照合しましょう。
10.空欄のデータをどう扱う?
Excelでは、一部のセルが空欄になっていることがあります。
例えば、次のような検査記録です。
| 製品番号 | 測定値 |
|---|---|
| A001 | 20.01mm |
| A002 | 20.02mm |
| A003 | 空欄 |
| A004 | 19.99mm |
この場合、A003の測定値はなぜ空欄なのでしょうか。
測定を忘れたのでしょうか。
測定が不要な製品だったのでしょうか。
測定器の不具合によって測定できなかったのでしょうか。
それとも、単なる転記漏れでしょうか。
空欄の意味によって、対応方法が変わります。
ここで注意したいのは、空欄を自動的にゼロとして扱わないことです。
ゼロという測定値と、測定していないことは同じではありません。
また、周囲の数値から平均値を計算して空欄を埋める方法もありますが、製品の品質判定などでは、実際の測定結果の代わりにはできません。
実践プロンプト⑨
「検査データに空欄があります。未測定、測定不要、記録漏れ、測定不能などの可能性を区別して管理する方法を考えてください。空欄を自動的にゼロや平均値で補わないでください」
11.単位や入力形式の違いを確認する
データ分析で見落としやすいのが、単位や入力形式の違いです。
例えば、加工時間について、ある担当者は分単位で記録しているとします。
別の担当者は秒単位で入力していたらどうなるでしょうか。
「30」という数字が、30分なのか30秒なのか分からなくなります。
また、寸法についても、mmとμmが混在している場合があります。
1mmは1,000μmです。
単位を確認せずに比較すると、大きな間違いにつながる可能性があります。
さらに、Excelでは数字が文字列として保存されていることもあります。
その場合、集計や計算で想定した結果にならないことがあります。
ChatGPTには次のように相談できます。
実践プロンプト⑩
「このExcelデータについて、数値の単位、日付形式、数字と文字列の混在を確認してください。単位が不明なデータについては推測で変換せず、確認が必要な項目として整理してください」
12.製品の測定データでは、特に慎重な確認が必要
ここまで、売上や加工時間などのデータを中心に説明してきました。
しかし、製品の測定値を扱う場合には、より慎重な判断が必要です。
例えば、直径20.00±0.05mmの製品を検査しているとします。
許容範囲は、19.95mmから20.05mmです。
測定結果が20.08mmだった場合、図面の許容範囲を超えています。
ここで、
「ほかの製品と大きく違うので、この値は異常値として削除しましょう」
という判断をしてはいけません。
むしろ、品質上の重要な問題かもしれません。
測定値が正しいか、測定条件や測定器に問題がないか、製品が規格を満たしているかを確認する必要があります。
また、測定方法や合否判定に正式なルールがある場合は、その基準に従う必要があります。
統計的な外れ値と、製品の規格外判定は、別の問題です。
この違いを理解しておくことが大切です。
13.AIが異常値を見落とすこともある
ChatGPTを使えば、データの確認を効率化できる場合があります。
しかし、AIがすべての問題を見つけられるとは限りません。
例えば、数値だけを見ると自然でも、実際の業務条件と矛盾する場合があります。
ある製品の加工時間が30分だったとします。
ほかの製品も同じくらいの時間なら、統計的には異常に見えないかもしれません。
しかし、その製品は通常2時間かかる特殊な形状だったとしたらどうでしょうか。
30分という数字は、入力間違いの可能性があります。
このような問題を見つけるには、数値の分布だけでなく、製品の種類や作業内容を理解する必要があります。
そこで、ChatGPTに次のように質問します。
実践プロンプト⑪
「加工時間の異常値を確認したいです。全体の平均値だけでなく、製品の種類、加工方法、使用設備などの条件ごとに比較してください。同じ条件のデータが不足している場合は、そのことも明確にしてください」
このように、データの背景を考慮することで、単純な外れ値検出では見つけにくい問題に気づく可能性があります。
14.異常値を修正した場合は、記録を残す
調査の結果、入力ミスが確認されたとします。
例えば、本来20分だった加工時間を、誤って200分と入力していた場合です。
このようなときは、正しい記録を確認したうえで修正します。
ただし、重要な業務データでは、変更前の情報を残すことも大切です。
例えば、
変更前の値:200分。
変更後の値:20分。
変更理由:作業日報との照合により入力ミスを確認。
確認した資料:該当する作業日報。
変更日:実際に修正した日付。
変更担当者:修正を行った人。
こうした記録を残すことで、後から変更内容を確認できます。
ChatGPTには次のように相談できます。
実践プロンプト⑫
「Excelのデータで入力ミスが確認されました。修正前の数値、修正後の数値、修正理由、確認資料、担当者、変更日を管理できる修正履歴表を作成してください」
また、元データを保護し、分析用のデータを別に用意する方法もあります。
重要なのは、何を変更したのか確認できる状態にすることです。
15.今日の実践課題|異常値を見つけて確認してみよう
今回は、ChatGPTを使って、異常値を発見する練習をしてみましょう。
最初は、今回紹介した10件の加工時間データを利用します。
ステップ① Excelにデータを入力する
A列に製品番号。
B列に加工時間。
A001からA010までのデータを入力してください。
ステップ② ChatGPTに読み込ませる
「このExcelファイルのデータ構成を確認してください。製品番号と加工時間が正しく読み取れているか整理してください」
ステップ③ 基本的な数値を計算する
「加工時間の平均値、中央値、最小値、最大値を計算してください」
ステップ④ 異常値の候補を探す
「ほかのデータと大きく異なる加工時間を探してください。その理由を説明してください」
ステップ⑤ 異常値の影響を調べる
「すべてのデータを使った場合と、A007を除いた場合の平均値を比較してください。ただし、元のデータは変更しないでください」
ステップ⑥ 原因を考える
「A007の加工時間200分について、入力ミス、設備停止、追加作業などの可能性を考え、それぞれを確認する方法を整理してください」
ステップ⑦ 仮の追加情報を与える
「作業日報を確認したところ、設備停止が発生していたことが分かりました。この情報を踏まえて、データの扱い方を考え直してください」
ステップ⑧ 結果をまとめる
「今回の分析について、確認できた事実、異常値の候補、考えられる原因、追加確認事項を整理してください」
この練習では、単に異常値を見つけることではなく、その数字が何を意味しているのかを考えることが重要です。
16.異常値は、業務改善のヒントになることがある
異常値というと、削除するべき間違ったデータだと思われがちです。
しかし、実際には重要な情報が含まれている場合があります。
例えば、加工時間が通常より大幅に長くなっていた場合です。
原因を調べると、設備の故障や工具の問題が見つかるかもしれません。
また、売上金額が突然増加した場合には、新しいお客様からの大型案件が関係している可能性があります。
一方、通常より短い作業時間が記録されていた場合、効率的な方法が使われていたのかもしれません。
もちろん、単なる入力ミスである可能性もあります。
重要なのは、異常値を見つけたときに、すぐに削除しないことです。
なぜその数字になったのか。
どのような条件で発生したのか。
ほかのデータにも同じ傾向があるのか。
こうしたことを調べることで、仕事の改善につながる発見が得られる場合があります。
17.データを正しく扱うことが、分析の信頼性を高める
ChatGPTは、データを集計し、グラフを作成し、異常値の候補を探す手助けができます。
しかし、データの意味や背景を、すべて理解しているわけではありません。
例えば、200分という加工時間が、設備停止を含む実績なのか、入力ミスなのかは、作業記録を確認しなければ分かりません。
また、品質検査の測定値について、統計的に大きく外れているからといって、勝手に削除することはできません。
そのため、データ分析では、元の情報を尊重することが大切です。
疑問のある数字を見つけたら、その理由を調べる。
確認できない場合は、未確認として扱う。
修正する場合は、根拠と履歴を残す。
そして、分析結果を実際の業務と照らし合わせる。
こうした姿勢によって、分析の信頼性を高めることができます。
まとめ|異常値を見つけることは、問題を理解する第一歩
今回は、ChatGPTを使ってデータの異常値を見つけ、確認する方法を学びました。
重要なポイントは、次のとおりです。
- 異常値、外れ値、入力ミスの違いを理解する。
- 平均値だけでなく、中央値や最大値、最小値も確認する。
- 大きく異なる数字を、すぐに間違いと判断しない。
- Excelの関数や条件付き書式を活用する。
- 統計的な方法は、確認対象を探すために利用する。
- 重複データや空欄の意味を確認する。
- 単位や入力形式の違いにも注意する。
- 修正する場合は、根拠と変更履歴を残す。
- 異常値の背景を調べ、業務改善に活かす。
データ分析では、数字が正しいことが大前提になります。
しかし、正しい数字であっても、その意味を理解しなければ、適切な判断につながらない場合があります。
例えば、通常より長い加工時間は、単なる入力ミスかもしれません。
しかし、設備の問題を知らせる重要な記録かもしれません。
逆に、ほかのデータと似ている数字でも、実際には記録が間違っている可能性があります。
だからこそ、数字を機械的に処理するだけでなく、実際の仕事や記録と照らし合わせることが必要なのです。
データ分析で大切なのは、都合の悪い数字を取り除くことではありません。数字の背景にある事実を理解することです。
ChatGPTと一緒にデータを整理し、不自然な数値を見つけ、原因を調べる。
そして、確認できた事実をもとに、仕事の改善へつなげていく。
それが、中級編で学んでいきたい実践的なAI活用です。
次回【中級編・第18回】
「ChatGPTで売上予測を考える方法|過去データから将来の見通しを立て、予測の限界を理解する実践講座」
次回は、過去の売上データをもとに、将来の見通しを考える方法を学びます。
単純な増減の延長だけでなく、季節変動や大型案件、事業環境の変化なども考慮しながら、AIを使って複数のシナリオを検討する方法を学んでいきましょう。