statsmodels.tsa.filters.filtertools.convolution_filter

statsmodels.tsa.filters.filtertools.convolution_filter(x, filt, nsides=2)[source]

通过卷积进行线性滤波。中心和向后偏移的加权移动平均。

Parameters:
xarray_like

数据数组,一维或二维,如果是二维则观测值在行中

filtarray_like

线性滤波器系数按逆时间顺序排列。应该与x具有相同的维度,尽管如果x是1维的并且x是2维的,将会被强制转换为2维。

nsidesint, optional

如果为2,则使用滤波器系数计算居中的移动平均值。如果为1,则滤波器系数仅用于过去的值。两种方法都使用scipy.signal.convolve。

Returns:
yndarray, 2d

过滤后的数组,列数由 x 和 filt 决定。如果输入的是 pandas 对象,则返回 pandas 对象。返回的索引与 x 中的时间周期完全相同

注释

在 nsides == 1 时,x 被过滤

y[n] = filt[0]*x[n-1] + ... + filt[n_filt-1]*x[n-n_filt]

其中 n_filt 是 len(filt)。

如果 nsides == 2,x 在滞后 0 附近进行滤波

y[n] = filt[0]*x[n - n_filt/2] + ... + filt[n_filt / 2] * x[n]
       + ... + x[n + n_filt/2]

其中 n_filt 是 len(filt)。如果 n_filt 是偶数,则滤波器中向前的时间部分多于向后。

如果 filt 是 1d 或 (nlags,1),则将一个滞后多项式应用于所有变量(x 的列)。如果 filt 是 2d,(nlags, nvars),则每个序列都独立地使用其自己的滞后多项式进行过滤,使用循环遍历 nvar。这与通常的 2d 与 2d 卷积不同。

过滤是通过scipy.signal.convolve完成的,因此对于中等大小的数据来说,它的速度是合理的。对于大数据,fft卷积会更快。


Last update: Oct 16, 2024