時系列データの線形フィルタ
Filter が vector から要素を取り出す関数なら filter は何だろう?と思ったので調べてみた。
> ?filter Linear Filtering on a Time Series Description: Applies linear filtering to a univariate time series or to each series separately of a multivariate time series. Usage: filter(x, filter, method = c("convolution", "recursive"), sides = 2, circular = FALSE, init) ...
時系列データの線形フィルタを実行するらしい。
recursive と convolution でそれぞれ以下の式が実行された結果が返ってくる。
- recursive
- y[i] = x[i] + f[1]*y[i-1] + ... + f[p]*y[i-p]
- convolution
- sides=1: y[i] = f[1]*x[i] + ... + f[p]*x[i-(p-1)]
- sides=2: y[i] = f[1]*x[i] + f[2]*x[i+1] + ... + f[p]*x[i-1^(p/2)p/2]
あまり使うこともなさそうだけど、おもしろそう。
convolution の sides1 はマルコフ性で sides2 は対象点の前後から集めてきてる感じ。
ついでに、recursive を使うとフィボナッチ数列ができるな。
> filter(c(0,1,rep(0,10)), c(1,1), "re") Time Series: Start = 1 End = 12 Frequency = 1 [1] 0 1 1 2 3 5 8 13 21 34 55 89