change points/break points in nonlinear regression

I have a problem in which I am trying to estimate change/break points where the data has a linear portion (or semi-linear at least)and a nonlinear (actually an exponential) portion. Does anyone know how to do this? To make matters worse, the dataset has only 7 datapoints. However, when you view it, there is an obvious single breakpoint. Ideas?

• Can you paste an example of possible dataset? – xAF Mar 18 '16 at 10:18
• 0 1.00 86648.03 18 1.75 101912.00 24 2.00 114349.81 42 2.75 143267.10 48 3.00 147048.69 66 3.75 400687.43 72 4.00 524333.43 – Tarynn M Witten Mar 18 '16 at 10:25
• Ignore the second column in the dataset just use columns 1 and 3 – Tarynn M Witten Mar 18 '16 at 10:26
• Ok, I have an idea, I'll try and let you know if it works – xAF Mar 18 '16 at 10:27
• Sounds fantastic. – Tarynn M Witten Mar 18 '16 at 10:33

I imagined a way to solve your problem and did a small research on it, which I'm sharing below. I don't think that it actually directly achieves what you're aiming at, but I hope you'll find it useful.

Your time series was normalized to simplify fitting procedures.

Exponential non-linearity window detection in time series

1. To detect a part of time series which exhibits exponential behavior, we break it in small regions, defined by sizes:

$SizeWindows = [s_1;s_2]$, where $2<s_1<s_2<N-s_1+1$, and $N$ is the size of time series

2. To each small region we fit an exponential ($y = A e^{-Bx} + C$) and linear curve, calculating the Root-Mean-Square error for both of them.

3. By comparing RMSE values, we determine if a region of specific size at specific data starting point exhibits exponential non-linear behavior. (In other words, we determine if the least-square fit was better for exponential curve).

Interpolation

Since there are only 7 points in the given time series, only window sizes $[3;6]$ are allowed.

Since fitting of 3-point region with an exponent is problematic, we interpolate the given time series as a semi-linear, quadratic or cubic function.

As a result we are able to use more points for fitting purposes

Results

Linear interpolation

Cubic interpolation

Interpretation

Following from the results, my impression is that 7 data points are not enough to detect with confidence a window which exhibits exponential behavior, because the result depends a lot on the interpolation/resampling method and there are simply not enough data points if we avoid interpolation.

This looks pretty obvious now, but it did not initially. :)

In this context promising for your actual aim looks to me the next approach.

Examine as many of data samples as possible and look for a way to detect 'breakpoints' as peaks based on values of mean and standard deviation, like in this answer.

All code available here in python. Feel free to try or modify it yourself!