Again, my snoring detector:

When I look at the rhythm of snoring vs the rhythm of talking in terms of peaks/events (which would represent snores) per hour, there's not much difference -- they range from roughly 500 to 900 per hour. But it occurred to me that perhaps there's a significant difference in the regularity of the rhythm. In particular, I suspect that talking would have a more irregular rhythm than snoring, and I was wondering what might be some ways to characterize that difference.

Note that this is a bit different from tempo/beat detection in music in that there is no master clock, and individual "beats" are not "skipped" but elongated, so, eg, an autocorrelation would likely not reveal much.

The simplest approach would be to measure standard deviation of the event intervals, but I'm unsure to what extent that would discriminate between apneic breathing (snore, snore, snore, pause, snore) vs simply irregular intervals. And, as you know, my statistics background is weak.

Any other suggestions? (Take as a given that I have already discriminated the "events" and can produce a train of intervals, vs deriving rhythm from raw data.)


1 Answer 1


You have already found train of intervals between the events. What you are interested in is a respresentation of that in time. I would suggest, from my experience, to run a sliding window differential filter, with some low pass averaging filter at the output, that will give you the rate of changes in time. In this way you will get the rate of changes as they progress in time, which is most likely what you actually need. Yes, standard deviation may be done, but that is just one number, as you said, and that is not sufficient. One simpler method will be to use just a sliding average window that averages train of intervals and gives that as a result. With this, youy may, at the end, postprocess obtained result, by finding max. min. and average values, as the informative, yet simple measurements of the signal that has been analyzed. If needed, you may get more complex solutions, involving cyclostationary data analysis. In a nutshell, finding some statistics functions, (sorry it cannot be avoided if you decide to go this way): for example mean, variance, cyclic correlation function, cyclic power spectral density etc. This will lead to a rate detector, with various outputs that characterize the signal rate changes (and much much more). I hope that this helps.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.