# detecting outliers in weight measurement

I have weights data of users collected over a period of time. My goal is to find incorrect weight readings. The definition of incorrect readings is purely based on logical reasons (or in other words based on common sense). For example, if today a user's reading is 60kg and the next day, the reading is 70kg, obviously one of them is incorrect as an increase of 10kg is highly unlikely in a span of single day.

To decide which one to choose (out of 60kg or 70kg), I am using moving median i.e. I calculate the median over past 10 days and checking whether the current reading falls between +-3 standard deviations, If not consider it an incorrect reading.

The issue arises when a user has recorded same reading for past 10 days, but on eleventh day, even if it increases by 1kg, which is likely. The function considers the 11th day reading as an incorrect reading.

My question or where I need help is: are there ways to deal with scenarios highlighted above with the example, if so I would really appreciate if you can share some insights on them.

Another method you could try is the modified Z-score method: $$M_i = 0.6745(x_i - \tilde{x})/MAD$$ where $$MAD$$ is the median absolute value. If the value $$M_i$$ exceeds $$3.5$$ then you can classify the point as an outlier. As I understand it, this should be more suitable for smaller datasets. See: https://www.itl.nist.gov/div898/handbook/eda/section3/eda35h.htm for a reference.