Aritalab:Lecture/Math/LR

From Metabolomics.JP
< Aritalab:Lecture | Math(Difference between revisions)
Jump to: navigation, search
m (行列のランク落ち)
(最小二乗法)
 
Line 10: Line 10:
 
ここでは最適パラメータを求める最小二乗法を単回帰を使って説明します。
 
ここでは最適パラメータを求める最小二乗法を単回帰を使って説明します。
  
 +
<big>
 
: y<sub>1</sub> = b<sub>0</sub> + x<sub>1</sub> b<sub>1</sub> + r<sub>1</sub>
 
: y<sub>1</sub> = b<sub>0</sub> + x<sub>1</sub> b<sub>1</sub> + r<sub>1</sub>
 
: y<sub>2</sub> = b<sub>0</sub> + x<sub>2</sub> b<sub>1</sub> + r<sub>2</sub>
 
: y<sub>2</sub> = b<sub>0</sub> + x<sub>2</sub> b<sub>1</sub> + r<sub>2</sub>
 
:  :          :
 
:  :          :
 
: y<sub>n</sub> = b<sub>0</sub> + x<sub>n</sub> b<sub>1</sub> + r<sub>n</sub>
 
: y<sub>n</sub> = b<sub>0</sub> + x<sub>n</sub> b<sub>1</sub> + r<sub>n</sub>
 +
</big>
 +
 +
{| class="wikitable" style="float:right"
 +
|-
 +
|y ... 目的となる変数(説明される側なので従属変数とよぶ)
 +
|-
 +
|x ... 説明に使う変数(原因となる側なので独立変数とよぶ)
 +
|-
 +
|r ... 残差 (説明しきれない部分)
 +
|}
 +
 +
というデータがあると仮定しましょう。y と x が与えられ、ここで決めたいのは最適な b<sub>0</sub>, b<sub>1</sub>  の値です。r は残差 (residual) といって、y<sub>i</sub> と b<sub>0</sub> + x<sub>i</sub>b<sub>1</sub> との差を表します。
  
というデータがあると仮定しましょう。y と x が与えられ、ここで決めたいのは最適な b<sub>0</sub>, b<sub>1</sub>  の値です。r は残差 (residual) といって、y と b<sub>0</sub> + x<sub>1</sub>b<sub>1</sub> との差を表します。
 
 
最小二乗法とは残差の二乗和 S を最小化するアプローチです。
 
最小二乗法とは残差の二乗和 S を最小化するアプローチです。
: S = <big>Σ</big><sub>i</sub> f<sub>i</sub><sup>2</sup>
+
<big>
S の最小値を満たす b<sub>0</sub> と b<sub>1</sub> を求めるには、S を b<sub>0</sub> と b<sub>1</sub> のそれぞれで偏微分して 0 とおいた連立方程式を解けばOKです。つまり
+
: S = <big>Σ</big><sub>i</sub> r<sub>i</sub><sup>2</sup> = <big>Σ</big> (b<sub>0</sub> + x<sub>i</sub>b<sub>1</sub> - y<sub>i</sub>)<sup>2</sup>
 +
</big>
 +
S を b<sub>0</sub> と b<sub>1</sub> による二次関数とみなします。S の最小値を満たす b<sub>0</sub> と b<sub>1</sub> を求めるには、S を b<sub>0</sub> と b<sub>1</sub> のそれぞれで(偏)微分して 0 とおいた連立方程式を解けばOKです。二乗の式をそのまま微分します。
 +
 
 +
:∂S/∂b<sub>0</sub> = ∑ 2( b<sub>0</sub> + x b<sub>1</sub> - y)  = 0
 +
:∂S/∂b<sub>1</sub> = ∑ 2( b<sub>0</sub> + x b<sub>1</sub> - y) x = 0
 +
 
 +
ここから、 y = x b<sub>1</sub> + b<sub>0</sub> という式が出てきます。つまり、目的の  b<sub>0</sub> と b<sub>1</sub> は
  
 
: y<sub>1</sub> = b<sub>0</sub> + x<sub>1</sub> b<sub>1</sub>
 
: y<sub>1</sub> = b<sub>0</sub> + x<sub>1</sub> b<sub>1</sub>
Line 26: Line 45:
  
 
を満たすことになります。これを行列の形に書くと
 
を満たすことになります。これを行列の形に書くと
:<math>\mathbf{y = Xb} \quad \mathbf{y} = \begin{bmatrix} y_1\\ y_2\\ \vdots&\vdots\\ y_n \end{bmatrix}, \mathbf{X} = \begin{bmatrix} 1&x_1\\ 1&x_2\\ \vdots&\vdots\\ 1&x_n \end{bmatrix}, \mathbf{b} = \begin{bmatrix} b_0\\ b_1 \end{bmatrix}</math>
+
:<math>\mathbf{y = Xb} \quad \mathbf{y} = \begin{bmatrix} y_1\\ y_2\\ \vdots \\ y_n \end{bmatrix}, \mathbf{X} = \begin{bmatrix} 1&x_1\\ 1&x_2\\ \vdots&\vdots\\ 1&x_n \end{bmatrix}, \mathbf{b} = \begin{bmatrix} b_0\\ b_1 \end{bmatrix}</math>
 +
 
 
これから逆行列を用いて <b>b</b> を表せば
 
これから逆行列を用いて <b>b</b> を表せば
 +
 +
<big>
 
:<b>b = (X<sup>T</sup>X)<sup>-1</sup>X<sup>T</sup>y</b>
 
