01合う直線をどう決めるか
点と直線の縦の差 が、いちばん小さくなる直線を探したい。でも差は点の数だけあります。どう 1 つの数にまとめるか。
差を足す
+ と − が打ち消し合い、合っていない直線でも 0 になります。平均の点 を通る直線なら、どれでも 0 です。
絶対値を足す
打ち消し合いませんが、 は角があって微分できず、「微分が 0 の所が底」で探せません。答えが 1 本に決まらないこともあります。
2 乗を足す
負にならず、角もありません。差を 1 辺とする正方形の面積の和です。直線を動かしてみてください。
これをいちばん小さくするのが最小二乗法です。
は正確で にだけ誤差があり、どの点の誤差も同じくらいで互いに関係がない、とします(誤差が点ごとに違うなら、差をその誤差で割ってから 2 乗)。誤差が正規分布なら、これがいちばんありそうな値(最尤推定)になります。
02直線を計算で求める
01 節の図のボタン「2 乗の和がいちばん小さい直線」が出した直線を、計算で求めます。 は の 2 次式で、 と を軸にとると、谷が 1 つのお椀の形です(異なる が 2 つ以上あるとき)。
谷の底では、 で微分しても で微分しても 0 です(多変数の極値)。
これは の連立 1 次方程式で、解くと( は平均)
例題 14 点 (0, 0.9), (1, 3.1), (2, 4.9), (3, 7.1) に直線を合わせる。
平均との差 は 、、、 なので
直線は 。残差は です。
のように について曲がっていても、 について 1 次なら同じように解けます( がやはり 2 次式になるため)。この場合は、異なる が 3 つ以上あれば答えはただ 1 つです。
演習 1
3 点 に直線 を合わせよう。
答えを見る 答えを閉じる
。
平均との差は なので
残差は で、足すと 0 になる( の式そのもの)。
03直線に直せる式
合わせたい式が直線とは限りません。たとえば減っていく量 は曲線です。でも対数をとると で、 と の直線です。02 節の式がそのまま使えます。
例題 23 点 (0, 5.0), (1, 2.9), (2, 1.9) に を合わせる。
は (平均 )。
の平均との差は 、 は なので
よって 。 の残差は です。
対数をとるので、 がすべて正のときだけ使えます。また、 の誤差 が一定でも、 の誤差は( のとき)およそ で、 が小さい点ほど大きくなります。きちんと合わせるなら、差を で割ってから 2 乗します。
04直線に直せない式
対数でも直線にならない式、たとえば はどうするか。 について 1 次でないので一度では解けず、 の谷がいくつもできることもあります。
や のように、式の中で求めたい数をパラメータと呼び、まとめて と書きます。今の値の近くで式を 1 次で近似します。すると、ずらす量 は 02 節と同じように解けます。
は偏微分を並べた表(行列)、 はその行と列を入れかえたもの、 は今の残差です。
これをくり返すのが Gauss–Newton 法です(scipy.optimize.curve_fit などはその改良版を使う)。反復の初期値はグラフから大まかに読んで、深い谷に置きます。たとえば振動なら、山の間隔から を読みます(減衰振動のデータ解析)。
05近似直線の誤差
点に誤差があるので、近似直線の傾きと切片にも誤差があります。「」のように書くためのものです。どの点も同じ大きさ の、互いに関係のない誤差をもつとき
が分からないときは残差から見積もります( はパラメータの個数。直線なら 2)。
例題 3例題 1 の直線の、傾きと切片の誤差を求める。
残差 から
よって 。
一般の式では の対角成分の平方根(直線のときは上の式と同じ)。式がパラメータについて 1 次で が分かっていれば近似なし、それ以外は見積もりです。
06残差を見る
最小二乗法は、どんな式でも「いちばんまし」な値を出してしまいます。式の形が合っているかは、合わせたあとの残差 (データと式の差)を描いて確かめます。
形が見えたら、合わせる値ではなく式の形そのものを見直します。