tsa.filters.filtertools.convolution_filter()

statsmodels.tsa.filters.filtertools.convolution_filter

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

Linear filtering via convolution. Centered and backward displaced moving weighted average.

Parameters:

x : array_like

data array, 1d or 2d, if 2d then observations in rows

filt : array_like

Linear filter coefficients in reverse time-order. Should have the same number of dimensions as x though if 1d and x is 2d will be coerced to 2d.

nsides : int, optional

If 2, a centered moving average is computed using the filter coefficients. If 1, the filter coefficients are for past values only. Both methods use scipy.signal.convolve.

Returns:

y : ndarray, 2d

Filtered array, number of columns determined by x and filt. If a pandas object is given, a pandas object is returned. The index of the return is the exact same as the time period in x

Notes

In nsides == 1, x is filtered

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

where n_filt is len(filt).

If nsides == 2, x is filtered around lag 0

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

where n_filt is len(filt). If n_filt is even, then more of the filter is forward in time than backward.

If filt is 1d or (nlags,1) one lag polynomial is applied to all variables (columns of x). If filt is 2d, (nlags, nvars) each series is independently filtered with its own lag polynomial, uses loop over nvar. This is different than the usual 2d vs 2d convolution.

Filtering is done with scipy.signal.convolve, so it will be reasonably fast for medium sized data. For large data fft convolution would be faster.

© 2009–2012 Statsmodels Developers
© 2006–2008 Scipy Developers
© 2006 Jonathan E. Taylor
Licensed under the 3-clause BSD License.
http://www.statsmodels.org/stable/generated/statsmodels.tsa.filters.filtertools.convolution_filter.html

在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号

意见反馈
返回顶部