Saya telah memprogram ini dari awal beberapa tahun yang lalu, dan saya memiliki file Matlab untuk melakukan regresi linear sepotong-bijaksana di komputer saya. Sekitar 1 hingga 4 breakpoint secara komputasi dimungkinkan untuk sekitar 20 titik pengukuran. 5 atau 7 break point mulai terlalu banyak.
Pendekatan matematika murni seperti yang saya lihat adalah mencoba semua kombinasi yang mungkin seperti yang disarankan oleh pengguna mbq dalam pertanyaan yang ditautkan dalam komentar di bawah pertanyaan Anda.
Karena garis yang dipasang semua berurutan dan berdekatan (tidak ada tumpang tindih), kombinatorik akan mengikuti segitiga Pascals. Jika ada tumpang tindih antara titik data yang digunakan oleh segmen garis saya percaya bahwa kombinatorik akan mengikuti angka Stirling dari jenis kedua sebagai gantinya.
Solusi terbaik dalam pikiran saya adalah memilih kombinasi garis pas yang memiliki standar deviasi terendah dari nilai korelasi R ^ 2 dari garis pas. Saya akan mencoba menjelaskan dengan sebuah contoh. Perlu diingat bahwa menanyakan berapa banyak break point yang harus ditemukan dalam data, sama dengan mengajukan pertanyaan "Berapa lama pantai Inggris?" seperti di salah satu makalah Benoit Mandelbrots (ahli matematika) tentang fraktal. Dan ada trade-off antara jumlah break point dan kedalaman regresi.
Sekarang untuk contoh.
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