Mabe I'm missing part of your challenge.
How many samples will you throw before deciding it's a real change?
If you look at the filter I added you can set the # of samples to skip as well as the % above and % below to determine what level of input is out of range.

I would prob work on the spurious signal issue. good data acquisition is critical if the program is to be robust. That routine I added is really for a failed sensor check, rather than a continuous filter.