L'ho programmato da zero una volta qualche anno fa e ho un file Matlab per eseguire una regressione lineare a livello di pezzo sul mio computer. Circa 1 - 4 punti di interruzione sono computazionalmente possibili per circa 20 punti di misura o giù di lì. 5 o 7 punti di interruzione iniziano ad essere davvero troppo.
Il puro approccio matematico secondo me è quello di provare tutte le possibili combinazioni come suggerito dall'utente mbq nella domanda collegata al commento sotto la tua domanda.
Poiché le linee adattate sono tutte consecutive e adiacenti (senza sovrapposizioni), la combinatoria seguirà il triangolo di Pascal. Se ci fossero sovrapposizioni tra i punti dati utilizzati dai segmenti di linea, credo che la combinatoria seguirà invece numeri di Stirling del secondo tipo.
La migliore soluzione nella mia mente è quella di scegliere la combinazione di linee adattate che ha la deviazione standard più bassa dei valori di correlazione R ^ 2 delle linee adattate. Proverò a spiegare con un esempio. Tieni presente però che chiedere quanti punti di rottura si dovrebbero trovare nei dati, è simile alla domanda "Quanto dura la costa della Gran Bretagna?" come in uno dei documenti di Benoit Mandelbrots (un matematico) sui frattali. E c'è un compromesso tra il numero di punti di interruzione e la profondità di regressione.
Ora all'esempio.
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