からっぽのしょこ

読んだら書く!書いたら読む!同じ事は二度調べ(たく)ない

3.2.0:線形回帰モデルの定義式【空間DS入門のノート】

はじめに

 『Pythonで学ぶ空間データサイエンス入門』の独学時のまとめノートです。「定義編・導出編」「作図編・実装編」「可視化編」の三部構成でモデルやアルゴリズムの理解を目指します。
 本の内容から寄り道・回り道しながら進めます。本を読んだ上で補助的に読んでください。

 この記事では、線形回帰モデルの仮定について、数式を使って解説します。

【他の内容】

www.anarchive-beta.com

【今回の内容】

3.2.0 線形回帰モデルの定義式

 線形回帰モデル(linear regression model)の定義(仮定)を数式で確認します。

モデルの設定

 線形回帰モデルの定義(仮定)を数式で確認します。
 多変量正規分布については「多次元ガウス分布の定義式 - からっぽのしょこ」を参照してください。

変数・パラメータ

 線形回帰モデルの変数やパラメータなどの表記を確認します。

 データ数を N、データ番号(インデックス)を n \in \{1, 2, \dots, N\} とします。n 番目のデータやデータ n と呼びます。場合によっては、i, j などでもデータを表します。
 説明変数に対応するパラメータ数(次元数)を K、パラメータ番号(次元番号)を k \in \{0, 1, 2, \dots, K\} とします。k 番目のパラメータや k 番目の次元と呼びます。切片 k = 0 を含めるので、パラメータ数(回帰パラメータの数)は K+1 です。

 データ n の説明変数(入力データ)を K+1 次元ベクトル \mathbf{x}_n とします。

 \displaystyle
\mathbf{x}_n
    = \begin{pmatrix}
          x_{n0} \\ x_{n1} \\ x_{n2} \\ \vdots \\ x_{nK}
      \end{pmatrix}
    = \begin{pmatrix}
          1 \\ x_{n1} \\ x_{n2} \\ \vdots \\ x_{nK}
      \end{pmatrix}

 全てのデータで、0 番目 k = 0 の要素を x_{n0} = 1 とします。
 N 個のデータの説明変数をまとめて、N \times (K+1) の行列 \mathbf{X} とします。

 \displaystyle
\begin{aligned}
\mathbf{X}
    = \begin{pmatrix}
          \mathbf{x}_1^{\top} \\
          \mathbf{x}_2^{\top} \\
          \vdots \\
          \mathbf{x}_N^{\top}
      \end{pmatrix}
   &= \begin{pmatrix}
          x_{10} & x_{11} & x_{12} & \cdots & x_{1K} \\
          x_{20} & x_{21} & x_{22} & \cdots & x_{2K} \\
          \vdots & \vdots & \vdots & \ddots & \vdots \\
          x_{N0} & x_{N1} & x_{N2} & \cdots & x_{NK}
      \end{pmatrix}
\\
   &= \begin{pmatrix}
          1      & x_{11} & x_{12} & \cdots & x_{1K} \\
          1      & x_{21} & x_{22} & \cdots & x_{2K} \\
          \vdots & \vdots & \vdots & \ddots & \vdots \\
          1      & x_{N1} & x_{N2} & \cdots & x_{NK}
      \end{pmatrix}
\end{aligned}

 \mathbf{X} の各行が各地域の説明変数 \mathbf{x}_n に対応します。

 データ n の被説明変数(出力データ)を y_n とします。
 N 個のデータの被説明変数をまとめて、N 次元ベクトル \mathbf{y} とします。

 \displaystyle
\mathbf{y}
    = \begin{pmatrix}
          y_1 \\ y_2 \\ \vdots \\ y_N
      \end{pmatrix}

 各説明変数 \mathbf{x}_n の k 番目の要素 x_{nk} に対応する回帰パラメータ(回帰係数)を \beta_k とします。
 K+1 個の次元の回帰パラメータをまとめて、K+1 次元ベクトル \boldsymbol{\beta} とします。

 \displaystyle
