実現したいこと
折れ線回帰をpythonで実施したいです。
前提
あるデータがあり、それに2直線で折れ線回帰を実施したいです。
ただし、2直線は1本目の終点と2本目の始点で繋がるという条件です。
また、最低3つの点を使って直線を描くことにしています。
例えば10個データがあるとすると、最初の3点で1本目の直線を引き、2本目は残りの7つ+1本目の終点のデータによって引くことにします。
発生している問題・エラーメッセージ
回帰がうまくいっていないのですが、有識者の方のご意見を頂ければと思います。
参考までにpythonのプログラムを添付します。
from scipy.optimize import curve_fit from numpy import arange x=np.array(data[0], dtype=float) y=np.array(data[1], dtype=float) n = x.shape[0] for i in range(2, n-2): seg1_x = x[0:i+1] seg1_y = y[0:i+1] seg2_x = x[i:n] seg2_y = y[i:n] def func1(seg1_x, a1, b1): return a1*seg1_x+b1 param1, param1_cov =curve_fit(func1, seg1_x, seg1_y) def func2(seg2_x, a2): return a2*(seg2_x-x[i])+(a1*x[i]+b1) param2, param2_cov =curve_fit(func2, seg2_x, seg2_y) ans1 = param1[0]*seg1_x+param1[1] ans2 = param2[0]*(seg2_x-x[i])+(param1[0]*x[i]+param1[1]) plt.plot(x, y, '-o', color ='red', label ="data") plt.plot(seg1_x, ans1, '--', color ='blue') plt.plot(seg2_x, ans2, '--', color ='green') plt.show()  ### 補足情報(FW/ツールのバージョンなど) テストデータも添付します。 x y 1 -1.040122 2 -1.563332 3 -1.792177 4 -0.926176 5 -0.746776 6 -1.260266 7 -1.046665 8 -0.058491 9 0.999898 10 1.642013 11 3.016936 12 2.671379 13 0.865827 14 0.802594 15 -0.738069 16 -0.666671 17 -0.159904 ここにより詳細な情報を記載してください。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。