Time for action – filtering a detrended signal
We learned in the previous Time for action section how to detrend a signal. This detrended signal could have a cyclical component. Let's try to visualize this. Some of the steps are a repetition of steps in the previous Time for action section, such as downloading the data and setting up matplotlib
objects. These steps are omitted here.
Apply the Fourier transform, giving us the frequency spectrum:
amps = np.abs(fftpack.fftshift(fftpack.rfft(y)))
Filter out the noise. Let's say, if the magnitude of a frequency component is below
10
percent of the strongest component, throw it out:amps[amps < 0.1 * amps.max()] = 0
Transform the filtered signal back to the original domain and plot it together with the detrended signal:
plt.plot(dates, y, 'o', label="detrended") plt.plot(dates, -fftpack.irfft(fftpack.ifftshift(amps)), label="filtered")
Format the x-axis labels as dates and add a legend with extra large size:
fig.autofmt_xdate() plt.legend(prop={'size...