欠損値の補完

Rで学ぶ時系列データ操作

Harrison Brown

Graduate Researcher in Geography

規則的・不規則な時系列

規則的な時系列:

  • 欠損やNAがない
  • 間隔が等間隔

現実の課題:

  • センサー・機器の故障
  • 天候要因
  • ほか

集約:

  • 時間解像度を下げて再サンプリング
  • 情報量が減る
  • 例: 日次の月次合計

補完:

  • 欠損値を埋める
  • 値の決め方に複数の手法
Rで学ぶ時系列データ操作

補完

マウナロアデータの一部のグラフ。データ点の欠損により、線に穴(ギャップ)が生じている。これらはNAを示す。

前のマウナロアのプロットを拡大。折れ線のギャップがより明確。

Rで学ぶ時系列データ操作

zooでの補完

zooのna系関数:

  • zoo::na.fill()

  • zoo::na.locf()

  • zoo::na.approx()

Rで学ぶ時系列データ操作

欠損の把握

observations
2017-01-01 NA
2017-01-02  2
2017-01-03  2
2017-01-04  2
2017-01-05  4
2017-01-06  2
2017-01-07 NA
2017-01-08  1
2017-01-09  2
2017-01-10  2
...
sum(is.na(observations))
[1] 23
Rで学ぶ時系列データ操作

na.fill

observations
2017-01-01 NA
2017-01-02  2
2017-01-03  2
2017-01-04  2
2017-01-05  4
...
table(observations, useNA = 'ifany')
   1    2    3    4    5    6 <NA> 
  43   29   17   13    1    2   23

架空の時系列グラフ。y軸は各日の「observations」の数。欠損(NA)により観測の間に隙間がある。

Rで学ぶ時系列データ操作

na.fill

observations_fill <-
  na.fill(object = observations,
          fill = 0)

table(observations_fill)
 0  1  2  3  4  5  6 
23 43 29 17 13  1  2
autoplot(observations_fill)

先ほどの「Daily observations」グラフの欠損を定数0で埋めた版。定数補完でNAが0に置換されている。

Rで学ぶ時系列データ操作

na.locf

autoplot(scores)
Warning message:
Removed 12 row(s) containing
missing values (geom_path).

架空の「Monthly Test Scores」の時系列。折れ線が途中で途切れており、その先はNAで欠損している。2005〜2008の得点で、2007以降が欠損。全体に上昇傾向。

scores_locf <- na.locf(scores)
autoplot(scores_locf)

「Monthly Test Scores」をLOCF(Last Observation Carried Forward)で補完した版。2007以降は直前の非NA値で置換。

Rで学ぶ時系列データ操作

線形補間

na.approx()

線形補間の概念図(アニメーション1枚目)。x軸・y軸のある線図で、左側と右側の値の間にNAの大きな欠落区間がある。

Rで学ぶ時系列データ操作

線形補間

na.approx()

線形補間の概念図(2枚目)。欠落区間が赤の点線で橋渡しされ、両端の最も近い非NA値を直線で結ぶことを示す。

Rで学ぶ時系列データ操作

線形補間

na.approx()

線形補間の概念図(3枚目)。赤の点線が黒の実線に置換され、欠損が線形補間で埋められたことを示す。

Rで学ぶ時系列データ操作

na.approx

maunaloa_approx <-
  na.approx(maunaloa_missing)

autoplot(maunaloa_approx) +
  labs(
    x = "Index",
    y = "CO2 Concentration",
    title = "Approximated Data Points"
  )

マウナロア時系列のプロット。NAを線形補間で埋めた結果、元の欠損箇所がほぼ判別できない。線形補間の精度を示す。

Rで学ぶ時系列データ操作

Passons à la pratique !

Rで学ぶ時系列データ操作

Preparing Video For Download...