I have a large set of motion data I would like to extract peaks from. Data have been collected from gait experiments (motion tracking with markers attached to body parts) from n participants. For each participant the difference of anklemarker.right - anklemarker.left over time provides a sinus-like signal with peaks being steplength of that very participant. The signal quality is very different from participant to participant, i.e. some have few unrealistic (!) outliers and some have a major number of unrealistic outliers. examplary signal - markerposition difference over time.

Since every participant has an individual mean steplength (peak height), I would like to create an automatic outlier detection function that takes in some characteristic input that represents that very individual steplength and outputs the realistic peaks.

What I've tried so far in Matlab and corresponding difficulties:

findpeaks(signal,'MinPeakDistance',, 'MinPeakHeight', )

  • mpd and mph: How to find or set a value that applies to all participants?

  • I tried median as a general and representative entity on few participants but got differently good results


  • although the median, in literature, is claimed to be robust in respect to outliers, in case of some data sets with a bigger amount of outliers than amount of realistic values, the median seems to be affected by this majority of unrealistic outliers. So the median and also the IQR can't, in my opinion right now, be applied as a good classificator of outliers. Please prove me wrong and elaborate on your suggestions, if possible, since I'm not a statistician.

What is a good way to go about outlier detection in this particular class of problem with differently good data and individual characteristics?

Thanks in advance!

  • 1
    $\begingroup$ By "sinus-like signal" do you mean sinusoidal? $\endgroup$ Dec 14 '16 at 20:54
  • $\begingroup$ Actually the signal is abs(sinusoidal_signal) $\endgroup$ Dec 14 '16 at 20:59
  • $\begingroup$ What does "sinus-like" mean? Do you mean sinusoildal? $\endgroup$ Dec 14 '16 at 23:24
  • $\begingroup$ Yes, i mean sinusoidal. But the signal is the absolute value of this sinusoidal signal $\endgroup$ Dec 14 '16 at 23:26

I would suggest using basic statistics. Look at box plots. If a value falls outside of the IQR, then remove it as an outlier. There is also a new algorithm available through scikit-learn called isolation forest, which is variation of random forest. However, it will identify values that can be classified as outliers in an unsupervised fashion. You problem seems fairly straight forward, although, and I would highly suggest trying to use the IQR.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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