Ich habe dies vor ein paar Jahren einmal von Grund auf neu programmiert und ich habe eine Matlab-Datei für die stückweise lineare Regression auf meinem Computer. Etwa 1 bis 4 Haltepunkte sind rechnerisch für etwa 20 Messpunkte möglich. 5 oder 7 Haltepunkte fangen an, wirklich zu viel zu sein.
Der rein mathematische Ansatz besteht meines Erachtens darin, alle möglichen Kombinationen auszuprobieren, die der Benutzer mbq in der Frage vorgeschlagen hat, auf die im Kommentar unter Ihrer Frage verwiesen wird.
Da die angepassten Linien alle aufeinanderfolgend und benachbart sind (keine Überlappungen), folgt die Kombinatorik dem Pascalschen Dreieck. Wenn es Überlappungen zwischen verwendeten Datenpunkten durch die Liniensegmente gäbe, würde die Kombinatorik meines Erachtens stattdessen Stirling-Zahlen der zweiten Art folgen.
Die beste Lösung ist meines Erachtens, die Kombination der angepassten Linien zu wählen, die die niedrigste Standardabweichung der R ^ 2-Korrelationswerte der angepassten Linien aufweist. Ich werde versuchen, mit einem Beispiel zu erklären. Beachten Sie jedoch, dass die Frage, wie viele Unterbrechungspunkte in den Daten enthalten sein sollen, der Frage nach der Länge der britischen Küste ähnelt. wie in einem Artikel von Benoit Mandelbrots (einem Mathematiker) über Fraktale. Und es gibt einen Kompromiss zwischen der Anzahl der Haltepunkte und der Regressionstiefe.
Nun zum Beispiel.
Angenommen, wir haben die perfekten Daten als Funktion von x ( x und y sind ganze Zahlen):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