Lo programé desde cero una vez hace unos años, y tengo un archivo Matlab para hacer una regresión lineal por partes en mi computadora. Alrededor de 1 a 4 puntos de interrupción son computacionalmente posibles para aproximadamente 20 puntos de medición más o menos. 5 o 7 puntos de quiebre comienzan a ser realmente demasiado.
El enfoque matemático puro, como lo veo, es probar todas las combinaciones posibles sugeridas por el usuario mbq en la pregunta vinculada en el comentario debajo de su pregunta.
Como las líneas ajustadas son todas consecutivas y adyacentes (sin superposiciones), la combinatoria seguirá el triángulo de Pascal. Si hubiera superposiciones entre los puntos de datos usados por los segmentos de línea, creo que la combinatoria seguiría los números de Stirling del segundo tipo.
La mejor solución en mi mente es elegir la combinación de líneas ajustadas que tenga la desviación estándar más baja de los valores de correlación R ^ 2 de las líneas ajustadas. Trataré de explicar con un ejemplo. Sin embargo, tenga en cuenta que preguntar cuántos puntos de ruptura se deben encontrar en los datos es similar a hacer la pregunta "¿Cuánto dura la costa de Gran Bretaña?" como en uno de los documentos de Benoit Mandelbrots (matemático) sobre fractales. Y existe una compensación entre el número de puntos de ruptura y la profundidad de regresión.
Ahora al ejemplo.
yxxy
x12345678910111213141516171819202122232425262728y123456789109876543212345678910R2line11,0001,0001,0001,0001,0001,0001,0001,0001,0001,0000,97090,89510,77340,61340,43210,25580,11390,027200,00940,02220,02780,02390,01360,00320,00040,01180,04R2line20,04000,01180,00040,00310,01350,02380,02770,02220,0093−1,9780,02710,11390,25580,43210,61340,77330,89510,97081,0001,0001,0001,0001,0001,0001,0001,0001,0001,000sumofR2values1,04001,01181,00041,00311,01351,02381,02771,02221,00931,0000,99801,00901,02921,04551,04551,02911,00900,99801,0001,00941,02221,02781,02391,01361,00321,00041,01181,04standarddeviationofR20,67880,69870,70670,70480,69740,69020,68740,69130,70040,70710,66730,55230,36590,12810,12820,36590,55230,66720,70710,70040,69140,68740,69020,69740,70480,70680,69870,6788
These y values have the graph:
Which clearly has two break points. For the sake of argument we will calculate the R^2 correlation values (with the Excel cell formulas (European dot-comma style)):
=INDEX(LINEST(B1:$B$1;A1:$A$1;TRUE;TRUE);3;1)
=INDEX(LINEST(B1:$B$28;A1:$A$28;TRUE;TRUE);3;1)
for all possible non-overlapping combinations of two fitted lines. All the possible pairs of R^2 values have the graph:
The question is which pair of R^2 values should we choose, and how do we generalize to multiple break points as asked in the title? One choice is to pick the combination for which the sum of the R-square correlation is the highest. Plotting this we get the upper blue curve below:
The blue curve, the sum of the R-squared values, is the highest in the middle. This is more clearly visible from the table with the value 1,0455 as the highest value.
However it is my opinion that the minimum of the red curve is more accurate. That is, the minimum of the standard deviation of the R^2 values of the fitted regression lines should be the best choice.
Piece wise linear regression - Matlab - multiple break points