What is the right algorithm to detect segmentations of a line chart? To be concrete, given 2D numerical data as is shown as line plots below. There are peaks on a background average movement (with small vibrations). We want to find the values of pairs (x1, x2) if those peaks drops down to average; or (x1) only if the line doesn't back to the average.



There are thousands of such 2D data.

What is the right statistic or machine learning algorithm to find x1 and x2 above without plotting?
Basically, it looks like you need to know some threshold to detect peaks:


detect bottom edge (Xbe)
calculate the moving average (until the last edge)
detect peak itself (current value - average value > threshold)
start of peak found: X1=Xbe
detect peak end (current value - average value &lt; threshold)
detect bottom age (Xbe)
end of peak found: X2=Xbe


Bottom edge detection in the simplest way is when you make moving subtract for two consecutive values and sign changes from negative to positive.