当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。