第512話|歯抜けの売上データを捨てたら年末商戦まで消えた
時系列の欠損は「位置」に意味がある

第512話|歯抜けの売上データを捨てたら年末商戦まで消えた時系列の欠損は「位置」に意味がある

売上、来店客数、設備の稼働ログ。

日々たまっていく時系列のデータには、必ずと言っていいほど「歯抜け」があります。

システムの連携エラー、機器の停止、担当者の入力忘れ。

この歯抜けを「どう扱うか」で、予測の当たり外れが大きく変わります。

今回は、ある製造・流通の会社で起きた「欠損を捨てたら、年末商戦まで消えた」という出来事を通して、時系列データの欠損だけが持つ性質を説明します。

出発点――予測が、毎年12月に外れる

年末の実績と予測の開きを見つめる担当者

 連携エラーで、2週間分が空いた

連続する2週間分の記録が空いた日次管理表

製造・流通業のB社では、店舗のPOSデータと設備のセンサーデータを使って、需要予測と稼働分析に取り組んでいました。

あるとき、システムの連携エラーで、複数店舗の日次売上が12月の2週間分、まるごと記録されていないことが分かりました。

過去数年分を見直すと、同じような歯抜けが、機器の停止やメンテナンスのたびに散らばっています。

 欠損のある期間を、まるごと除外した

欠損を含む週をまとめて除外する場面

担当者の判断は、慎重なものでした。

「歯抜けのある期間は信用できない。欠損を含む週は、まるごと学習データから外そう」

不確かなデータを使うより、確かなデータだけで予測モデルを作る。

筋の通った判断に見えます。

 年末の山を、モデルは知らなかった

年末の学習記録の欠落と予測の外れを確認する担当者

ところが、できあがった予測モデルは、毎年12月になると大きく外れました。

実績は年末に向けて跳ね上がるのに、予測はなだらかなまま。

理由は単純でした。

除外した2週間は、年末商戦の真っただ中でした。

歯抜けの期間を捨てたことで、「12月には売上が跳ね上がる」という一番大事なパターンが、学習データから消えていたのです。

モデルは、知らないものを予測できません。

理屈――時系列の欠損は「位置」に意味がある

記録の欠けた位置に注目する蛇腹の時系列用紙

 行を消すと、前後のつながりも消える

途中を取り除くと途切れる時系列のつながり

顧客一覧のような表では、欠損のある行を消しても、残りの行は独立しています。

100人のうち10人を除いても、残り90人のデータは無傷です。

時系列は違います。

1日1日が、前の日と次の日につながっています。

季節の山、右肩上がりのトレンド、週末の周期。どれも「並び」の中にしか存在しません。

途中を切り取ると、その並びが途切れます。

時系列の欠損は、「何個欠けたか」より「どこが欠けたか」が問題になる。

これが、表の欠損との最大の違いです。

 埋め方は「そのデータが本来どう動くか」で決める

階段状と滑らかな動きに合わせた補完のイメージ

消せないなら、埋めることになります。

埋め方は大きく2つです。

1つは、直前の値をそのまま引き伸ばす。在庫数や設定温度のように、「変わるまでは同じ」性質のデータに向きます。

もう1つは、前後の値をなだらかに結ぶ。売上や気温のように、連続的に動くデータに向きます。

どちらが正しいかは、手法ではなくデータの性質が決めます。

在庫数を前後で結べば、ありもしない中間の在庫が生まれます。

売上を直前の値で引き伸ばせば、平日の売上が週末まで続く不自然な線になります。

落とし穴――「後ろの値」は、未来の情報

未来の情報を過去の空欄へ持ち込むイメージ

 予測の検証で、成績が良く見えすぎる

先の答えを参照して良く見える検証結果

埋めるときに、1つだけ注意があります。

「前後の値をなだらかに結ぶ」は、穴の「後ろ」の値を使っています。

過去のデータを整えるだけなら問題ありません。

しかし予測モデルの検証では、話が変わります。

検証とは、「その時点で手に入る情報だけで、先を当てられたか」を確かめる作業です。

穴を未来の値で埋めてあると、モデルはこっそり未来を覗いた状態で検証されます。

成績は良く見えます。そして、実際に運用すると、その成績は出ません。

 B社ではこう直した

前年の形を参考に補完し補完期間の印を残す手元

B社では、歯抜けの期間を除外するのをやめ、データの性質に合わせて埋め直しました。

売上は前後をなだらかに結び、年末の2週間のような大きな穴は、前年の同じ時期の形を参考にしました。

センサーの稼働状態は、直前の値を引き伸ばしました。

あわせて、「この期間は埋めた値である」という印を1列残しました。

予測の検証では、その時点より後ろの値は使わない、というルールを徹底しました。

結果、学習データを減らさずに済み、12月の予測は実績の山を追えるようになりました。

今回のまとめ

時系列データの動きと欠損の扱いを確認する二人

時系列の欠損は、表の欠損とは性質が違います。

行を消すと、前後のつながり(たとえば、季節性やトレンド)まで消えます。

埋め方は、直前の値を引き伸ばすか、前後をなだらかに結ぶか。手法ではなく、データが本来どう動くかで決めます。

そして、後ろの値で埋めるのは未来を覗くことだと意識する。予測の検証では特に注意が要ります。

報告を受ける側が確認すべきは、2点です。

  • 「欠損のある期間は、消したのか埋めたのか」
  • 「予測の検証で、未来の情報を使っていないか」

この2つに答えられる報告なら、12月に外れる予測を事前に防げます。

よくある質問

Q. 時系列データの欠損は、なぜ削除してはいけないのですか?

時系列では、1日1日が前後とつながっているからです。

欠損のある期間を削除すると、その期間に含まれていた季節性やトレンドまで学習データから消えます。

年末商戦の期間を削除すれば、「12月に売上が跳ね上がる」というパターンをモデルは学べず、毎年その時期に予測が外れます。

Q. 時系列の欠損値は、どうやって埋めればよいですか?

データの性質で決めます。

在庫数や設定温度のように「変わるまでは同じ」データは、直前の値をそのまま引き伸ばします。

売上や気温のように連続的に動くデータは、前後の値をなだらかに結びます。

大きな穴は、前年の同じ時期のパターンを参考にします。どの方法でも、「埋めた期間」を示す印を1列残しておきます。

Q. 欠損値の補完で「未来の情報を使う」とは、どういうことですか?

穴の「後ろ」にある値を使って埋めることです。前後の値をなだらかに結ぶ方法は、これに当たります。

過去のデータを整えるだけなら問題ありませんが、予測モデルの検証では、その時点で知り得ない情報を使ったことになります。

検証の成績が実力より良く見え、実運用でその成績が出ない、という事態を招きます。

Q. 歯抜けの時系列データについて、分析報告で何を確認すればよいですか?

2点です。

  • 1つ目は、欠損のある期間を消したのか埋めたのか、埋めたならどんな方法か。
  • 2つ目は、予測の検証で、その時点より後ろの値を使っていないか。

この2つが報告に書かれていれば、季節性の欠落やリークによる過大評価を防げます。

Screenshot

【月1 特定テーマ講座(10月)】
Python で学ぶ 明日からできる「欠損値処理」超入門

【開催日時】 全2回(土)2026/10/17,10/31(13:30〜18:00)
【受講形式】 当日Zoom( or 復習用に後日動画視聴)
【参加費用】 2万2千円(税込み)/人