エクセル分析ツール

最小二乗法とは|回帰直線の求め方を手計算とExcelで

記事内に広告が含まれています。

この記事でわかること

  • 最小二乗法が何を最小にしているのか
  • 回帰直線の傾きと切片を手計算で求める手順
  • ExcelのSLOPE・INTERCEPT・LINESTで同じ値を確かめる方法
  • なぜ2乗するのか、外れ値に弱いのはなぜか

📌 前提知識:Excelで散布図を作る方法|近似曲線・R²と外れ値の見方を読んでいると理解しやすくなります

反応温度を変えて収率を測った6点のデータがあります。散布図に近似曲線を入れると、Excelが「y = 0.1983x + 42.5」と表示しました。上司からは「その直線はどうやって決まったのか。定規で引いた線と何が違うのか」と聞かれました。

点の真ん中を通るように引いた線は、人によって少しずつ違います。Excelが出した直線は、ある基準で「いちばんよく当てはまる」ただ1本の直線です。その基準が最小二乗法です。この記事では、最小二乗法が何を最小にしているのかを、手計算とExcelの両方で確かめます。

最小二乗法を使う場面

最小二乗法は、データに最もよく当てはまる直線(や曲線)の式を決める方法です。次のような場面で使います。

  • 2つの量の関係を式にして、予測や条件出しに使いたいとき。温度と収率、荷重とたわみ、濃度と吸光度(検量線)などです
  • Excelの近似曲線や回帰分析の結果が、どう計算されたかを説明したいとき。関数の中身を知っておくと、結果の読み違いを防げます
  • 分析ツールを使わずに、関数だけで回帰直線を出したいとき。データを更新すると式も自動で変わるシートを作れます

NG例(△)として、明らかな外れ値や入力ミスを含んだまま使うと、直線が大きく引っ張られます(後の節で計算します)。また、点の並びが曲がっているのに直線を当てはめても、式は出ますが意味のある予測にはなりません。まず散布図で形を確かめてから使います。

最小二乗法とは|残差の2乗の合計を最小にする

直線を \( \hat{y} = a + bx \) とします。実際の値 \( y_i \) と直線上の値 \( \hat{y}_i \) の差を残差といいます。

\[ e_i = y_i – \hat{y}_i = y_i – (a + b x_i) \]

最小二乗法は、この残差を2乗して足し合わせた値(残差平方和)が最も小さくなるように、傾き \( b \) と切片 \( a \) を決めます。

\[ S(a, b) = \sum_{i=1}^{n} \left( y_i – a – b x_i \right)^2 \;\to\; \text{最小} \]

この \( S \) を \( a \) と \( b \) でそれぞれ微分して0とおくと、次の答えが出ます。

\[ b = \frac{S_{xy}}{S_{xx}} = \frac{\sum (x_i – \bar{x})(y_i – \bar{y})}{\sum (x_i – \bar{x})^2}, \qquad a = \bar{y} – b\,\bar{x} \]

Excelでは、傾きは =SLOPE(yの範囲,xの範囲)、切片は =INTERCEPT(yの範囲,xの範囲) で求められます。\( S_{xy} \) と \( S_{xx} \) を自分で計算したい場合は、=SUMPRODUCT(A2:A7-AVERAGE(A2:A7),B2:B7-AVERAGE(B2:B7)) と =DEVSQ(A2:A7) が使えます。

手計算の例|反応温度と収率

冒頭の6点のデータで、表を作りながら計算します。A列に温度 \( x \)、B列に収率 \( y \) を入れています。

温度 x(℃)収率 y(%)x − x̄y − ȳ(x − x̄)(y − ȳ)(x − x̄)²
15072.1−25−5.1127.5625
16074.0−15−3.248.0225
17076.8−5−0.42.025
18077.950.73.525
19080.6153.451.0225
20081.8254.6115.0625
平均 175平均 77.2合計 347.0合計 1,750

表の合計から、傾きと切片が求まります。

\[ b = \frac{347}{1750} = 0.1983, \qquad a = 77.2 – 0.1983 \times 175 = 42.5 \]

回帰直線は \( \hat{y} = 42.5 + 0.1983x \) です。温度が1℃上がるごとに収率が約0.20ポイント上がる、と読みます。185℃での収率の予測は 42.5+0.19829×185=79.18%です(傾きは丸めずに使います。0.1983で計算すると79.19とずれます)。Excelの近似曲線が表示した式と一致します。

Excelで確かめると、=SLOPE(B2:B7,A2:A7) が0.19829、=INTERCEPT(B2:B7,A2:A7) が42.5を返します。=LINEST(B2:B7,A2:A7) を横に2セル選んで入力すると、傾きと切片を1度に出せます。LINESTの4つ目の引数をTRUEにすると、標準誤差や決定係数も一緒に返ります。係数の読み方は回帰係数の読み方|偏回帰係数と標準化係数で解説しています。

本当に最小になっているか確かめる

求めた直線の残差を並べると、次のとおりです。

温度 x収率 y予測 ŷ残差 ee²
15072.172.243−0.1430.0204
16074.074.226−0.2260.0509
17076.876.2090.5910.3498
18077.978.191−0.2910.0849
19080.680.1740.4260.1812
20081.882.157−0.3570.1276
合計 0合計 0.8149

残差平方和は0.8149です。残差の合計がちょうど0になるのも最小二乗法の性質で、直線がデータの「重心」(x̄, ȳ)=(175, 77.2)を必ず通ることと対応しています。

