第286話|知っておいて損のない時系列データの欠測値補完方法

第286話|知っておいて損のない時系列データの欠測値補完方法

ビジネスの現場で登場するデータの多くは時系列データですが、通常のテーブルデータと同様に欠測値外れ値なども、当然ながら発生します。

時系列データの一部に欠測値(データがない)がある場合、どうすればいいでしょうか。

テーブルデータの場合、例えば次のような3つの方略があります。

  • 欠測値のあるレコードを削除する
  • 欠測値のある変数を削除する
  • 欠測値を別の値で補完する

時系列データの場合、若干不安定でも「欠測値を別の値で補完する」という欠測値補完の方略を取るケースが多いです。

いくつか方法があります。例えば、以下です。

  • LOCF法
  • 平均値代入法
  • 中央値代入法
  • 最近傍補間法
  • 線形補間法
  • 多項式補間法
  • スプライン補間法
  • 移動平均補間法
  • カルマン平滑化補間法

……などなど。

今回は、「知っておいて損のない時系列データの欠測値補完方法」というお話しをします。

欠測値に対する3つの方略

テーブルデータの場合、例えば次のような3つの方略があります。

  • 欠測値のあるレコードを削除する
  • 欠測値のある変数を削除する
  • 欠測値を別の値で補完する

あるレコードに対し、欠測値が多い場合、そのレコードそのものを削る方略が「欠測値のあるレコードを削除する」という方略です。

時系列データの場合、当然ですが時系列性が重要になるので、レコードを積極的に削り時系列性を破壊するこの方略は取り難いです。

ある変数の欠測値が多い場合、その変数そのものを削る方略が「欠測値のある変数を削除する」という方略です。

時系列データの場合、目的変数yに欠測値が多い場合、データ分析そのものを諦めるか、ある程度の期間の時系列データが貯まるのを待ちます。

ある説明変数Xに欠測値が多い場合には、テーブルデータと同様の方略を取ることでしょう。要は、その変数を削るということです。ただ、非常に重要な変数であれば、ある程度の期間の時系列データが貯まるのを待ちます。

そもそも、欠測値が多い時系列データは、ある程度の期間の時系列データが貯まるのを待った方がいいでしょう。

一番多いのが、ある1時点だけ欠測しているとか、ある期間だけ欠測しているとか、そういうパターンです。

そのようなときは、若干不安定でも「欠測値を別の値で補完する」という欠測値補完の方略を取る方がいいでしょう。

その方法はいくつかあります。

冒頭に紹介した例えば、以下の方法です。

  • LOCF法
  • 平均値代入法
  • 中央値代入法
  • 最近傍補間法
  • 線形補間法
  • 多項式補間法
  • スプライン補間法
  • 移動平均補間法
  • カルマン平滑化補間法

……などなど。

他にもありますが、今回はそれぞれについて、簡単に説明します。

 利用データ

今回利用する時系列データのデータセットは、Airline Passengers(飛行機乗客数)です。Box and Jenkins (1976) の有名な時系列データです。サンプルデータとして、よく利用されます。

1955年5月から10月まで(背景が薄い青色の部分)を欠測させます。

欠測させると、以下のようになります。

欠測した1955年5月から10月まで(背景が薄い青色の部分)欠測値補完してみます。

 LOCF法

LOCF(Last Observation Carried Forward)法とは、欠測している状態より前のデータの中から、最後に観測された値(例では、1955年4月の値)を使って欠測値補完されます。

 平均値代入法

平均値代入法とは、平均値を計算し、その平均値で欠測値補完します。

 中央値代入法

中央値代入法とは、中央値を計算し、その中央値で欠測値補完します。

 最近傍補間法

最近傍補間法とは、最も近い欠測していないデータの値で、欠測値補完します。

 線形補間法

線形補間法とは、欠測している期間の前と後を、直線(1次関数)で結び欠測値補完します。

 多項式補間法

直線(1次関数)を使い欠測値補完をするのが、線形補間法です。

それを拡張し、多項式(2次以上の関数)を使い欠測値補完をするのが、多項式補間法です。

 スプライン補間法

1次間数や2次関数などではなく、スプライン関数を使い欠測値補完をするのが、スプライン補間法です。

 移動平均補間法

移動平均補間法とは、移動平均値を計算し、その平均値で欠測値補完します。

 カルマン平滑化補間法

カルマン平滑化補間法とは、状態空間モデルなど構築し欠測値補完します。

カルマン平滑化補間法が一番数理的に複雑ですが、今回の例の場合、一番良さそうです。

今回のまとめ

今回は、「知っておいて損のない時系列データの欠測値補完方法」というお話しをしました。

ビジネスの現場で登場するデータの多くは時系列データですが、通常のテーブルデータと同様に欠測値外れ値なども、当然ながら発生します。

時系列データの一部に欠測値(データがない)がある場合、どうすればいいでしょうか。

テーブルデータの場合、例えば次のような3つの方略があります。

  • 欠測値のあるレコードを削除する
  • 欠測値のある変数を削除する
  • 欠測値を別の値で補完する

時系列データの場合、若干不安定でも「欠測値を別の値で補完する」という欠測値補完の方略を取るケースが多いです。

いくつか方法があります。例えば、以下です。

  • LOCF法
  • 平均値代入法
  • 中央値代入法
  • 最近傍補間法
  • 線形補間法
  • 多項式補間法
  • スプライン補間法
  • 移動平均補間法
  • カルマン平滑化補間法

……などなど。

具体的にどうすればいいのか。

PythonR時系列データの欠測値補完方法については、別途説明します。Excelでも、欠測値補完方法のロジックさえ分かれば、欠測値補完は可能です。