補值遺漏值

在 R 中操作時間序列資料

Harrison Brown

Graduate Researcher in Geography

規則與不規則時間序列

規則時間序列:

  • 無遺漏或 NA
  • 間隔等距

真實世界問題:

  • 感測器或設備故障
  • 天候影響

彙總:

  • 重新取樣為較低時間解析度
  • 資訊減少
  • 例如將每日值加總為每月值

補值:

  • 填補遺漏值
  • 估值方法多樣
在 R 中操作時間序列資料

補值

Mauna Loa 資料集部分區段的圖。此版本的圖因資料中有遺漏點而在曲線上出現「洞」或間隙,這些洞代表資料中的 NA 值。

上一張 Mauna Loa 圖的放大版。折線中的間隙更清楚可見。

在 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」的填補版本——使用常數填補法將 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)

使用 LOCF(最後觀測值往前帶)填補後的「Monthly Test Scores」圖。2007 年之後的序列值以最近的非 NA 值替代。

在 R 中操作時間序列資料

線性內插

na.approx()

「線性內插」概念流程的動畫第 1 幅。圖示概念性座標軸與折線,左右兩組值之間有一大段缺口,表示該段資料為 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"
  )

Mauna Loa 時間序列圖,遺漏的 NA 值已用線性內插「填補」。幾乎無法看出原本缺失的位置,顯示此補值方法的精準度。

在 R 中操作時間序列資料

一起來練習吧!

在 R 中操作時間序列資料

Preparing Video For Download...