將函式套用到移動視窗

在 R 中操作時間序列資料

Harrison Brown

Graduate Researcher in Geography

zoo 的移動函式

zoo::roll*

  • rollmean()
  • rollmax()
  • rollsum()
  • ...

限制:

  • 沒有 rollmin()
  • 只提供部分函式
在 R 中操作時間序列資料

rollapply

rollapply(data = ftse,
          width = 7,
          FUN = min,
          align = 'right',
          fill = NA)

引數:

  • data:時間序列物件
  • width:視窗寬度(k
  • FUN:摘要函式(meanmax、...)
  • align:視窗對齊('left''right''center'
  • fill:視窗外要填入的值
在 R 中操作時間序列資料

將函式套用到移動視窗

目標:

  • 找出 30 天視窗內的數值範圍
  • 近似資料的「變動幅度」
daily_temp
2019-01-01 13.191304
2019-01-02  6.945833
2019-01-03  8.495833
2019-01-04  8.683333
2019-01-05  7.400000
...
find_range <- function(x){
  max(x) - min(x)
}
daily_temp_range <- 
  rollapply(
      daily_temp,
    FUN = find_range,
    width = 30,
    align = 'right',
    fill = NA
  )
在 R 中操作時間序列資料

將函式套用到移動視窗

autoplot(daily_temp_range) + 
  theme_light() + 
  labs(y = 'Temperature Range')

「每日溫度範圍」時間序列圖。此圖顯示範圍如何隨時間變化;範圍以 30 天移動視窗計算,並在圖中呈現最小值與最大值的差。

在 R 中操作時間序列資料

一起來練習吧!

在 R 中操作時間序列資料

Preparing Video For Download...