'How does the convolution filter work in StatsModels seasonal.seasonal_decompose?
I am using seasonal.seasonal_decompose, for 1D array time series with length N.
I am searching for seasonality with time period 2l.
Now my question is how does convolution filter work in this code? Does it make a matrix with of 2l*(N/2l) dimension and then work with that network?
Which type of convolution filter does it use? CNN?
I want to know the story of the mathematics behind the convolution filter used in this code.
Solution 1:[1]
It uses scipy convolve filter. here is the seasonal_decompose source code extract:
def seasonal_decompose(x, model="additive", filt=None, period=None, two_sided=True,)
...
if filt is None:
if period % 2 == 0: # split weights at ends
filt = np.array([0.5] + [1] * (period - 1) + [0.5]) / period
else:
filt = np.repeat(1.0 / period, period)
nsides = int(two_sided) + 1
trend = convolution_filter(x, filt, nsides)
...
from scipy import signal
def convolution_filter(x, filt, nsides=2):
...
result = signal.convolve(x, filt, mode='valid')
...
return PandasWrapper.wrap(result)
where convolution filter is basically a wrapper of scipy.signal.convolve function. As I understood from scipy.signal.convolve source code it uses either direct convolve of fft convolve transform. To learn more about convolution, proceed to this wiki article
Short summary from wiki:
Convolution is defined as the integral of the product of the two functions after one is reversed and shifted
and here the second function (filt) is constant by default.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
