重取樣與彙總觀測值

在 R 中操作時間序列資料

Harrison Brown

Graduate Researcher in Geography

取樣頻率

頻率:

  • 每年觀測次數
  • 例如:每週、每日、每月…

時間解析度:

  • 「高解析度」= 取樣頻繁
  • 「低解析度」= 取樣稀疏
  • 「高」與「低」具主觀性

概念圖:兩個網格,一個為低解析度、一個為高解析度,說明資料取樣頻繁與稀疏的差異。

在 R 中操作時間序列資料

彙總(Aggregation)

  • 高解析度 -> 低解析度
  • 對所選區間套用 meansummax 等函式
  • 例如:
    • 以月為單位彙總每日資料的 sum
    • 以週為單位計算每小時數值的 mean
  • 無法「反向」彙總
  • 月總量 -> 每日值?
  • 提供描述資料型態的統計量
  • 彙總會減少資訊量
在 R 中操作時間序列資料

用 xts 進行資料彙總

xts

  • eXtensible Time Series(可延伸時間序列)
  • 擴充 zoo 套件與 zoo 類別物件
  • 提供 apply.*() 函式
yearly_mean <-
  apply.yearly(x = maunaloa,
               FUN = mean)
autoplot(yearly_mean) + 
  labs(...)

Mauna Loa 資料集經彙總為年度平均的圖。相較於原始資料每年內有強烈變化,這張圖因取樣解析度較低而呈現平滑的曲線。

在 R 中操作時間序列資料

用 xts 進行資料彙總

Mauna Loa 時間序列圖,為每週取樣的二氧化碳濃度。呈現整體上升趨勢,且每年有週期性的季節高峰。

Mauna Loa 資料集經彙總為年度平均的圖。相較於原始資料每年內有強烈變化,這張圖因取樣解析度較低而呈現平滑的曲線。

在 R 中操作時間序列資料

apply-dot 函式

daily_total <-
  apply.daily(hourly_sales,
              FUN = sum)
weekly_max <-
  apply.weekly(daily_temperature,
               FUN = max)
monthly_average <-
  apply.monthly(daily_price,
               FUN = mean)
apply.quarterly(sales_report,
                FUN = sum)
apply.yearly(monthly_salary,
             FUN = sum)
在 R 中操作時間序列資料

Endpoints 與 period.apply

xts::endpoints()

xts::period.apply()

biweekly_eps <-
  endpoints(x = daily_data,
            on = "weeks",
            k = 2)
biweekly_data <-
  period.apply(x = daily_data,
               INDEX = biweekly_eps,
               FUN = mean)
biweekly_data
2002-05-05 8.148611
2002-05-19 8.146776
2002-06-02 8.060020
2002-06-16 8.028224
2002-06-30 7.944792
2002-07-14 7.930159
...
在 R 中操作時間序列資料

一起來練習吧!

在 R 中操作時間序列資料

Preparing Video For Download...