ほかの直線と比べてみます。両端の2点(150, 72.1)と(200, 81.8)を定規で結んだ直線(傾き0.194・切片43.0)の残差平方和は1.222で、最小二乗法の0.8149より大きくなります。最小二乗法の傾きを10%大きくしても小さくしても、残差平方和は1.503に増えます。どの直線を持ってきても、0.8149より小さくはなりません。これが「最もよく当てはまる」の意味です。

Excelでは、C列に予測値 =$F$2+$F$1*A2(F1に =SLOPE(B2:B7,A2:A7)、F2に =INTERCEPT(B2:B7,A2:A7) の結果を入れておきます)、D列に残差 =B2-C2 を入れ、=SUMSQ(D2:D7) で残差平方和を求めます。F1の傾きを手で変えると、残差平方和が増えることを確かめられます。当てはまりの良さを1つの数字にしたものが決定係数で、この例では R²=1−0.8149÷69.62=0.988 です。詳しくは決定係数(R²)の求め方と解釈|ExcelのRSQ関数と調整済みR²の使い分けで解説しています。

なぜ2乗するのか

残差をそのまま足すと、プラスとマイナスが打ち消し合います。この例でも残差の合計は0で、合計だけでは当てはまりの良し悪しを比べられません。打ち消し合いを防ぐ方法は、絶対値を取るか、2乗するかの2通りです。

  • 2乗の合計は微分できるので、上の式のように傾きと切片が公式1つで決まります。答えがただ1つに決まり、手計算でも求められます
  • 絶対値の合計は、答えが公式では出ないので、繰り返し計算で探す必要があります。データによっては答えが1つに決まらないこともあります

計算のしやすさに加えて、誤差が正規分布に従うなら最小二乗法の答えが最ももっともらしい推定になる、という理論上の裏付けもあります。そのため、回帰分析の標準は最小二乗法です。

外れ値に弱い|1点の入力ミスで傾きが変わる

2乗することには弱点もあります。大きな残差ほど、2乗で何倍にも効いてくることです。200℃の収率を81.8と入れるべきところを、71.8と入力してしまった場合を計算します。

\( S_{xy} \) は347から97に下がり、傾きは 97÷1,750=0.0554、切片は65.83に変わります。6点のうち1点の入力ミスで、傾きが0.198から0.055へ、3割以下に縮みました。「温度を上げても収率はほとんど変わらない」という、まったく違う結論が出てしまいます。

最小二乗法は、ずれの大きい点を「2乗の重み」で強く気にします。そのため、1点の外れ値に直線全体が引っ張られます。使う前に散布図で点を見て、飛び離れた点があれば入力ミスや測定の異常ではないかを確かめます。判定の方法は外れ値の検出方法|Grubbs検定・IQR法をExcelで実践する手順、外れ値の影響を受けにくい中央値の回帰は分位点回帰とは|平均ではなく上側10%を予測するで解説しています。

よくある質問

Q. 最小二乗法と回帰分析は同じものですか?

A. 回帰分析は、データから関係式を求めて予測や要因の評価に使う分析全体の呼び名です。最小二乗法は、その関係式の係数を決めるための計算方法です。Excelの分析ツールの回帰分析も、中では最小二乗法で係数を求めています。

Q. Excelの近似曲線とSLOPE関数の結果は同じですか?

A. 同じです。散布図の近似曲線(線形)も、SLOPE・INTERCEPT・LINESTも、最小二乗法で傾きと切片を求めています。表示の桁数が違うだけなので、報告に使うときは関数で求めた値を使うと桁を指定できます。

Q. 曲線にも使えますか?

A. 使えます。2次式 \( y = a + bx + cx^2 \) のように、係数について一次式になっている式なら、LINESTに x と x² の2列を渡せば同じ最小二乗法で係数が求まります。指数や対数の関係は、変数を変換して直線に直してから当てはめる方法がよく使われます。

Q. 説明変数が2つ以上の場合はどうしますか?

A. 重回帰分析を使います。考え方は同じで、残差の2乗の合計が最小になるように全部の係数を同時に決めます。ExcelではLINESTに複数列を渡すか、分析ツールの回帰分析を使います。

📚 この記事の内容をもっと深く学ぶ

『入門統計学』栗原伸一 検定・分散分析・実験計画法までを1冊で体系的にカバー。背景の理論から学び直したい方に。 Amazonで確認する → 楽天市場で見る →
『完全独習 統計学入門』小島寛之 数式が苦手でも読み進められる、統計の考え方をやさしく解説した定番の入門書。 Amazonで確認する → 楽天市場で見る →

他のおすすめ書籍を見る →

まとめ

  • 最小二乗法は、残差(実測値と直線のずれ)の2乗の合計が最小になるように、傾きと切片を決める方法
  • 傾き b=Sxy÷Sxx、切片 a=ȳ−b·x̄。Excelでは SLOPE・INTERCEPT、まとめて出すなら LINEST
  • 例題では b=0.1983、a=42.5、残差平方和0.8149。定規で結んだ直線(1.222)や傾きを±10%ずらした直線(1.503)より必ず小さい
  • 2乗するのは、打ち消し合いを防ぎつつ公式1つで答えが決まるから
  • 外れ値に弱い。1点の入力ミスで傾きが0.198から0.055へ縮んだ。使う前に散布図で確かめる

まとめると、2つの量の関係を式にしたいなら最小二乗法、外れ値が避けられないデータなら分位点回帰(中央値の回帰)、説明変数が複数なら重回帰分析、という使い分けです。

回帰分析の結果の読み方はエクセル分析ツールを使った回帰分析のやり方と結果の見方、直線が当てはまっているかの確かめ方は回帰分析の前提条件と残差分析|Excelと Pythonで確認する方法で解説しています。あわせてご確認ください。

タイトルとURLをコピーしました