Tôi đã lập trình điều này từ đầu một vài năm trước đây và tôi có một tệp Matlab để thực hiện hồi quy tuyến tính mảnh khôn ngoan trên máy tính của mình. Khoảng 1 đến 4 điểm dừng là có thể tính toán cho khoảng 20 điểm đo hoặc hơn. 5 hoặc 7 điểm phá vỡ bắt đầu thực sự quá nhiều.
Cách tiếp cận toán học thuần túy như tôi thấy là thử tất cả các kết hợp có thể theo đề xuất của người dùng mbq trong câu hỏi được liên kết trong nhận xét bên dưới câu hỏi của bạn.
Vì các đường được trang bị đều liên tiếp và liền kề (không trùng lặp), tổ hợp sẽ theo tam giác Pascals. Nếu có sự chồng chéo giữa các điểm dữ liệu được sử dụng bởi các phân đoạn dòng, tôi tin rằng tổ hợp sẽ theo số Stirling của loại thứ hai thay thế.
Giải pháp tốt nhất trong tâm trí của tôi là chọn kết hợp các đường được trang bị có độ lệch chuẩn thấp nhất trong các giá trị tương quan R ^ 2 của các đường được trang bị. Tôi sẽ cố gắng giải thích với một ví dụ. Hãy ghi nhớ rằng việc hỏi có bao nhiêu điểm dừng trong dữ liệu, tương tự như đặt câu hỏi "Bờ biển nước Anh dài bao nhiêu?" như trong một trong những bài viết của Benoit Mandelbrots (một nhà toán học) về fractals. Và có một sự đánh đổi giữa số điểm phá vỡ và độ sâu hồi quy.
Bây giờ đến ví dụ.
yxxy
x1234567số 8910111213141516171819202122232425262728y1234567số 89109số 87654321234567số 8910R2l i n e 11 , 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 , 04R2l i n e 20 , 04000 , 01180 , 00040 , 00310 , 01350 , 02380 , 02770 , 02220 , 0093- 1 , 9790 , 02710 , 11390 , 25580 , 43210 , 61340 , 77330 , 89510 , 97081 , 0001 , 0001 , 0001 , 0001 , 0001 , 0001 , 0001 , 0001 , 0001 , 000s u m o fR2v a l u e s1 , 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