私はこれを数年前にゼロからゼロからプログラミングしました。また、コンピューター上で区分線形回帰を行うためのMatlabファイルがあります。約20個の測定ポイントの場合、約1〜4個のブレークポイントが計算上可能です。5または7のブレークポイントが非常に多くなり始めます。
私が見ている純粋な数学的アプローチは、あなたの質問の下のコメントにリンクされている質問でユーザーmbqによって提案されたすべての可能な組み合わせを試すことです。
当てはめられた線はすべて連続しており、隣接しているため(重複しない)、組み合わせ論はパスカルの三角形に従います。使用されたデータポイント間にラインセグメントが重複している場合、代わりにコンビナトリクスが第2種のスターリング数に従うと思います。
私の考えでは、フィット線のR ^ 2相関値の標準偏差が最も低いフィット線の組み合わせを選択することが最善の解決策です。例で説明しようと思います。ただし、データ内にいくつのブレークポイントを見つけるかを尋ねるのは、「イギリスの海岸はどれくらいですか?」という質問に似ていることに留意してください。これは、フラクタルに関するブノワマンデルブロ(数学者)の論文の1つです。また、ブレークポイントの数と回帰の深さの間にはトレードオフがあります。
次に例を示します。
xの関数として完全なデータがあると仮定します(xとyは整数です):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
これらのy値にはグラフがあります。
これには明らかに2つのブレークポイントがあります。引数のために、R ^ 2相関値を計算します(Excelセル式(ヨーロッパのドットコンマスタイル)):
=INDEX(LINEST(B1:$B$1;A1:$A$1;TRUE;TRUE);3;1)
=INDEX(LINEST(B1:$B$28;A1:$A$28;TRUE;TRUE);3;1)
2つの適合線のすべての可能な非重複の組み合わせ。R ^ 2値のすべての可能なペアにはグラフがあります。
問題は、どのR ^ 2値のペアを選択する必要があるか、そしてタイトルで求められているように複数のブレークポイントにどのように一般化するかです。1つの選択肢は、R2乗相関の合計が最も高い組み合わせを選択することです。これをプロットすると、下の青い曲線が得られます。
1,0455
区分的線形回帰-MATLAB-複数のブレークポイント