\boldsymbol{\beta}
    = \begin{pmatrix}
          \beta_0 \\ \beta_1 \\ \beta_2 \\ \vdots \\ \beta_K
      \end{pmatrix}

 0 番目 k = 0 の要素 \beta_0 は切片(定数項)に対応します。

 データ n の誤差項を \epsilon_n とします。
 N 個のデータの誤差項をまとめて、N 次元ベクトル \boldsymbol{\epsilon} とします。

 \displaystyle
\boldsymbol{\epsilon}
    = \begin{pmatrix}
          \epsilon_1 \\ \epsilon_2 \\ \vdots \\ \epsilon_N
      \end{pmatrix}

 各誤差項 \epsilon_n は、平均 \mu = 0・分散 \sigma^2 (標準偏差 \sigma )の一変量正規分布(1次元ガウス分布)に従って、独立に生成されると仮定します。

 \displaystyle
\epsilon_n
    \sim
      \mathcal{N}(0, \sigma^2)

 このとき、誤差項( N 個の誤差項のベクトル) \boldsymbol{\epsilon} は、平均ベクトル \boldsymbol{\mu} = \mathbf{0}・分散共分散行列 \boldsymbol{\Sigma} = \sigma^2 \mathbf{I} の多変量正規分布(多次元ガウス分布)に従うと言えます。

 \displaystyle
\boldsymbol{\epsilon}
    \sim
      \mathcal{N}(\mathbf{0}, \sigma^2 \mathbf{I})

 誤差項 \boldsymbol{\epsilon} の平均ベクトルは、N 次元の0ベクトルになります。

 \displaystyle
\boldsymbol{\mu}
    = \begin{pmatrix}
          \mu_1 \\ \mu_2 \\ \vdots \\ \mu_N
      \end{pmatrix}
    = \begin{pmatrix}
          0 \\ 0 \\ 0 \\ 0
      \end{pmatrix}
    = \mathbf{0}

 全てのデータで、平均は \mu_n = 0\ (n = 1, \dots, N) で固定です。
 誤差項 \boldsymbol{\epsilon} の分散共分散行列は、対角要素が \sigma^2 の N \times N の対角行列になります。

 \displaystyle
\begin{aligned}
\boldsymbol{\Sigma}
   &= \begin{pmatrix}
          \sigma_1^2  & \sigma_{12} & \cdots & \sigma_{1N} \\
          \sigma_{21} & \sigma_2^2 & \cdots & \sigma_{1N} \\
          \vdots      & \vdots      & \ddots & \vdots \\
          \sigma_{N1} & \sigma_{N2} & \cdots & \sigma_N^2
      \end{pmatrix}
\\
   &= \begin{pmatrix}
          \sigma^2 & 0        & \cdots & 0 \\
          0        & \sigma^2 & \cdots & 0 \\
          \vdots   & \vdots   & \ddots & \vdots \\
          0        & 0        & \cdots & \sigma^2
      \end{pmatrix}
\\
   &= \sigma^2
      \begin{pmatrix}
          1 & 0 & \cdots & 0 \\
          0 & 1 & \cdots & 0 \\
          \vdots & \vdots & \ddots & \vdots \\
          0 & 0 & \cdots & 1
      \end{pmatrix}
\\
   &= \sigma^2 \mathbf{I}
\end{aligned}

 全てのデータで、分散は \sigma_n = \sigma^2\ (n = 1, \dots, N) で固定です。
 各誤差項は独立に生成される(無相関)ので、異なる2つのデータ i, j ( i, j 番目)の誤差項 \epsilon_i, \epsilon_j の共分散は \sigma_{ij} = 0\ (i \neq j) です。

 以上の変数やパラメータなどを用いてモデルを定義します。

スポンサードリンク

定義式

 続いて、線形回帰モデルの定義式を確認します。

 線形回帰モデルは、次の式で定義されます。この式は、各データの被説明変数 y_n の計算式を表します。

 
\begin{align}
y_n
   &= \mathbf{x}_n^{\top} \boldsymbol{\beta}
      + \epsilon_n
