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?
 A: 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


*

*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

*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.

*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

Quadratic 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!
