當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R filter 時間序列的線性過濾


R語言 filter 位於 stats 包(package)。

說明

將線性過濾應用於單變量時間序列或多變量時間序列的每個序列。

用法

filter(x, filter, method = c("convolution", "recursive"),
       sides = 2, circular = FALSE, init)

參數

x

單變量或多變量時間序列。

filter

逆時間順序的濾波器係數向量(對於 AR 或 MA 係數)。

method

"convolution""recursive"(並且可以縮寫)。如果"convolution" 使用移動平均線:如果"recursive" 使用自回歸。

sides

僅適用於卷積濾波器。如果sides = 1,濾波器係數僅適用於過去的值;如果sides = 2,它們以滯後 0 為中心。在這種情況下,濾波器的長度應該是奇數,但如果是偶數,則濾波器在時間上向前的部分多於向後的部分。

circular

僅適用於卷積濾波器。如果 TRUE ,則將過濾器包在係列的末尾,否則假設外部值丟失 ( NA )。

init

僅適用於遞歸過濾器。以相反的時間順序指定起始值之前的時間序列的初始值。默認值是一組零。

細節

x 中允許缺失值,但 filter 中不允許(它們會導致輸出中到處都缺失值)。

請注意,遞歸濾波器中滯後 0 處有一個隱含係數 1,這給出了

不檢查遞歸濾波器是否可逆:如果不可逆,輸出可能會發散。

卷積濾波器為

其中o 是偏移量:請參閱sides 了解如何確定它。

時間序列對象。

注意

convolve(, type = "filter") 使用 FFT 進行計算,因此對於單變量序列上的長濾波器可能會更快,但它不返回時間序列(因此時間對齊不清楚),也不處理缺失值。例如,filter 對於長度為 100 的過濾器在長度為 1000 的序列上速度更快。

例子

x <- 1:100
filter(x, rep(1, 3))
filter(x, rep(1, 3), sides = 1)
filter(x, rep(1, 3), sides = 1, circular = TRUE)

filter(presidents, rep(1, 3))

也可以看看

convolve , arima.sim

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Linear Filtering on a Time Series。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。