Excelソルバーで最小二乗法と最小絶対値法を解いて違いを比較してみた
回帰分析は最小絶対値法でも解ける
回帰分析は最小二乗法で解くのが普通です。
これは正の誤差や負の誤差があるため、誤差をそのまま足し合わせても誤差の全体量を表せませんが、二乗した誤差を足し合わせればすべて正の数になるため都合がいいからです。
計算された誤差の二乗和(平方和)が最も小さくなるような回帰直線を求めるやり方が最小二乗法です。
しかし、正と負の誤差が打ち消しあわないように合計するためには、誤差の絶対値を合計してもいいはずです。
実際、誤差の絶対値和が最小になるように回帰直線を求めるやり方もあり、最小絶対値法と呼ばれています。
こちらの方が直感的には分かりやすいにもかかわらずマイナーな理由は、式が線形でないため計算しにくいからです。
例えば、
|x|=2
という式をxについて解こうとすると、xが正の場合と負の場合とで場合分けが必要になり、
xが正の場合はx=2、xが負の場合はx=-2と線形でなくなり、場合分けが面倒です。
しかし、この最小絶対値法は工夫することで線形問題に変換でき、Excelのソルバーで解くこともできます。
そこで、以前、最小二乗法で解いた多項式回帰の例題を最小絶対値法で解いてみて、どちらの方が良い結果が得られるかを比較してみました。
最小絶対値法の例題
下記のデータが得られた時に、xからyを予測する二次回帰式を求めたいとします。
これは、【2通りの方法】最小二乗法を行列演算で解く方法をわかりやすく解説で取り上げた問題と同じで、得られた回帰式は、
f(x) = 1.79924x2-5.68864x+6.71667
でした。
【2通りの方法】最小二乗法を行列を使って解く方法をわかりやすく解説
これを最小絶対値法で解いてみましょう。
最小絶対値法での解法
そのままExcelソルバーで解いてみる
まずは、最小絶対値法をそのままExcelシートに入力して、ソルバーで解くとどうなるかを試してみましょう。
二次の回帰式を
f(x) = ax2+bx+c
と置き、a~cを最小絶対値法で計算します。
xとyの観測値が10組ありますので、誤差の絶対値|y-f(x)|も10個できます。
最小絶対値法では誤差の絶対値の合計が最小になるようなa~cを求めますので、
Σ|yi-f(xi)|(i=1~10)
が最小になるようなa~cを求めます。
そのために、まず次のようにExcelシートに入力します。
これでE3セル(誤差の絶対値の合計)が最小になるようなC3~C5(a~c)を求める問題になりました。
これをExcelソルバーで解くためには次のようにソルバー画面に入力します。
これで「解決」ボタンを押して計算を実行してみましょう。
すると、次のようにエラーメッセージが表示されて計算できません。
エラーメッセージの内容は「線形条件が満たされていません」となっています。
目的セルが誤差の絶対値の合計であるため、線形問題になっていないのです。
従って、これを線形問題に変換してあげる必要があります。
線形問題に変換する
線形問題に変換するために、もう一つの変数を導入します。
|yi-f(xi)|≦mi
となるようなmiを導入します。
これらは10個の誤差の上限を意味します。
すると、最小絶対値法の問題は、
f(x) = ax2+bx+c
として
|yi-f(xi)|≦mi
の制約条件の下に
Σmi(i=1~10)
を最小化するa~cとmiを求める問題になります。
ところが、これでもまだ線形問題ではありません。
|yi-f(xi)|≦mi
の制約条件が非線形なのです。
しかし、これを線形問題へ変換することはそれほど難しくありません。
例えば
|x|≦3
は非線形ですが、この不等式は
x≦3、-x≦3(x≧-3)
の2つの不等式と等価です。
これと同じようにすると、
|yi-f(xi)|≦mi
の不等式は
yi-f(xi)≦mi
-yi+f(xi)≦mi
の2つの不等式と等価です。
従って、最小絶対値法の問題は、
f(x) = ax2+bx+c
として
yi-f(xi)≦mi
-yi+f(xi)≦mi
の制約条件の下に
Σmi(i=1~10)
を最小化するa~cとmiを求める線形問題になります。
Excelソルバーで解く
Excelシートには次のように入力します。
そしてExcelソルバー画面には次のように入力すればよいでしょう。
「解決」ボタンを押して実行すると、次のようにa~cとmiが最適化されます。
つまり回帰式は、
f(x) = 1.801587x2-5.70635x+6.904762
になりました。
最小絶対値法と最小二乗法の解を比較する
これで同じデータから異なる方法で回帰式を求めることができました。
最小二乗法による回帰式
f(x) = 1.79924x2-5.68864x+6.71667
最小絶対値法による回帰式
f(x) = 1.801587x2-5.70635x+6.904762
どちらがいい回帰式なのでしょうか?
これを評価する方法は幾通りかありますが、相関係数で比較してみましょう。
相関係数は-1から1までの値をとり、1に近いほど回帰式の当てはまりが良いことを示します。
相関係数は
相関係数=共分散/(xの標準偏差×yの標準偏差)
で求められますが、今回は別の方法で計算してみます。
【エクセル回帰分析結果の見方】出力される4つの表をすべて検証してみた。で解説したように、相関係数の二乗である決定係数は次式で計算できます。
決定係数=1-(残差の平方和/合計誤差の平方和)
計算された決定係数のルートをとれば相関係数になります。
ここで
合計誤差=回帰誤差+残差
です。
もう少し具体的に書くと、
合計誤差=観測値yとyの平均ȳとの差
回帰誤差=回帰式による推測値ŷと平均ȳとの差
残差=観測値yとŷの差
です。
そこで、この式を使って最小二乗法による回帰式と最小絶対値法による回帰式それぞれの決定係数を計算してみましょう。
最小二乗法による回帰式
最小絶対値法による回帰式
決定係数の平方根が相関係数ですので、最小二乗法で導いた回帰式の相関係数は0.99868、最小絶対値法のそれは0.99867となり、ほぼ同等という結果になりました。