:<b>b = (X<sup>T</sup>X)<sup>-1</sup>X<sup>T</sup>y</b>
となります。重回帰の場合も同じ式になります(行列 <b>X</b> の列数が増えるだけ)。
+
</big>
 +
 
 +
となります(X<sup>T</sup>については、以下の一般逆行列の説明を参照)。重回帰の場合も同じ式になります(行列 <b>X</b> の列数が増えるだけ)。
 
与えられた y, x からこの式を計算するだけで自動的に b の値が求まるのです。
 
与えられた y, x からこの式を計算するだけで自動的に b の値が求まるのです。
  
 
;[[Aritalab:Lecture/Math/LR/R_LM| R による実習ページ]]
 
;[[Aritalab:Lecture/Math/LR/R_LM| R による実習ページ]]
 +
 +
===一般逆行列===
 +
すべての行列に逆行列があるわけではありません。そもそも正方(X,Y方向が同じ段数)でないと、逆行列はありません。しかし普通の行列は正方ではありません。そこで正方行列を無理やり作る方法が、自分の転置行列をかけるやり方です。 <b>X<sup>T</sup>X</b> は必ず正方になります。そこで <b>y = X b</b> の左側から <b>X<sup>T</sup></b> をかけて
 +
 +
:<b>X<sup>T</sup> y = (X<sup>T</sup>X) b </b>
 +
 +
この式から b を求めることができます。
 +
 
===行列のランク落ち===
 
===行列のランク落ち===
 
線形代数における行列のランク落ちとは、線形独立な変数の数が次数より少ない状態を指します。
 
線形代数における行列のランク落ちとは、線形独立な変数の数が次数より少ない状態を指します。
 
回帰分析でいうと、説明変数間に非常に相関が高いものがある場合です(共線性といいます)。
 
回帰分析でいうと、説明変数間に非常に相関が高いものがある場合です(共線性といいます)。
 
このとき、逆行列の計算も上手くいかず、 <b>b</b> の値がおかしくなります。
 
このとき、逆行列の計算も上手くいかず、 <b>b</b> の値がおかしくなります。

Latest revision as of 11:45, 8 September 2016

Contents

[edit] 回帰分析

回帰分析には 1 変量の単回帰 (univariate linear regression) と多変量の重回帰 (multivariate linear regression) があります。モデルしたい変量を y (目的変量)、説明に使う変量を x 、係数を b で表します( b0 は定数項)。

(重)回帰モデル 
y = b0 + x1 b1 + x2 b2 + ... + xn bn (つまり y を複数の変量 x1~xn の線形結合でモデルするやり方)

特に 1 変数の場合を単回帰モデルといいます。

[edit] 最小二乗法

ここでは最適パラメータを求める最小二乗法を単回帰を使って説明します。

y1 = b0 + x1 b1 + r1
y2 = b0 + x2 b1 + r2
 :  :
yn = b0 + xn b1 + rn

y ... 目的となる変数(説明される側なので従属変数とよぶ)
x ... 説明に使う変数(原因となる側なので独立変数とよぶ)
r ... 残差 (説明しきれない部分)

というデータがあると仮定しましょう。y と x が与えられ、ここで決めたいのは最適な b0, b1 の値です。r は残差 (residual) といって、yi と b0 + xib1 との差を表します。

最小二乗法とは残差の二乗和 S を最小化するアプローチです。

S = Σi ri2 = Σ (b0 + xib1 - yi)2

S を b0 と b1 による二次関数とみなします。S の最小値を満たす b0 と b1 を求めるには、S を b0 と b1 のそれぞれで(偏)微分して 0 とおいた連立方程式を解けばOKです。二乗の式をそのまま微分します。

∂S/∂b0 = ∑ 2( b0 + x b1 - y) = 0
∂S/∂b1 = ∑ 2( b0 + x b1 - y) x = 0

ここから、 y = x b1 + b0 という式が出てきます。つまり、目的の b0 と b1

y1 = b0 + x1 b1
y2 = b0 + x2 b1
 :  :
yn = b0 + xn b1

を満たすことになります。これを行列の形に書くと

\mathbf{y = Xb} \quad \mathbf{y} = \begin{bmatrix} y_1\\ y_2\\ \vdots \\ y_n \end{bmatrix}, \mathbf{X} = \begin{bmatrix} 1&x_1\\ 1&x_2\\ \vdots&\vdots\\ 1&x_n \end{bmatrix}, \mathbf{b} = \begin{bmatrix} b_0\\ b_1 \end{bmatrix}

これから逆行列を用いて b を表せば

b = (XTX)-1XTy

となります(XTについては、以下の一般逆行列の説明を参照)。重回帰の場合も同じ式になります(行列 X の列数が増えるだけ)。 与えられた y, x からこの式を計算するだけで自動的に b の値が求まるのです。

R による実習ページ

[edit] 一般逆行列

すべての行列に逆行列があるわけではありません。そもそも正方(X,Y方向が同じ段数)でないと、逆行列はありません。しかし普通の行列は正方ではありません。そこで正方行列を無理やり作る方法が、自分の転置行列をかけるやり方です。 XTX は必ず正方になります。そこで y = X b の左側から XT をかけて

XT y = (XTX) b

この式から b を求めることができます。

[edit] 行列のランク落ち

線形代数における行列のランク落ちとは、線形独立な変数の数が次数より少ない状態を指します。 回帰分析でいうと、説明変数間に非常に相関が高いものがある場合です(共線性といいます)。 このとき、逆行列の計算も上手くいかず、 b の値がおかしくなります。

Personal tools
Namespaces

Variants
Actions
Navigation
metabolites
Toolbox