Let be $\mu_k$ some univariate signals of time $t$.
I am performing burst detection to detect oscillations in any signal $\mu_k$. I tested the following methods :
Perform noise reduction on $\mu_k$ using a filter $F$ and compute the residuals $r_k = \mu_k - F\circ\mu_k$. Then perform burst detection on all $r_k$.
Perform noise reduction on $\mu_k$ using a filter $F$. Then perform burst detection on all $F\circ\mu_k$.
Perform burst detection on all $\mu_k$.
Where $F$ is a simple moving average.
It appears that for a representative sample of the ($\mu_k$), the best method to detect oscillations is the No. 1. I do think that using the residuals enables to work on a stationary signal/time series, and avoid detecting normal signal variation as a burst.
To perform burst detection, I am using Python and the latest version of the library neurodsp
.
Now, I would like to optimize the method No. 1. In my opinion, the better are the residuals and the better is the detection. Here, the residuals should be stationary, have a zero-mean. To enable this, I think that $F\circ\mu_k$ should keep the trend of $\mu_k$ and not interpolate the oscillations or any noise.
I would consider using a better filter than a simple moving average. I did some research and I found out the Savitsky Golay Filter.
Now my questions are :
- Do you think I am on a good enough direction ? If not, whare your suggestion ?
- How would you compute a good model of $\mu_k$ ?
I would add that I am not an expert in signal processing. But, what I've read in the field of oscillations detection let me think that using burst detection can be a good start.