Detecting changes in slope with an <i>L</i><sub>0</sub> penalty

<p>Whilst there are many approaches to detecting changes in mean for a univariate time-series, the problem of detecting multiple changes in slope has comparatively been ignored. Part of the reason for this is that detecting changes in slope is much more challenging: simple binary segmentation procedures do not work for this problem, whilst existing dynamic programming methods that work for the change in mean problem cannot be used for detecting changes in slope. We present a novel dynamic programming approach, CPOP, for finding the “best” continuous piecewise-linear fit to data under a criterion that measures fit to data using the residual sum of squares, but penalises complexity based on an <i>L</i><sub>0</sub> penalty on changes in slope. We prove that detecting changes in this manner can lead to consistent estimation of the number of changepoints, and show empirically that using an <i>L</i><sub>0</sub> penalty is more reliable at estimating changepoint locations than using an <i>L</i><sub>1</sub> penalty. Empirically CPOP has good computational properties, and can analyse a time-series with 10,000 observations and 100 changes in a few minutes. Our method is used to analyse data on the motion of bacteria, and provides better and more parsimonious fits than two competing approaches.</p>