\tag{1}\\
   &= \begin{pmatrix}
          x_{n0} & x_{n1} & x_{n2} & \cdots & x_{nK}
      \end{pmatrix}
      \begin{pmatrix}
          \beta_0 \\ \beta_1 \\ \beta_2 \\ \vdots \\ \beta_K
      \end{pmatrix}
      + \epsilon_n
\\
   &= x_{i0} \beta_0
      + x_{n1} \beta_1
      + x_{n2} \beta_2
      + \cdots
      + x_{nK} \beta_K
      + \epsilon_n
\\
   &= \sum_{k=0}^K
          \beta_k x_{nk}
      + \epsilon_n
\\
   &= \beta_0
      + \sum_{k=1}^K
          \beta_k x_{nk}
      + \epsilon_n
\tag{1'}
\end{align}

途中式の途中式(クリックで展開)


  • 1: 変数 \mathbf{x}_n とパラメータ \boldsymbol{\beta} の内積と誤差項 \epsilon_n の和の式を立てます。
  • 2: ベクトルの要素を明示します。
  • 3: ベクトルの内積(要素ごとの積の和)を計算します。
  • 4: K+1 個の項(変数とパラメータの積)の和を \sum_{k=0}^K でまとめます。
  • 5: (項の形が異なる)0番目の項 \beta_0 x_{n0} = \beta_0 を総和から取り出します。その他の項の和を \sum_{k=1}^K でまとめます。

 N 個のデータの被説明変数 \mathbf{y} を用いると、次の式で定義されます。

 \displaystyle
\mathbf{y}
    = \mathbf{X}
      \boldsymbol{\beta}
      + \boldsymbol{\epsilon}
\tag{2}

 行列の要素を明示して計算すると、次の式になります。

 
\begin{align}
\begin{pmatrix}
    y_1 \\ y_2 \\ \vdots \\ y_N
\end{pmatrix}
   &= \begin{pmatrix}
          1      & x_{11} & x_{12} & \cdots & x_{1K} \\
          1      & x_{21} & x_{22} & \cdots & x_{2K} \\
          \vdots & \vdots & \vdots & \ddots & \vdots \\
          1      & x_{N1} & x_{N2} & \cdots & x_{NK}
      \end{pmatrix}
      \begin{pmatrix}
          \beta_0 \\ \beta_1 \\ \beta_2 \\ \vdots \\ \beta_K
      \end{pmatrix}
      + \begin{pmatrix}
          \epsilon_1 \\ \epsilon_2 \\ \vdots \\ \epsilon_N
        \end{pmatrix}
\tag{1}\\
   &= \begin{pmatrix}
          \beta_0 + x_{11} \beta_1 + x_{12} \beta_2 + \cdots + x_{1K} \beta_K \\
          \beta_0 + x_{21} \beta_1 + x_{22} \beta_2 + \cdots + x_{2K} \beta_K \\
          \vdots \\
          \beta_0 + x_{N1} \beta_1 + x_{N2} \beta_2 + \cdots + x_{NK} \beta_K
      \end{pmatrix}
      + \begin{pmatrix}
          \epsilon_1 \\ \epsilon_2 \\ \vdots \\ \epsilon_N
        \end{pmatrix}
\\
   &= \begin{pmatrix}
          \beta_0 + \sum_{k=1}^K \beta_k x_{1k} + \epsilon_1 \\
          \beta_0 + \sum_{k=1}^K \beta_k x_{2k} + \epsilon_2 \\
          \vdots \\
          \beta_0 + \sum_{k=1}^K \beta_k x_{Nk} + \epsilon_N
      \end{pmatrix}
\tag{2'}
\end{align}

途中式の途中式(クリックで展開)


  • 1: 変数 \mathbf{X} とパラメータ \boldsymbol{\beta} の積と誤差項 \boldsymbol{\epsilon} の和の式を立てます。
  • 2: 行列とベクトルの積(各行とベクトルの内積)を計算します。
  • 3: ベクトルの和(要素ごとの和)を計算します。

 各要素が各データにおける定義式(1')に対応します。

 以上で、モデルを定義しました。

スポンサードリンク

推定値

 線形回帰モデルのパラメータ推定における推定値などの表記を確認します。

 各説明変数 \mathbf{x}_n の k 番目の要素 x_{nk} に対応する回帰パラメータの推定値(最小二乗推定量)を \hat{\beta}_k とします。
 K+1 個の次元の回帰パラメータの推定値をまとめて、K+1 次元ベクトル \hat{\boldsymbol{\beta}} とします。

 \displaystyle
\hat{\boldsymbol{\beta}}
    = \begin{pmatrix}
          \hat{\beta}_0 \\ \hat{\beta}_1 \\ \hat{\beta}_2 \\ \vdots \\ \hat{\beta}_K
      \end{pmatrix}

 データ n の被説明変数の推定値を \hat{y}_n とします。
 \hat{y}_n は、推定した回帰パラメータ \hat{\boldsymbol{\beta}} を用いて、定義式(1)と同様にして求めた予測値です。

 
\begin{align}
\hat{y}_i
   &= \mathbf{x}_i^{\top} \hat{\boldsymbol{\beta}}
\tag{3}\\
   &= \begin{pmatrix}
          x_{i0} & x_{i1} & x_{i2} & \cdots & x_{iK}
      \end{pmatrix}
      \begin{pmatrix}
          \hat{\beta}_0 \\ \hat{\beta}_1 \\ \hat{\beta}_2 \\ \vdots \\ \hat{\beta}_K
      \end{pmatrix}
\\
   &= x_{i0} \hat{\beta}_0
      + x_{i1} \hat{\beta}_1
      + x_{i2} \hat{\beta}_2
      + \cdots
      + x_{iK} \hat{\beta}_K
\\
   &= \sum_{k=0}^K
          \hat{\beta}_k x_{ik}
\\
   &= \hat{\beta}_0
      + \sum_{k=1}^K
          \hat{\beta}_k x_{ik}
\tag{3'}
\end{align}

途中式の途中式(クリックで展開)


  • 1: 変数 \mathbf{x}_n とパラメータ \hat{\boldsymbol{\beta}} の内積の式を立てます。
  • 2: ベクトルの要素を明示します。
  • 3: ベクトルの内積(要素ごとの積の和)を計算します。
  • 4: K+1 個の項(変数とパラメータの積)の和を \sum_{k=0}^K でまとめます。
  • 5: (項の形が異なる)0番目の項 \hat{\beta}_0 x_{n0} = \hat{\beta}_0 を総和から取り出します。その他の項の和を \sum_{k=1}^K でまとめます。

 N 個のデータの被説明変数の推定値をまとめて、N 次元ベクトル \hat{\mathbf{y}} とします。

 \displaystyle
\hat{\mathbf{y}}
    = \begin{pmatrix}
          \hat{y}_1 \\ \hat{y}_2 \\ \vdots \\ \hat{y}_N
      \end{pmatrix}

 \hat{\mathbf{y}} は、次の式で求まります。

 \displaystyle
\hat{\mathbf{y}}
    = \mathbf{X} \hat{\boldsymbol{\beta}}
\tag{4}

 行列の要素を明示して計算すると、次の式になります。

 
\begin{align}
\begin{pmatrix}
    \hat{y}_1 \\ \hat{y}_2 \\ \vdots \\ \hat{y}_N
\end{pmatrix}
   &= \begin{pmatrix}
          1      & x_{11} & x_{12} & \cdots & x_{1K} \\
          1      & x_{21} & x_{22} & \cdots & x_{2K} \\
          \vdots & \vdots & \vdots & \ddots & \vdots \\
          1      & x_{N1} & x_{N2} & \cdots & x_{NK}
      \end{pmatrix}
      \begin{pmatrix}
          \hat{\beta}_0 \\ \hat{\beta}_1 \\ \hat{\beta}_2 \\ \vdots \\ \hat{\beta}_K
      \end{pmatrix}
\tag{4}\\
   &= \begin{pmatrix}
          \hat{\beta}_0 + x_{11} \hat{\beta}_1 + x_{12} \hat{\beta}_2 + \cdots + x_{1K} \hat{\beta}_K \\
          \hat{\beta}_0 + x_{21} \hat{\beta}_1 + x_{22} \hat{\beta}_2 + \cdots + x_{2K} \hat{\beta}_K \\
          \vdots \\
          \hat{\beta}_0 + x_{N1} \hat{\beta}_1 + x_{N2} \hat{\beta}_2 + \cdots + x_{NK} \hat{\beta}_K
      \end{pmatrix}
\\
   &= \begin{pmatrix}
          \hat{\beta}_0 + \sum_{k=1}^K \hat{\beta}_k x_{1k} \\
          \hat{\beta}_0 + \sum_{k=1}^K \hat{\beta}_k x_{2k} \\
          \vdots \\
          \hat{\beta}_0 + \sum_{k=1}^K \hat{\beta}_k x_{Nk}
      \end{pmatrix}
\tag{4'}
\end{align}

途中式の途中式(クリックで展開)


  • 1: 変数 \mathbf{X} とパラメータ \hat{\boldsymbol{\beta}} の積の式を立てます。
  • 2: 行列とベクトルの積(各行とベクトルの内積)を計算します。

 各要素が各データにおける式(3')に対応します。
 観測データとして得られた \mathbf{y} を観測値や実現値、推定したパラメータから求めた \hat{\mathbf{y}} を理論値とも呼びます。

 データ n の実現値 y_n と理論値 \hat{y}_n の差を残差 e_n とします。

 \displaystyle
e_n = y_n - \hat{y}_n
\tag{5}

 N 個のデータの残差をまとめて、N 次元ベクトル \mathbf{e} とします。

 \displaystyle
\mathbf{e}
    = \begin{pmatrix}
          e_1 \\ e_2 \\ \vdots \\ e_N
      \end{pmatrix}

 \mathbf{e} は、次の式で計算できます。

 \displaystyle
\mathbf{e}
    = \mathbf{y} - \hat{\mathbf{y}}
\tag{6}

 ベクトルの要素を明示して計算すると、次の式になります。

 
\begin{align}
\begin{pmatrix}
    e_1 \\ e_2 \\ \vdots \\ e_N
\end{pmatrix}
   &= \begin{pmatrix}
          y_1 \\ y_2 \\ \vdots \\ y_N
      \end{pmatrix}
      - \begin{pmatrix}
          \hat{y}_1 \\ \hat{y}_2 \\ \vdots \\ \hat{y}_N
        \end{pmatrix}
\tag{6}\\
   &= \begin{pmatrix}
          y_1 - \hat{y}_1 \\ y_2 - \hat{y}_2 \\ \vdots \\ y_N - \hat{y}_N
      \end{pmatrix}
\tag{6'}
\end{align}

途中式の途中式(クリックで展開)


  • 1: 実現値 \mathbf{y} と理論値 \hat{\mathbf{y}} の差の式を立てます。
  • 2: ベクトルの差(要素ごとの差)を計算します。

 各要素が各データにおける式(5)に対応します。

 以上の推定値なども用いてパラメータを推定します。

スポンサードリンク

計算式

 さらに、線形回帰モデルに関する計算式を求めます。

 残差 \mathbf{e} の式(6)の理論値 \hat{\mathbf{y}} を式(4)で置き換えます。

 
\begin{align}
\mathbf{e}
   &= \mathbf{y} - \hat{\mathbf{y}}
\tag{6}\\
   &= \mathbf{y}
      - \mathbf{X} \hat{\boldsymbol{\beta}}
\tag{7}
\end{align}

 観測値 \mathbf{X}, \mathbf{y} を用いた式に変形しました。

 残差 \mathbf{e} の内積(残差平方和)を計算します。

 \displaystyle
\begin{aligned}
\mathbf{e}^{\top} \mathbf{e}
   &= (\mathbf{y} - \mathbf{X} \hat{\boldsymbol{\beta}})^{\top}
      (\mathbf{y} - \mathbf{X} \hat{\boldsymbol{\beta}})
\\
   &= \mathbf{y}^{\top} \mathbf{y}
      - \mathbf{y}^{\top}
        \mathbf{X} \hat{\boldsymbol{\beta}}
      - (\mathbf{X} \hat{\boldsymbol{\beta}})^{\top}
        \mathbf{y}
      + (\mathbf{X} \hat{\boldsymbol{\beta}})^{\top}
        \mathbf{X} \hat{\boldsymbol{\beta}}
\\
   &= \mathbf{y}^{\top} \mathbf{y}
      - \mathbf{y}^{\top}
        \mathbf{X} \hat{\boldsymbol{\beta}}
      - \hat{\boldsymbol{\beta}}^{\top} \mathbf{X}^{\top}
        \mathbf{y}
      + \hat{\boldsymbol{\beta}}^{\top} \mathbf{X}^{\top}
        \mathbf{X} \hat{\boldsymbol{\beta}}
\\
   &= \mathbf{y}^{\top} \mathbf{y}
      - 2
        \hat{\boldsymbol{\beta}}^{\top} \mathbf{X}^{\top}
        \mathbf{y}
      + \hat{\boldsymbol{\beta}}^{\top} \mathbf{X}^{\top}
        \mathbf{X} \hat{\boldsymbol{\beta}}
\end{aligned}

途中式の途中式(クリックで展開)


  • 1: 式(7)より、\mathbf{e} の内積の式を立てます。
  • 2: 転置の性質 (\mathbf{A} + \mathbf{B})^{\top} = \mathbf{A}^{\top} + \mathbf{B}^{\top} より、括弧を展開します。
  • 3: 転置の性質 (\mathbf{A} \mathbf{B})^{\top} = \mathbf{B}^{\top} \mathbf{A}^{\top} より、括弧を展開します。
  • 4: 中2つの項は二次形式(スカラ)なので、転置できます。

 2つの項が一致するのでまとめます。

 \displaystyle
\begin{aligned}
\mathbf{y}^{\top}
\mathbf{X} \boldsymbol{\beta}
   &= (
          \mathbf{y}^{\top}
          \mathbf{X} \boldsymbol{\beta}
      )^{\top}
\\
   &= \boldsymbol{\beta}^{\top} \mathbf{X}^{\top}
      \mathbf{y}
\end{aligned}


 以上で、線形回帰モデルの定義を確認しました。

 この記事では、線形回帰モデルの仮定を数式で確認しました。次の記事では、ハット行列を確認します。

参考文献

おわりに

  • 2026.07.21:加筆修正の際に「線形回帰モデルのOLSの導出」から記事を分割しました。

 空間回帰モデルの記事の構成と合わせるため、モデルの内容とパラメータ推定の内容で記事を分けました。

 書き始めの段階ではまた短めの記事になるかと思ったのですが、推定値の件をこちらで扱うことにしたら割と長めの記事になりました。そしたら元の記事が短めの記事になるなと思ったのですが、そうでもなさそうです。

 最近、はてなブログのtex記法に仕様変更があり、はてな記法との記号の競合が回避され、アンダーバーなどの前にエスケープキーを追加する必要がなくなりました。
 仕様変更を知ってから初めて投稿するのがこの記事です。markdownファイルからの転載作業の手間がかなり軽減されました。欲を言えばまだ色々ありますが、ひとまず喜ぶことにします。

 この記事の投稿日に公開されたばってん少女隊のライブ映像をどうぞ♪

 エレクトリカル「トライじん」!?この11周年記念ライブは観れてないのですが、全体的にこういう演出だったのでしょうか。「森羅ばっしょー」で歌われる世界観ですか??
 私はこの曲を聴くとまだほろりと涙が🌸

【次の内容】

 ハット行列(射影行列)の性質を数式で確認します。

www.anarchive-beta.com

 線形回帰モデルのOLSを数式で確認します。

www.anarchive-beta.com

 SEMの仮定を数式で確認します。

www.anarchive-beta.com