★ 本記事のテーマ
★おさえておきたいポイント
- ①データ事例
- ➁平方和(全変動、群間変動)、相関比を計算
- ➂線形判別関数の係数導出方法1
- ➃線形判別関数の係数導出方法2
- ➄線形判別関数を図示する
- ⑥線形判別関数とデータの値の比較
![]() |
【QC検定®合格】「多変量解析」問題集を販売します! 内容は、①回帰分析 単回帰分析・重回帰分析 の復習、➁ 主成分分析、➂判別分析、➃因子分析、➄数量化分析の5章全42題! |
Excelや公式は暗記不要!
自力で導出できるぜ!
まずは、
①データ事例
2次元データで線形判別関数を作る
以下のデータを用意しましょう。このデータの線形判別関数を作っていきます。
| 群 | \(x_1\) | \(x_2\) |
| 1群 | 4 | 8 |
| 6 | 10 | |
| 2 | 12 | |
| 2群 | 10 | 16 |
| 5 | 10 | |
| 8 | 12 | |
| 7 | 16 |
なお、グラフで図示すると下図になります。 2つの群に分けたので、線を引いて区別してみましょう。この線の直線式を求めます。

➁平方和(全変動、群間変動)、相関比を計算
線形判別関数\(Z\)を定義
関連記事のとおり、2次元における線形判別関数\(Z\)を定義します。
![]() |
線形判別関数Zの導出がわかる(2次元、平方和の分解) 線形判別関数を導出するための平方和の計算、平方和の分解を解説します。多変量解析を学ぶ人は必読! |
●線形判別関数\(Z\)
\(Z\)=\(a_1 x_1 +a_2 x_2\)
各値に代入しましょう。下の結果になります。
| 群 | x1 | x2 | Z | 群平均 |
| 1群 | 4 | 8 | 4\(a_1\)+8\(a_2\) | 4\(a_1\)+10\(a_2\) |
| 6 | 10 | 6\(a_1\)+10\(a_2\) | ||
| 2 | 12 | 2\(a_1\)+12\(a_2\) | ||
| 2群 | 10 | 16 | 10\(a_1\)+16\(a_2\) | 7.5\(a_1\)+13.5\(a_2\) |
| 5 | 10 | 5\(a_1\)+10\(a_2\) | ||
| 8 | 12 | 8\(a_1\)+12\(a_2\) | ||
| 7 | 16 | 7\(a_1\)+16\(a_2\) | ||
| – | – | – | 全体の平均 | 6\(a_1\)+12\(a_2\) |
平方和(全変動、群間変動)を計算
上表と関連記事を使って、平方和を計算します。
★ 全変動を計算
全変動\(S_T\)は
\(S\)=\(\sum_{i=1}^{7}(Z-\bar{Z})^2\)
=\(((4a_1+8a_2)-(6a_1+12a_2))^2\)
+\(((6a_1+10a_2)-(6a_1+12a_2))^2\)
+\(((2a_1+12a_2)-(6a_1+12a_2))^2\)
+\(((10a_1+16a_2)-(6a_1+12a_2))^2\)
+\(((5a_1+10a_2)-(6a_1+12a_2))^2\)
+\(((8a_1+12a_2)-(6a_1+12a_2))^2\)
+\(((7a_1+16a_2)-(6a_1+12a_2))^2\)
=\(42a_1^2 + 60a_1 a_2 +56 a_2^2\)
=(式1)
★群間変動を計算
群間変動\(S_B\)は
\(S_B\)=\(\sum_{i=1}^{3}(\bar{Z_1}-\bar{Z})^2\)+\(\sum_{i=1}^{4}(\bar{Z_2}-\bar{Z})^2\)
=3\((\bar{Z_1}-\bar{Z})^2\)+4\((\bar{Z_2}-\bar{Z})^2\)
=3\(((4a_1+10a_2)-(6a_1+12a_2))^2\)+4\(((7.5a_1+13.5a_2)-(6a_1+12a_2))^2\)
=21\((a_1 + a_2)^2\)
=(式2)
相関比を導出
線形判別関数は相関比を最大にする(最も区別できる条件)として計算します。
相関比\(F\)=\(\frac{S_B}{S_T}\)
と定義します。
相関比\(F\)=\(\frac{S_B}{S_T}\)
=\(\frac{21(a_1 + a_2)^2}{42a_1^2 + 60a_1 a_2 +56 a_2^2}\)
ここから、線形判別関数を導出する方法が2つあります。結果は同じになりますが紹介します。
- 相関比が最大になる条件を計算
- ラグランジュの未定乗数を使って計算
➂線形判別関数の係数導出方法1
単純に\(F\)が最大,最小になる条件を計算します。これは2変数限定の解法です。
\(\frac{a_1}{a_2}\)=\(k\)とおき、相関比\(F(k)\)を再定義します。
\(F\)= \(\frac{21((\frac{a_1}{a_2}) + 1)^2}{42(\frac{a_1}{a_2})^2 + 60(\frac{a_1}{a_2}) +56}\)
\(F(k)\)= \(\frac{21(k + 1)^2}{42k^2 + 60k +56}\)
これを微分します。高3数学レベルですね。
\(F’(k)\)=\(\frac{42(k+1)(分母)-(分子)(84k+60))}{分母^2}\)
で、\(F’(k)\)=0となる\(k\)が欲しいので、\(F’(k)\)の分子のみ取り出します。
\(F’(k)\)の分子
=\(42(k+1)(42k^2+60k+56)-21(k+1)^2(84k+60)\)=0
\(2(k+1)(2(42k^2+60k+56)-(k+1)(84k+60))\)=0
\((k+1)(24k-52)\)=0
よって、
\(k\)=-1,\(\frac{13}{6}\)
\(F(k\)のグラフを描くと、確かに\(k\)=―1,\(\frac{13}{6}\)の時がそれぞれ最小、最大になります。

次は、ラグランジュの未定乗数法を使った解法を解説します
。
➃線形判別関数の係数導出方法2
ラグランジュの未定乗数法
もう1つはラグランジュの未定乗数法を使う方法です。主成分分析で必須の解法ですね。
ここで、1つ仮定を入れます。
ここで全変動\(S_T\)=1と仮定したときの、
群間変動\(S_B\)の最大値を考える。
全変動\(S_T\)=\(42a_1^2 + 60a_1 a_2 +56 a_2^2\)=1としたときの
群間変動\(S_B\)=21\((a_1 + a_2)^2\)の最小値、最大値を考えます。
ラグランジュの未定乗数法から固有方程式へ
関数\(F\)を
\(F(a_1,a_2\)=21\((a_1 + a_2)^2\)-\(λ(42a_1^2 + 60a_1 a_2 +56 a_2^2-1)\)
を定義して、偏微分=0の式を立てます。その後、固有方程式と流れますね。
●\(\displaystyle \frac{\partial F(a_1,a_2)}{\partial a_1} \)=\(42(a_1 + a_2)-λ(84a_1 + 60a_2)\)=0
●\(\displaystyle \frac{\partial F(a_1,a_2)}{\partial a_2} \)=\(42(a_1 + a_2)-λ(60a_1 + 112a_2)\)=0
行列表記しましょう。
\(\left(
\begin{array}{cccc}
7-14λ & 7-10λ \\
21-30λ & 21-56λ \\
\end{array}
\right)
\)\(
\left(
\begin{array}{c}
a \\
b\\
\end{array}
\right)
\)=\(
\left(
\begin{array}{c}
0 \\
0\\
\end{array}
\right)
\)
\((7-14λ)(21-56λ)-(7-10λ)(21-30λ)\)=0
\(λ(484λ-266)\)=0
よって、固有値λは
λ=0,\(\frac{133}{242}\)
となります。
固有ベクトルを算出
固有ベクトルから\(a,b)を計算します。
★固有値0のとき
固有値0のときは、
\(\left(
\begin{array}{cccc}
7 & 7 \\
21 & 21 \\
\end{array}
\right)
\)\(
\left(
\begin{array}{c}
a\\
b\\
\end{array}
\right)
\)=\(
\left(
\begin{array}{c}
0 \\
0\\
\end{array}
\right)
\)
より、
●\(a+b\)=0
となるので、
\(
\left(
\begin{array}{c}
a\\
b\\
\end{array}
\right)
\)=\(
\left(
\begin{array}{c}
1 \\
-1\\
\end{array}
\right)
\)
となります。
★固有値\(\frac{133}{242}\)のとき
固有値\(\frac{133}{242}\)のときは、
\(\left(
\begin{array}{cccc}
7-14\frac{133}{242} & 7-10\frac{133}{242} \\
21-30\frac{133}{242} & 21-56\frac{133}{242} \\
\end{array}
\right)
\)\(
\left(
\begin{array}{c}
a\\
b\\
\end{array}
\right)
\)=\(
\left(
\begin{array}{c}
0 \\
0\\
\end{array}
\right)
\)
より、
●\(-\frac{168}{242}a+\frac{364}{242}b\)=0
となるので、168と364はそれぞれ28で割り切れるから
\(
\left(
\begin{array}{c}
a\\
b\\
\end{array}
\right)
\)=\(
\left(
\begin{array}{c}
13 \\
6\\
\end{array}
\right)
\)
となります。
線形判別関数の係数比の結果をまとめると
➂では相関比を\(k=\frac{a_2}{a_1}\)として極値を求め、
➃では、ラグランジュの未定乗数法から固有ベクトルを求めました。
➂の方法では、\(k=\frac{a_2}{a_1}\)=-1,\(\frac{13}{6}\)
➃の方法からも\(\frac{a_2}{a_1}\)=-1,\(\frac{13}{6}\)と
計算結果は一致しましたね。
変数が3以上になると
ラグランジュの未定乗数法しか解けないですね。
➄線形判別関数を計算する
係数比から線形判別関数を作る
さて、係数比は
\(\frac{a_2}{a_1}\)=-1,\(\frac{13}{6}\)
となりました。
ここで、あえて、
●\(a_1\)=1,\(a_2\)=-1
●\(a_1\)=13,\(a_2\)=6
と置いて、線形判別関数を
●\(Z_1\)=\(a_1 x_1\)+\(a_2 x_2\)+\(b_1\)
●\(Z_2\)=\(a_1 x_1\)+\(a_2 x_2\)+\(b_2\)
に値を代入して、切片\(b_1,b_2\)を決めましょう。
●\(Z_1\)=\( x_1\)-\( x_2\)+\(b_1\)
●\(Z_2\)=13\( x_1\)+6\(x_2\)+\(b_2\)
データの平均を線形判別関数\(Z\)は通る
切片\(b_1,b_2\)を決める条件は、
データの平均(6,10)を線形判別関数\(Z\)は通る
として、代入すると
●\(Z_1\)=0=6-12+\(b_1\)
●\(Z_2\)=0=13×6+6×12+\(b_2\)
より
\(b_1\)=6,\(b_2\)=-150
となるので、線形判別関数はそれぞれ
●\(Z_1\)=\( x_1\)-\( x_2\)+6
●\(Z_2\)=13\( x_1\)+6\(x_2\)-150
となります。
⑥線形判別関数とデータの値の比較
線形判別関数\(Z\)=0の直線とデータを比較
では、グラフに図示してみましょう。うまく判別できたでしょうか?
まず、全部のデータをグラフで図示します。
2本の線形判別関数の直線があり、互いにデータの平均(\(\bar{x},\bar{y}\)で交わっています。

次に線形判別関数\(Z_1\)=0の判別を見ましょう。
結構、判別ミスっているのがわかりますね。

次に、線形判別関数\(Z_2\)=0の判別を見ましょう。
結構、正しく判別できているがわかりますね。

どうも、
●判別正誤が悪い場合(解が極小値の場合\(k\)=-1)
と
●判別正誤が良い場合(解が極大値の場合\(k\)=\(\frac{13}{6}\))
の2本ができるようですね。
線形判別関数の判別正誤率を確認
判別正誤率を表でまとめます。
| 群 | x1 | x2 | Z1 | Z1 群 | Z1 正誤 | Z2 | Z2 群 | Z2 正誤 |
| 1 | 4 | 8 | 2 | 2群 | × | -50 | 1群 | ○ |
| – | 6 | 10 | 2 | 2群 | × | -12 | 1群 | ○ |
| – | 2 | 12 | -4 | 1群 | ○ | -52 | 1群 | ○ |
| 2 | 10 | 16 | 0 | ー | × | 76 | 2群 | × |
| – | 5 | 10 | 1 | 2群 | ○ | -25 | 1群 | ○ |
| – | 8 | 12 | 2 | 2群 | ○ | 26 | 2群 | ○ |
| – | 7 | 16 | -3 | 1群 | × | 37 | 2群 | ○ |
| – | – | – | – | 1群 | 25% | – | 1群 | 100% |
| – | – | – | – | 2群 | 50% | – | 2群 | 75% |
確かに、\(Z_1\)の判別正誤率は低く、\(Z_2\)は高いですね。
線形判別関数を計算した後も、正しく判別できるかはちゃんとチェックしましょう。
まとめ
まとめ
「線形判別関数が計算できる」を解説しました。
- ①データ事例
- ➁平方和(全変動、群間変動)、相関比を計算
- ➂線形判別関数の係数導出方法1
- ➃線形判別関数の係数導出方法2
- ➄線形判別関数を図示する
- ⑥線形判別関数とデータの値の比較




































