Aritalab:Lecture/Math/LR

From Metabolomics.JP
< Aritalab:Lecture | Math(Difference between revisions)
Jump to: navigation, search
(Created page with "==回帰分析== 回帰分析には 1 変量の単回帰 (univariate linear regression) と多変量の重回帰 (multivariate linear regression) があります。モデル...")
 
(最小二乗法)
 
(4 intermediate revisions by one user not shown)
Line 1: Line 1:
 
==回帰分析==
 
==回帰分析==
  
回帰分析には 1 変量の単回帰 (univariate linear regression) と多変量の重回帰 (multivariate linear regression) があります。モデルしたい変量を y (目的変量)、説明に使う変量を x 、係数を b で表します。
+
回帰分析には 1 変量の単回帰 (univariate linear regression) と多変量の重回帰 (multivariate linear regression) があります。モデルしたい変量を y (目的変量)、説明に使う変量を x 、係数を b で表します( b<sub>0</sub> は定数項)。
  
 
;(重)回帰モデル : y = b<sub>0</sub> + x<sub>1</sub> b<sub>1</sub> + x<sub>2</sub> b<sub>2</sub> + ... + x<sub>n</sub> b<sub>n</sub> (つまり y を複数の変量 x<sub>1</sub>~x<sub>n</sub> の線形結合でモデルするやり方)
 
;(重)回帰モデル : y = b<sub>0</sub> + x<sub>1</sub> b<sub>1</sub> + x<sub>2</sub> b<sub>2</sub> + ... + x<sub>n</sub> b<sub>n</sub> (つまり y を複数の変量 x<sub>1</sub>~x<sub>n</sub> の線形結合でモデルするやり方)
  
y を目的変量、x を説明変量、b を回帰係数といいます。 b<sub>0</sub> は定数項です。特に 1 変数の場合を単回帰モデルといいます。ここでは最適パラメータを求める最小二乗法の説明のために単回帰を使います。
+
特に 1 変数の場合を単回帰モデルといいます。
  
 +
==最小二乗法==
 +
ここでは最適パラメータを求める最小二乗法を単回帰を使って説明します。
 +
 +
<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>1</sub>
+
: y<sub>2</sub> = b<sub>0</sub> + x<sub>2</sub> b<sub>1</sub> + r<sub>2</sub>
: y<sub>3</sub> = b<sub>0</sub> + x<sub>3</sub> b<sub>1</sub> + r<sub>1</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> との差を表します。
 +
 
 +
最小二乗法とは残差の二乗和 S を最小化するアプローチです。
 +
<big>
 +
: 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>2</sub> = b<sub>0</sub> + x<sub>2</sub> b<sub>1</sub>
 +
:  :          :
 +
: y<sub>n</sub> = b<sub>0</sub> + x<sub>n</sub> b<sub>1</sub>
 +
 
 +
を満たすことになります。これを行列の形に書くと
 +
:<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> を表せば
 +
 
 +
<big>
 +
:<b>b = (X<sup>T</sup>X)<sup>-1</sup>X<sup>T</sup>y</b>
 +
</big>
 +
 
 +
となります(X<sup>T</sup>については、以下の一般逆行列の説明を参照)。重回帰の場合も同じ式になります(行列 <b>X</b> の列数が増えるだけ)。
 +
与えられた y, x からこの式を計算するだけで自動的に b の値が求まるのです。
 +
 
 +
;[[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> の値がおかしくなります。

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