# Simple algorithm to detect change point in time series

Apologies if this question has already been asked, but a lot of similar questions are regarding R or complex algorithms that I don't want.

I have numerous 2-dimensional time series, eacch plotting the average success percentage of a task. Occasionally, some certain task which previously worked at a high rate (eg. 60-90%) starts to fail often (due to some unforeseen event), so the average success rate drops significantly (eg. 0-30%).

I want a simple algorithm for a program to detect and notify me if this drop/change point occurs. I don't need to locate when, I just need an alert to see which one of these plots detected a change point (aka the task is starting to fail).

I've seen a lot on CUSUM or other methods that require preset thresholds, but I can't preset a specific threshold, since some of these plots (or task) start at a higher percentage, and starts to fail more than other plots.

What are some simple algorithms to detect a change-point/drop in a time series? Or what are some ways to detect a significant change in the average success rate (mean) plotted by time?

• are the averages for series known in advance? – Aksakal May 21 at 0:50
• every time the task is performed (success or failure), the average of overall success rate would be updated. – brianmchoi11 May 21 at 1:00
• if you have mean shifts, then unconditional means do not make much sense. but you answered my question – Aksakal May 21 at 1:03

This is very fast, easy to understand, and does not model when the change point occurred. However, it only works well if the system is non-noisy, i.e., it should be easy to discriminate true change from business-as-usual. If not, you'd be better off going for a probabilistic approach using a changepoint package that can detect intercept changes in time series (mcp, EnvCpt, or others)
• when $k/2=n$ you should detect a dip. you need to play with settings though. – Aksakal May 21 at 1:04