最小二乗法の学びなおし【補足】
先日上げた、「最小二乗法の学びなおし」に以下のような説明を上げました。
$(X^{T}X)^{-1}$ が存在するということは、$X^{T}X$ が正則であるということ。正則であるということは、$X^{T}X$ の列ベクトルは一次独立であるということ。$X^{T}X$ の列ベクトルが一次独立であるならば、$X$ の列ベクトルもまた一次独立である。
この説明に対して、ある方から、「$X$ の列ベクトルが一次独立であるなら、$X^{T}X$ の列ベクトルは一次独立であるのは自明だけど、その逆は成り立つのか計算してみて」といわれたのでやってみました。
証明
[証明]
◎$X^{T}X$ の列ベクトルが一次独立ならば, $X$ の列ベクトルが一次独立であることを示す.
\begin{align}
X &= \begin{bmatrix}
x_{11} & x_{12} \\
x_{21} & x_{22}
\end{bmatrix}
とする. \\\\
X^{T}X &= \begin{bmatrix}
x_{11} & x_{12} \\
x_{21} & x_{22}
\end{bmatrix}^T
\begin{bmatrix}
x_{11} & x_{12} \\
x_{21} & x_{22}
\end{bmatrix} \\
&= \begin{bmatrix}
x_{11}^2 + x_{21}^2 & x_{11}x_{12} + x_{21}x_{22} \\
x_{11}x_{12} + x_{21}x_{22} & x_{12}^2 + x_{22}^2
\end{bmatrix} \\
\end{align}
$X^{T}X$ の列ベクトルを, $x_{1}, x_{2}$ を使って表す.
\begin{align}
\boldsymbol{x}_{1} &= \begin{bmatrix}
x_{11}^2 + x_{21}^2\\
x_{11}x_{12} + x_{21}x_{22}
\end{bmatrix} \\
\boldsymbol{x}_{2} &= \begin{bmatrix}
x_{11}x_{12} + x_{21}x_{22}\\
x_{12}^2 + x_{22}^2
\end{bmatrix} \\
\end{align}
ここで, $X^{T}X$ の列ベクトルは一次独立であるので,
a\boldsymbol{x}_{1} + b\boldsymbol{x}_{2} = 0 \\
となるような, $(a, b)$ は $0$ しかない.
$x_{1}, x_{2}$ を変形すると
a\begin{bmatrix}
x_{11} & x_{12} \\
x_{21} & x_{22}
\end{bmatrix}^T
\begin{bmatrix}
x_{11}\\
x_{21}
\end{bmatrix} +
b\begin{bmatrix}
x_{11} & x_{12} \\
x_{21} & x_{22}
\end{bmatrix}^T
\begin{bmatrix}
x_{12}\\
x_{22}
\end{bmatrix} = 0 \\
\begin{bmatrix}
x_{11} & x_{12} \\
x_{21} & x_{22}
\end{bmatrix}^T(
a\begin{bmatrix}
x_{11}\\
x_{21}
\end{bmatrix} +
b\begin{bmatrix}
x_{12}\\
x_{22}
\end{bmatrix}) = 0
ここで左辺を $0$ にするには $a\begin{bmatrix}
x_{11}\
x_{21}
\end{bmatrix} +
b\begin{bmatrix}
x_{12}\
x_{22}
\end{bmatrix}$ が $0$ になればいい. ここで $(a, b)$ が $0$ 以外の解をもつことは, 先ほど導いた $a=b=0$ に矛盾する. すなわち, $a\begin{bmatrix}
x_{11}\
x_{21}
\end{bmatrix} +
b\begin{bmatrix}
x_{12}\
x_{22}
\end{bmatrix}$ を $0$ にするような $(a, b)$ は $0$ しかない.
$a=b=0$ ということは, ベクトル $x_{1}, x_{2}$ が一次独立であることを表す.これは$X$ の列ベクトルが一次独立であることと同値である.
以上のことにより, $X^{T}X$ の列ベクトルが一次独立ならば, $X$ の列ベクトルが一次独立であることが示された.
[終]
【追記】
コメントで成分を用いない証明を @nabla 様が教えてくださいましたので、ここに掲載したいと思います。教えていただきありがとうございます。
行列のランクをJuliaで確認
ある行列がフルランクならその行列の列ベクトルは一次独立になります。行列のランクはJuliaで簡単に調べることができます。
以下の行列のランクの例は簡約化した行列の主成分の数から考えるとわかりやすいです。詳しくは、下のリンクの「行列のランク ≦ 行/列の数」についてよく読んでください。
julia> using LinearAlgebra
julia> A = [
2 3 4
4 6 8
9 1 1
]
julia> rank(A) # 2
julia> B = [
1 3 4
2 4 2
4 1 1
]
julia> rank(B) # 3
julia> rank(A'A) # 2
julia> rank(B'B) # 3