エクセル分析ツール

欠損値の処理方法|Excelで実践する補完・除外の判断基準

記事内に広告が含まれています。

製造現場のデータを集めると、必ず欠損値が出ます。センサーの一時停止、記録漏れ、外れ値として除去した後の空欄など、原因はさまざまです。欠損値をどう扱うかで分析結果が変わるため、「とりあえず0で埋める」や「行ごと削除」では済まない場面が多くあります。

欠損値の種類(MCAR・MAR・MNAR)を見極めてから、Excelで実践できる4つの処理方法(リストワイズ除去・平均値補完・中央値補完・前値補完)を選びます。製造品質データの例で手順を確認します。

この記事でわかること

  • 欠損値の3種類(MCAR・MAR・MNAR)と処理の方針の違い
  • リストワイズ除去・平均値補完・中央値補完のExcelでの実装
  • 時系列データへの前値補完・線形補間
  • どの方法を選ぶかの判断フロー

欠損値の3種類

欠損値は「なぜ欠損しているか」によって3種類に分けられます。処理方法の選択に直結するため、最初に確認します。

種類 英語名 欠損の原因 製造現場の例
MCAR Missing Completely At Random どのデータとも無関係にランダムに欠損 センサーの一時的な通信障害
MAR Missing At Random 欠損が他の変数と関連するが、欠損した変数自身とは無関係 重量が重いロットのみ追加測定があり、通常ロットは一部省略
MNAR Missing Not At Random 欠損した値そのものが欠損の原因 硬度が低すぎてセンサーの検出限界以下になり記録なし

MNARは最も扱いが難しく、単純な補完では推定にバイアスが入ります。「欠損した値が低い/高い方向に偏っているかどうか」を確認してから処理方針を決めてください。

例題データ

製造ラインで8サンプル分の品質検査データを取得しました。一部の測定が欠損しています。

サンプル 重量(g) 硬度(HB) 引張強度(MPa)
1 502 185 440
2 498 435
3 505 190
4 180 428
5 501 188 442
6 503 438
7 499 186
8 507 192 448

欠損状況:重量1件(12.5%)、硬度2件(25%)、引張強度2件(25%)。欠損はランダムで、特定の値と関連していないと仮定します(MCAR想定)。

リストワイズ除去

1列でも欠損があるサンプルをそのまま分析から除外する方法です。「完全ケース分析」とも呼ばれます。

今回のデータでリストワイズ除去を適用すると、サンプル2・3・4・6・7が除外され、残るのはサンプル1・5・8の3件のみです(8件→3件、62.5%削減)。

Excelでの実装

IF関数を使い、欠損のない行だけを別シートにコピーします。

=IF(AND(B2<>"",C2<>"",D2<>""),A2,"")

または、フィルター機能で各列の「空白セル」を非表示にして作業する方法が現実的です。

リストワイズ除去を使う条件

  • 欠損がMCARであること(偏りのないランダム欠損)
  • 欠損率が全体の5〜10%以下で、除去後もサンプルサイズが十分なこと

今回のように欠損率が25%に達する場合、リストワイズ除去で8件中5件を捨てることになります。分析に使えるデータが3件では少なすぎるので、補完に切り替えます。

平均値補完・中央値補完

欠損値を、その列の観測済みデータの平均値または中央値で埋める方法です。

例題の計算

各列の観測値から平均・中央値を求めます。

変数 観測数 観測値 平均値 中央値
重量(g) 7 502, 498, 505, 501, 503, 499, 507 502.1 502
硬度(HB) 6 185, 190, 180, 188, 186, 192 186.8 187.0
引張強度(MPa) 6 440, 435, 428, 442, 438, 448 438.5 439.0

計算の確認

硬度の観測値:185 + 190 + 180 + 188 + 186 + 192 = 1121

\[
\bar{x}_{\text{硬度}} = \frac{1121}{6} = 186.8 \, \text{(HB)}
\]

中央値:昇順に並べると [180, 185, 186, 188, 190, 192]。6個なので中央2値の平均。

\[
\text{中央値} = \frac{186 + 188}{2} = 187.0 \, \text{(HB)}
\]

引張強度の観測値:440 + 435 + 428 + 442 + 438 + 448 = 2631

\[
\bar{x}_{\text{引張強度}} = \frac{2631}{6} = 438.5 \, \text{(MPa)}
\]

中央値:昇順に並べると [428, 435, 438, 440, 442, 448]。中央2値の平均。

\[
\text{中央値} = \frac{438 + 440}{2} = 439.0 \, \text{(MPa)}
\]

Excelでの実装

' 平均値補完(B列のデータがB2:B9の場合)
=IF(B2="", AVERAGE(B$2:B$9), B2)

' 中央値補完
=IF(B2="", MEDIAN(B$2:B$9), B2)

平均値 vs 中央値 — どちらを使うか

外れ値が含まれる場合は中央値補完を選びます。外れ値の影響を受けない中央値の方が、典型的な値に近い補完になります。外れ値がないと確認できている場合は平均値補完で問題ありません。

補完後はシャピロウイルク検定で正規性を確認してください。補完によって分布の形が変わることがあります。

前値補完(時系列データ)

時系列の計測データでは「直前の観測値で欠損を埋める」前値補完(forward fill)がよく使われます。ラインのセンサーデータや生産ログなど、時間方向に連続性があるデータに向いています。

前値補完のExcel実装

' C列が時系列データで、C3が欠損セルの場合
=IF(C3="", C2, C3)

これを下にコピーすると、欠損セルが直前の値で埋まります。

線形補間

前後の値がわかっている場合は、単純な線形補間も使えます。欠損が1点で、前後の測定値がそれぞれ a・b のとき、補間値は (a + b) / 2 です。

' 欠損セルがD5で、前後がD4=438とD6=442の場合
=(D4+D6)/2   → 440

製造ラインのような連続プロセスでは、前値補完より線形補間の方が実測値に近いケースが多くあります。

方法の選び方

悩んだときはこの表を起点にすると判断しやすくなります。

条件 推奨方法
欠損率 ≤ 5%、かつ MCAR リストワイズ除去(シンプルで偏りなし)
欠損率 5〜20%、外れ値なし 平均値補完
欠損率 5〜20%、外れ値あり 中央値補完
時系列データ(連続性あり) 前値補完 or 線形補間
欠損率 > 30%、または MNAR 専門的な多重補完法(Rやpythonを推奨)

補完後に確認すること

  • 補完後の標準偏差が補完前より小さくなっていないか(平均値補完はばらつきを人工的に縮小させる)
  • 補完値が変数の物理的な取りうる範囲内か(引張強度が負になるなど、明らかにおかしい値でないか)
  • 補完後のデータで標準化を行う場合は、補完値も含めて計算し直す

まとめ

  • 欠損値はMCAR・MAR・MNARの3種類。処理方針はここで変わる
  • リストワイズ除去はシンプルだが、欠損率が高いとデータを捨てすぎる
  • 平均値補完はExcelで手軽に実装できる。外れ値があるなら中央値補完を使う
  • 時系列データには前値補完か線形補間が向いている
  • 補完後は標準偏差が縮小していないか確認する

欠損値を埋めてから「あ、外れ値も含まれていた」と気づくと二度手間になります。外れ値の検出方法(Grubbs検定・IQR法)と組み合わせて、欠損処理の前後どちらでも確認する習慣をつけておくと後から慌てません。

タイトルとURLをコピーしました