はじめに
『Pythonで学ぶ空間データサイエンス入門』の独学時のまとめノートです。「定義編・導出編」「作図編・実装編」「可視化編」の三部構成でモデルやアルゴリズムの理解を目指します。
本の内容から寄り道・回り道しながら進めます。本を読んだ上で補助的に読んでください。
この記事では、線形回帰モデルの最小二乗法について、数式を使って解説します。
【前の内容】
【他の内容】
【今回の内容】
3.2.1-3 線形回帰モデルの最小二乗法(OLS)の導出
線形回帰モデル(linear regression model)に対する最小二乗法(OLS・ordinary least square)を導出します。
線形回帰モデルについては「3.2.0:線形回帰モデルの定義式【空間DS入門のノート】 - からっぽのしょこ」を参照してください。
モデルの設定
まずは、線形回帰モデルの定義(仮定)を数式で確認します。
多変量正規分布については「多次元ガウス分布の定義式 - からっぽのしょこ」を参照してください。
定義式
線形回帰モデルの定義式については「線形回帰モデルの定義式」を参照してください。
線形回帰モデルは、次の式で定義されます。
ここで、 はデータ
の説明変数(
次元ベクトル)、
は
個のデータの説明変数(
の行列)、
はデータ
の被説明変数(スカラ)、
は
個のデータの被説明変数(
次元ベクトル)、
は回帰パラメータ(
次元ベクトル)、
はデータ
の誤差項(スカラ)、
は
個のデータの誤差項(
次元ベクトル)です。
誤差項 は、平均ベクトル
・分散共分散行列
の多変量正規分布に従うと仮定します。
ここで、 は分散パラメータ(スカラ)です。
推定値
線形回帰モデルに関する推定値については「線形回帰モデルの定義式」を参照してください。
回帰パラメータの推定値 を用いて、被説明変数の推定値(予測値)
を求めます。
観測値(実現値) と予測値
の差を残差
とします。
計算式
線形回帰モデルに関する計算式については「線形回帰モデルの定義式」を参照してください。
残差 の式(4)の予測値
を式(3)で置き換えます。
観測値 を用いた式に変形しました。
残差 の内積(残差平方和)は、次の式となります。
ハット行列 は、次の式で定義されます。
ハット行列(射影行列)については「3.2.2:ハット行列の性質の導出【空間データサイエンス入門のノート】 - からっぽのしょこ」を参照してください。
冪等行列 は、次の式で定義されます。
冪等行列(べき等行列)については「3.2.2:冪等行列の性質の導出【空間データサイエンス入門のノート】 - からっぽのしょこ」を参照してください。
パラメータの推定
次は、線形回帰モデルに対する最小二乗法によるパラメータの計算式(最小二乗推定量・最小二乗解)を導出します。
回帰パラメータの最小二乗推定量
回帰パラメータの最小二乗推定量(残差平方和が最小となる推定値)を求めます。
残差平方和 を回帰パラメータの推定値
に関して微分します。
途中式の途中式(クリックで展開)
- 1: 式(5)より、
の内積の偏微分の式を立てます。
に関する微分なので、
以外の項は定数として扱います。
- 2: 和の微分
より、微分の和に分割します。
- 2: 定数倍の微分
より、係数を微分の外に出します。
- 3: 式(9)より、定数スカラの微分は0ベクトルになり消えます。
- 3: 式(10)より、変数ベクトルの微分は単位行列になり消えます。
- 3: 対称行列の二次形式の微分
より、
を1つの行列とみなして変形します。
- 4: 式を整理します。
- 5: 共通の項と
を括り出します。
- 6: 式(4')より、丸括弧を残差に置き換えます。
被説明変数 の内積を回帰パラメータの推定値
に関して微分します。
途中式の途中式(クリックで展開)
- 1: 縦ベクトルによるスカラの微分の要素を明示します。
- 2: 定数の微分
より、定数ベクトルの微分は0ベクトルになります。
回帰パラメータの推定値 の転置を回帰パラメータの推定値
に関して微分します。
途中式の途中式(クリックで展開)
- 1: 縦ベクトルによる横ベクトルの微分の要素を明示します。
- 2: 定数の微分
または変数の微分
より、変数ベクトルの微分は単位行列になります。
対角要素は 、非対角要素は
となり、対角要素のみが残ります。
残差平方和の微分 が0ベクトル
となる回帰パラメータの推定値
を求めます。
途中式の途中式(クリックで展開)
- 1: 式(8)より、
とおいて、
について解きます。
- 2:
と無関係な項を右辺に移します。
- 3: 両辺に
の逆行列を左から掛けます。
回帰パラメータ の最小二乗推定量
の計算式が得られました。
分散パラメータの不偏推定量
続いて、残差平方和を用いて、分散パラメータの不偏推定量を求めます。
冪等行列 を用いて、残差
の式(4')を変形します。
途中式の途中式(クリックで展開)
- 1: 式(4')を再掲しています。
- 2: 式(11)より、
に式を代入します。
- 3: 式(1)より、
に式を代入します。
- 4: 括弧を展開します。
- 5: 逆行列の性質
より、
を1つの行列とみなして積を計算すると、単位行列
になり消えます。
- 6:
を括り出します。
- 7: 式(7)より、
の係数の項を冪等行列
に置き換えます。
ちなみに、ハット行列 を用いて、残差
の式(4')を変形すると
途中式の途中式(クリックで展開)
- 1: 式(4')を再掲しています。
- 2: 式(11)より、
に式を代入します。
- 3: 式(6)より、
の係数の項をハット行列
に置き換えます。
- 4:
を括り出します。
となり、さらに冪等行列 を用いて変形すると、同じ式が得られます。
途中式の途中式(クリックで展開)
- 1: 式(7)より、
の係数の項を冪等行列
に置き換えます。
- 2: 式(1)より、
に式を代入します。
- 3: 括弧を展開します。
- 4: 冪等行列の性質
より、変数との積は0行列になり消えます。
残差 の計算式が得られました。
この式(12)は、残差(観測値と予測値の差) と誤差(観測値と理論値の差)
の関係式と言えます。
冪等行列 を用いて、残差平方和
の式(5)を変形します。
途中式の途中式(クリックで展開)
- 1: 式(11)より、
の内積の式を立てます。
- 2: 転置の性質
より、括弧を展開します。
- 3: 冪等行列の性質
、
より、自身との積は1つの
になります。
さらに、ベクトル・行列の要素を明示して計算します。
途中式の途中式(クリックで展開)
- 1: 内積の要素を明示します。
- 2: 横ベクトルと行列の積を計算します。
- 3: ベクトルの内積を計算します。
残差平方和 の計算式が得られました。
残差平方和 の期待値を求めます。
途中式の途中式(クリックで展開)
- 1: 式(12')より、
の内積の期待値の式を立てます。
- 2: 和の期待値
より、期待値の和に分割します。
期待値の総和を、総和の期待値に変形します。
- 3: 定数倍の期待値
より、
と無関係な
の要素を期待値の外に出します。
各誤差項 は平均
の正規分布に従い生成されると仮定しているので、
の期待値は
であり、 の積の期待値は
の共分散
に変形できます。
途中式の途中式(クリックで展開)
- 1:
に関して、
とします。
- 2: モデルの定義(2)より、
の期待値は0です。
- 3: 共分散の定義
より、式全体を誤差項の共分散に置き換えます。
各誤差項 は独立に生成されると仮定しているので、異なるインデックスの要素
の共分散は
です。また、各誤差項
は分散
の正規分布に従い生成されると仮定しているので、同じインデックスの要素
の共分散(
の分散)は
です。
の期待値と分散・共分散の関係(15)を用いて、残差平方和
の期待値の式(14)を変形します。
途中式の途中式(クリックで展開)
- 1: 式(14)の
に関する項の和
を展開します。
- 2: 式(15)より、
の積の期待値は共分散です。
- 3: 式(15)より、同じインデックス
の共分散は分散です。
- 3: 式(15)より、異なるインデックス
の共分散は0です。
さらに、冪等行列 を用いて、式を変形します。
途中式の途中式(クリックで展開)
- 1: 各データと無関係な
を総和の外に出します。
- 2: 行列のトレースの定義(対角要素の和)
より、
の対角要素の和
を
のトレース
に置き換えます。
- 3: 冪等行列の性質
より、
のトレースは
の行数と列数の差になります。
残差平方和 の期待値の計算式が得られました。
残差平方和 の期待値の式(16)を分散パラメータ
について解きます。
分散パラメータ の計算式が得られました。
不偏推定量の条件(期待値が真の値と一致する)
を満たす式として、分散パラメータの推定値 を次のようにおきます。
この式の両辺の期待値をとると
途中式の途中式(クリックで展開)
- 1: 式(18)より、
の期待値の式を立てます。
- 2: 定数倍の期待値
より、分母を期待値の外に出します。
- 3: 式(17)より、式全体を分散パラメータに置き換えます。
不偏推定量の条件を満たすことが分かります。
分散パラメータの不偏推定量 の計算式(18)が得られました。
以上で、線形回帰モデルのパラメータの推定値の計算式が求まりました。
パラメータの統計量
最後に、分散パラメータの推定値を評価するための統計量を導出します。
回帰パラメータの分散共分散行列
回帰パラメータの最小二乗推定量の分散共分散行列を求めます。
誤差項 の期待値を計算します。
途中式の途中式(クリックで展開)
- 1: ベクトルの要素を明示します。
- 2: ベクトルの期待値を、期待値のベクトルに変形します。
- 3: モデルの定義(2)より、誤差項の期待値は
です。
誤差項 の期待値の計算式が得られました。0ベクトル
になります。
誤差項 の分散共分散行列を計算します。
途中式の途中式(クリックで展開)
- 1: 分散共分散行列の定義
より、
の分散共分散行列の式を立てます。
- 1: 式(19)より、
の期待値は0ベクトルになり消えます。
さらに、行列の要素を明示して計算します。
途中式の途中式(クリックで展開)
- 1: ベクトルの要素を明示します。
- 2: ベクトルの外積を計算します。
- 3: 行列の期待値を、期待値の行列に変形します。
- 4: 式(15)より、誤差項の分散は
、共分散は
です。
- 5: 行列の定数倍を、スカラと行列の積に変形します。
誤差項 の分散共分散行列の計算式が得られました。分散パラメータ
と単位行列
の積になります。
回帰パラメータの推定値 の式(11)を変形します。
途中式の途中式(クリックで展開)
- 1: 式(11)を再掲しています。
- 2: 式(1)より、
に式を代入します。
- 3: 括弧を展開します。
- 4: 逆行列の性質
より、
を1つの行列とみなして積を計算すると、単位行列
になり消えます。
回帰パラメータの推定値 の期待値をとります。
途中式の途中式(クリックで展開)
- 1: 式(21)より、
の期待値の式を立てます。
- 2: 和の期待値
より、期待値の和に分割します。
- 3: 定数倍の期待値
より、
と無関係な
を期待値の外に出します。
- 4: 式(19)より、
の期待値は0ベクトルになり消えます。
回帰パラメータの推定値の期待値 と真の値
が一致することから、不偏推定量の条件を満たしていることが分かります。
回帰パラメータの推定値 の偏差を計算します。
途中式の途中式(クリックで展開)
- 1: 偏差の定義
より、
の偏差の式を立てます。
- 1: 式(22)より、
の期待値は真の値になります。
- 2: 式(21)より、
に式を代入します。
回帰パラメータの推定値 の分散共分散行列を求めます。
途中式の途中式(クリックで展開)
- 1: 分散共分散行列の定義
より、
の分散共分散行列の式を立てます。
- 1-2: 式(23)より、
の偏差に式を代入します。
- 3: 転置の性質
、
、転置行列と逆行列の関係
より、括弧を展開します。
転置により、次のように変形します。
- 4: 定数倍の期待値
より、
と無関係な
を期待値の外に出します。
- 5: 式(20)より、
に式を代入します。
- 6: スカラ
を前に出します。
- 7: 逆行列の性質
より、
を1つの行列とみなして積を計算すると、単位行列
になり消えます。
の分散共分散行列の計算式が得られました。
以上で、最小二乗法によるパラメータ推定の式が得られました。
この記事では、線形回帰モデルの最小二乗法を数式で確認しました。次の記事では、プログラムで確認します。
参考文献
おわりに
これまでにいくつかの回帰モデルを扱ってきましたが、ナントカ回帰じゃないシンプルなモデルはやってなかったかもしれません。いやこのモデルは重回帰なので、よりシンプルな単回帰をまだやってないのですが。(忘れてるだけで扱ってるかもしれませんが…)
シンプルなら簡単かというとそんなことはなく、行列計算が普通に重かったです。1年以上ぶりにthe matrix cookbookを引くことになりました。二次形式の微分を公式的に書いてしまったのが心残りです。行列の性質シリーズを導出してみたいなぁ(と思うこと3年ほど?)、ネタ切れしたらやるかも。
このシリーズの想定読者が定まっていなかったのですが、軽い行列計算はできるレベルということでいいですかね。
2024年8月4日は、私立恵比寿中学の結成15周年の記念日です。
15年前に自分が何をしていたかぱっと思い出せませんが、結成当初(かは分かりませんがももクロの妹分と呼ばれてた(よね?)頃)には少し聞いたことがあったはずなんですよね。当時の私はアイドル自体に興味がなかったのですが、10年以上の時を経てまさかライブに行くほどハマることになるとは、人生何が起こるか分かりません。今後どうなるかは分かりませんが、とりあえず年度末のライブのチケットを申し込んだので今はそれが楽しみです(次こそエニエニをお願いします!)。
おめでとうございます!これからも永遠に中学生♪
- 2026.8.05:加筆修正の際に記事から「線形回帰モデルの定義式」を分割しました。
訳あって想定読者をいつもよりも低めにするか迷いながら初稿を書き始めていたのですが、どの道この記事辺りから付いてこれなくなるんでした。そんなことは忘れて、結局いつも通りのレベルで書き直しています。訳とやらも不要そうですし。
あとがきを読んで気付きましたが、気まぐれに書いたGMLの導出で単回帰を扱ったことになるんですね。素のモデルではなく変則的で、思っていた形と違いますが。
幸いにもネタ切れしていないので行列の公式シリーズは未だに取り組めていません。やりたい気持ちはまだありますよ。
ところでもう1日早く更新しておけば丁度2年でした。半月前には書き終わっていたのですが、これだけ更新するのを忘れていただけなんですが。
その後も何度かえびちゅうのライブに行ったもののまだエニエニは聴けていません。迷った末に行かなかった地元でのライブで日替わり曲として歌われるというニアミスはありました。無念。
でも、夢にも思わなかったソラシド~ねえねえ~のカバーを聴けるという僥倖もありました。何があるか分からないものですね。
【次の内容】
線形回帰モデルのOLSをプログラムで確認します。
GWRのOLSを数式で確認します。
SLMの最尤推定を数式で確認します。

