静岡理工科大学 総合情報学部 (by 菅沼) 菅沼ホーム 目次 索引

多変量解析

  1. 1.多変量解析とは
  2. 2.重回帰分析
  3. 3.正準相関分析
  4. 4.主成分分析
  5. 5.因子分析
  6. 6.判別分析
  7. 7.クラスター分析
    1. 7.1 類似度と距離
    2. 7.2 クラスター構成方法
  8. 8.多変量解析と数量化
1.多変量解析とは

  多変量解析法とは,互いに関係のある多変量(他種類の特性値)のデータが持つ特徴を要約し,かつ,目的に応じて総合するための手法です.

  多変量解析には,その名のように多くの変数が出現しますが,大きく 2 つの種類に分類できます.一つは,原因とみなす変数であり,説明変数と呼ばれます.他の一つは,結果として扱いたい変数であり,基準変数目的変数)と呼ばれます.

  また,データは,その性質により,以下のように分類できます.

  1. 量的データ: 数量(数値)で表されるもの(「気温」,「所得」,「身長」,・・・)

    1. 間隔尺度: 差が計れる,つまり,測定単位が存在する(例:摂氏温度).

    2. 比率尺度比例尺度): 間隔尺度の中で,測定単位と絶対原点がある(例:長さ,重さ).

     

  2. 質的データ: 数量で表されないデータ(「好き,嫌い」,「買う,買わない」,「国籍」,・・・)

    1. 名義尺度: 同等関係がわかる.つまり,等しいものには同じ数字を与え,違ったものには違った数字を与えるといった方式でデータを扱う.与えられた数字の大小には意味がない.

    2. 順序尺度: より上位のものには大きな数字を,下位のものには小さな数字を与えるといった方式でデータを扱う(ただし,差には意味がない).たとえば,「嫌い」,「普通」,「好き」に,各々,0,1,2 を与えるといった方法である.

  多変量解析には多くの種類が存在します.多変量解析の目的,データの種類によって分類すれば,以下に示す表のようになります.

基準変数
(目的変数)
多変量解析の目的 説明変数
量的 質的
あり 量的 予測式(関係式)の発見
量の推定
重回帰分析
正準相関分析
数量化分析T類
質的 標本の分類
質の推定
クラスター分析
判別分析
クラスター分析
数量化分析U類
なし 多変量の統合整理(減らす)
変量の分類
代表変量の発見
主成分分析
因子分析
数量化分析V,W類

2.重回帰分析

  N 組のデータ,

(yi, xi1, xi2, ・・・, xin)  i = 1, 2, ・・・, N

が与えられたとき,これらのデータを元にして,y の値を,x1, x2, ・・・, xn の線形結合,

y = b0 + b1x1 + b2x2 + ・・・ + bnxn

によって予測する方法について考えてみます.

  回帰直線による予測(最小 2 乗法による予測)は,n = 1 の場合に相当します.重回帰分析は,それを,n > 1 の場合に対して拡張したものです.回帰直線の係数を決めた場合と同様に,最小 2 乗誤差,

s = [y - Xb]T[y - Xb]

を最小にする b は,以下のようにして得られます.

ただし,

y = [y1 y2 ・・・ yN]T
b = [b0 b1 b2 ・・・ bn]T

とします.得られた b のことを偏回帰係数(の推定値)と呼びます.

例1 : 偏回帰係数を計算するためのプログラム例(→ )を挙げておきます.最初に,説明変数の数(n)とデータの数(N)を与え,続いて,N 組のデータ(最初が,目的変数の値)を与えれば実行できます.

  プログラム例に添付したデータに対して,偏回帰係数は以下のようになります.
b0  46.592245
b1  0.015153
b2  0.436445
b3  -0.389181
			
  x = [y, x1, x2, x3] としたとき,この例で使用したデータの平均値,及び,相関行列 R は,

x の平均値 = [49.56 47.49 49.13 49.32]

のようになっています.相関行列からも明らかなように,y と,x2 及び x3 との間に強い相関があります.そして,その結果が,偏回帰係数にも現れています.

3.正準相関分析

  3 変数以上が存在したとき,2 変数間同士の関係は相関係数によって知ることができます.しかし,いくつかの変数の組同士の関係を,変数間同士の関係だけから推論することは非常に難しくなります.例えば,q 個の変数が存在したとき,それらの変数の r 個の組と,残りの (q - r) 個の組との関係を得たいような場合です.

  正準相関分析は,このような場合に使用される方法です.今,q 個の変数,

x1, x2, ・・・, xq

で表されるデータがあったとします.このとき,

r 個の変数の組: x1, x2, ・・・, xr
s(= q - r ≧ r)個の変数の組: xr+1, xr+2, ・・・, xr+s

を考え,それらの線形結合から成る 2 つの変数,

y = a1x1 + a2x2 + ・・・ + arxr
z = b1xr+1 + b2xr+2 + ・・・ + bsxr+s

を考え,y と z との間の関係によって,2 つの組間の関係を見ることにします.ただし,y と z との間の相関係数 ryz を最大にするように上式の各係数を定めるものとします.

  各係数を求めるのに先立ち,以下に示すようなベクトル,及び,行列を定義しておきます.

ただし,C11,および,C22 は,X1,および,X2分散共分散行列,また,C12 = C21T は,X1X2 の分散共分散行列とします.さらに,以下の条件を付加しておきます.

E[X1] = E[X2] = 0,  V[y] = aTC11a = 1,  V[z] = bTC22b = 1

  y と z の相関係数 ryz は,上記の条件(y と z の分散が 1 であるため,相関係数の分母が 1 になる)より,以下のようになります.

ryz = aTC12b

結局,y,及び,z の分散が 1 であるという条件の下で,上式を最大にする a, b を求めることになります.つまり,ラグランジュの未定乗数法により,以下の式を最大にすればよいことになります.

f = aTC12b - 0.5 λ (aTC11a - 1) - 0.5 μ (bTC22b - 1)

上式を, a, b で偏微分して 0 とおくと,

となります.b を消去するため,(1) 式の両辺に μ,(2) 式に左から C12C22-1 をかけると,

μ C12b - λμ C11a = 0
C12C22-1C21a - μ C12C22-1C22b = 0   ∴ C12C22-1C21a - μ C12b = 0

となりますので,2 つの式を加えることによって以下の結果が得られます.

C12C22-1C21a - λμ C11a = 0

左から C11-1 をかけることによって,結局,以下のようになります.

(C11-1C12C22-1C21a - λμ I) a = 0

上式から明らかなように,λμ は,C11-1C12C22-1C21固有値であり,a は,対応する固有ベクトルとなります.

  次に,λμ について考えてみます.(1) 式に左から aT をかけると以下のようになります.

aTC12b - λ aTC11a = 0   ∴ aTC12b = ryz = λ

同様に,(2) 式の転置を取った後,右から b をかけると以下のようになります.

aTC12b - μ bTC22b = 0   ∴ aTC12b = ryz = μ

結局,λ = μ であり,λμ = λ2 となります.また,b は,得られた固有値 λ2,固有ベクトル a と,(2) 式より,以下のようにして計算できます.

b = C22-1C21 a / λ

  以上の結果をまとめると,以下のようになります.

(C11-1C12C22-1C21 - λ2 I) a = 0  ただし,aTC11a = 1
   λ2 は,C11-1C12C22-1C21 の固有値であり,a は,対応する固有ベクトル
b = C22-1C21 a / λ  ただし,bTC22b = 1
ryz = λ

  以上のようにして得られた変量 y, z を正準変量,また,その各係数を正準相関係数と呼びます.絶対値が最も大きな固有値に対応する正準変量,正準相関係数を第 1 正準変量,第 1 正準相関係数,また,2 番目に大きな固有値に対応するものを第 2 正準変量,第 2 正準相関係数,・・・と呼びます.

例2 : 正準相関分析を行うためのプログラム例(→ )を挙げておきます.最初に,各組の変数の数(r と s, r ≦ s)とデータの数(n)を与え,続いて,n 組のデータを与えれば実行できます.

  例1 と同じデータ(ただし,y を x1,x1 を x2,x2 を x3,x3 を x4 と読み替える)を使用して,正準相関分析を行ってみます.最初に,x1 と(x2, x3, x4)の組に対して正準相関分析を行うと以下のようになります.x1 と x3,及び,x4 の間に強い相関があるため,x3,及び,x4 に対する係数が大きくなっています.また,相関係数は,その定義より,必ず,各変数間の相関係数より大きな値になります.正準相関分析では,各データの平均値を 0 としていますので,重回帰分析における b0 に対応する部分がありませんが,基本的に,重回帰分析と同様の結果が得られています.なお,分散共分散行列 C は右のようになっています.
相関係数 0.904770
  a 0.048528
  b 0.000813 0.023409 -0.020874
			
  次に,(x1, x2) と (x3, x4) に対して,正準相関分析を行うと以下のようになります.第 1 正準相関係数(0.904657)に対応する部分を見ると,データ間の相関から予想したような結果が得られています.第 2 正準相関係数は,第 1 正準相関係数に比較して非常に小さな値となっており,余り意味のないものとなっています.
相関係数 0.904657
   a 0.048516 0.000138
   b 0.023406 -0.020945
相関係数 0.041613
   a -0.004599 0.050679
   b -0.047911 -0.049606
			

4.主成分分析

  今,以下に示すように,p 個の変量に対して,各 N 個のデータが得られたとします.

変量: x1, x2, ・・・, xp
N 個のデータ: x1i, x2i, ・・・, xpi  i = 1, 2, ・・・, N

これらの変量には,互いに何らかの関係があったとします.このとき,これらのデータの変動に与える因子を一つの変量に要約し,その特徴を把握しようとするのが主成分分析です.

  主成分分析では,影響を与える変量を,p 個の変量の線形結合,

z = a1x1 + a2x2 + ・・・ + apxp = aTx
   ただし,a = [a1 a2 ・・・ ap]T, x = [x1 x2 ・・・ xp]T

で表し,‖a‖ = 1 ( a の大きさが 1 )の条件の下で,z の分散が最大になる( z の変動が最も大きくなる)ように各 ai の値を決めます.このようにして決定された各 ai を a11, a12, ・・・, a1p としたとき,

z1 = a11x1 + a12x2 + ・・・ + a1pxp

を,第 1 主成分と呼びます.同様に,‖a‖ = 1 で,かつ,z1 とは無相関な z の内で,最大の分散を持つ

z2 = a21x1 + a22x2 + ・・・ + a2pxp

第 2 主成分と呼びます.以下,同様に,第 3 主成分以下も定義されます.

  では,実際に,第 n 主成分を求めてみます.まず,z の分散は,以下のようになります.

V[z] = V[aTx] = aT V[x] a = aT C a

ただし,C は,分散共分散行列です.一般に, 基準化データに対する分散共分散行列を使用します.なお,基準化データとは,データの平均値 μ と標準偏差 σ を求めた後,各データを,以下の式で基準化したデータのことを言います.

(xi - μ) / σ

  ‖a‖ = 1 の条件の下で,分散の最大値を求めるには,ラグランジュの未定乗数法より,

v = aTCa - λ (aTa - 1)

を最大にすればよいことになります.そこで,a で微分し,0 とおくことにより,以下の結果が得られます.

Ca - λa = 0  ∴|C - λI| = 0

この結果より,λ は,C固有値であり,a は,対応する固有ベクトルであることが分かります.また,上式に左から aT をかけると,

aTCa - λaTa = 0  ∴aTCa = λ

となります.つまり,λ は,z の分散となります.以上の結果より,C の固有値に対する固有ベクトルを,固有値が大きい順に求めていけば,それらが,第 1 主成分,第 2 主成分,・・・ となることになります.

  分散が大きければ大きいほど,各変量は,その主成分の影響を強く受けることになりますので,小さな分散に対する主成分を計算してもほとんど意味を持ちません.そこで,以下の式によって,累積寄与率を定義し,一般に,累積寄与率が 0.8 程度までの主成分を考慮します.

    tr(C): トレース.行列 C の主対角線要素の和であり,固有値の和に等しい

  各主成分と変量 xi の相関係数を因子負荷量と呼びます.基準化データを使用した場合は,第 k 主成分と変量 xi との因子負荷量は,以下のようにして計算できます.

例3 : 主成分分析を行うためのプログラム例(→ )を挙げておきます.最初に,変数の数(p)とデータの数(n)を与え,続いて,n 組のデータを与えれば実行できます.

  再び,例1 と同じデータ(ただし,y を x1,x1 を x2,x2 を x3,x3 を x4 と読み替える)を使用します.主成分分析を行うと,以下に示すような結果になります(第 1 主成分から順には並べてありません).なお,分散共分散行列 C は右のようになっています.
主成分 0.118306 係数 0.796646 -0.008174 -0.462969 0.388520
主成分 0.987518 係数 -0.050663 0.995047 -0.080488 0.028908
主成分 2.551440 係数 0.601096 0.092426 0.563442 -0.559172
主成分 0.342736 係数 0.038354 0.035656 0.679496 0.731808
			
  この結果の第 1 主成分(2.551440)を見ますと,互いに相関が強い変量 x1, x3, 及び, x4から構成され,また,第 2 主成分は,それらの変量と相関が少ない変量 x2 からなっているのがよく分かります.

5.因子分析

  因子分析は,主成分分析と非常に似ています.主成分分析は,データの変動に与える因子を一つの変量に要約し,その特徴を把握しようとするのです.しかし,一般に,データ内には誤差が存在します.そこで,因子分析では,その誤差を除去して因子を抽出しようとします.

  今,以下に示すように,p 個の変量に対して,各 N 個のデータが得られたとします.

変量: x = [x1 x2 ・・・ xp]T
N 個のデータ: x1i, x2i, ・・・, xpi  i = 1, 2, ・・・, N

このとき,各変量は,共通因子と誤差によって,以下のように表現されると仮定します.

x = Af + e

ただし,

f = [f1 f2 ・・・ fm]T
e = [e1 e2 ・・・ ep]T  特殊因子(誤差)
とし,A因子行列

[a1i a2i ・・・ api]T  i = 1, 2, ・・・, m

を,fi に対する共通因子負荷量といいます.

  fi と fj(i ≠ j),fi と ej,および,ei と ej(i ≠ j)には相関がなく,また,fi の分散は 1 であるとすると,x分散共分散行列 C は,以下のようになります(データは,基準化されているものする).

C = V[x] = V[Af + e] = A V[f] AT + V[e] = AAT + E = R + E

ただし,

R = AAT
   hi = Σj aij2  共通性と呼ぶ

とします.因子分析は,R から A を求めることになります.

  R固有値を大きい順に λi(i = 1, 2, ・・・, p),対応する固有ベクトルbi とすると,k 番目の因子負荷量 ak は,主成分分析の場合と同様に,

となります.しかし,共通性 hi が未知ですので,直接 R の固有値を計算できません.そこで,何らかの方法によって hi を計算する必要があります.計算方法としては,様々な方法が存在しますが,ここでは,主因子法について説明します.主因子法のアルゴリズムは,以下に示すとおりです.

  1. hi を適当な値に初期設定する.

  2. R から因子負荷量を計算する.因子負荷量の計算には,R の固有値の大きい方から順に m 個の固有値と固有ベクトルを利用する.

  3. 因子負荷量から共通性を計算する.もし,|新たに計算した共通性 - 前回の共通性| < ε であれば,

    1. 終了.

    そうでなければ,

    1. R の対角要素を,新たに計算した共通性で置き換えて,2 へ戻る.

例4 : 因子分析を行うためのプログラム例(→ )を挙げておきます.最初に,共通因子負荷量の数(m),変数の数(p),及び,データの数(n)を与え,続いて,n 組のデータを与えれば実行できます.

  再び,例1 と同じデータ(ただし,y を x1,x1 を x2,x2 を x3,x3 を x4 と読み替える)を使用します.因子分析を行うと,以下に示すような結果になります.主成分分析の結果と非常によく似た結果が得られています.なお,分散共分散行列 C は右のようになっています.
固有値 2.360858 共通因子負荷量 1.012595 0.161506 0.818013 -0.800175
固有値 0.984701 共通因子負荷量 -0.072858 0.986512 -0.070533 0.034812
			

6.判別分析

  判別分析は,以下のような場合に使用されます.例えば,2 種類の集団に対して,複数の変量(n 個とする)に対するデータが得られていたとします.このとき,新しく得られたあるデータ x に対して,このデータがどちらの集団に属するのか判別したいような場合です.

  概念的に,どのような判断を下すべきかは,明らかだと思います.誤った判断(集団 1 に属しているのに,集団 2 に属していると判断するような場合や,または,その逆の場合)する確率をできるだけ小さくすればよいわけです.

  以下,各集団における変量の確率密度関数は,それぞれ,f1(x) 及び f2(x) であるとします.このとき,各判断が行われる確率は,dx = dx1dx2・・・dxn とすると,以下のようになります.

P(1|1) = ∫G1f1(x)dx : 集団 1 に属するものが,集団 1 に属すると正しく判断される確率
P(2|2) = ∫G2f2(x)dx : 集団 2 に属するものが,集団 2 に属すると正しく判断される確率
P(2|1) = ∫G2f1(x)dx : 集団 1 に属するデータが,集団 2 に属すると判断される確率
P(1|2) = ∫G1f2(x)dx : 集団 2 に属するデータが,集団 1 に属すると判断される確率

  従って,今,

C(2|1) > 0 : 集団 1 に属するにもかかわらず,集団 2 に属すると判断されたときの損失
C(1|2) > 0 : 集団 2 に属するにもかかわらず,集団 1 に属すると判断されたときの損失

とすると,誤って判断されたときの損失の期待値は,

C(2|1)・P(1)・P(2|1) + C(1|2)・P(2)・P(1|2)
  = C(2|1)・P(1)∫G2f1(x)dx + C(1|2)・P(2)∫G1f2(x)dx
  = ∫G2(C(2|1)・P(1)f1(x) - C(1|2)・P(2)f2(x))dx + C(1|2)・P(2)∫Sf2(x)dx
  = ∫G1(C(1|2)・P(2)f2(x) - C(2|1)・P(1)f1(x))dx + C(2|1)・P(1)∫Sf1(x)dx
      S は,標本空間全体

となります.第 2 項は定数ですので,上式は,第 1 項の値によって決まります.従って,

C(1|2)・P(2)f2(x) = C(2|1)・P(1)f1(x)

となる場合は,いずれと判断しても損失は同じになります.そうでない場合は,以下のように判断することになります.

C(1|2)・P(2)f2(x) ≦ C(2|1)・P(1)f1(x) : 集団 1 に属していると判断
C(1|2)・P(2)f2(x) > C(2|1)・P(1)f1(x) : 集団 2 に属していると判断

7.クラスター分析

  クラスター分析は,与えられたデータを,それらの間の類似度や距離を基準として,いくつかのグループに分類するための手法です.

7.1 類似度と距離

  2 つのデータ間の類似度や距離は,様々な方法で定義可能です.また,データの性質(連続量,離散値,・・・)によっても異なります.その代表的な方法は以下に示す通りです.なお,以下の説明において,変量の数を n とし,2 つのデータを以下のように表現します.

x = [x1 x2 ・・・ xn]T
y = [y1 y2 ・・・ yn]T

  1. 連続量で表されるデータ

    1. ユークリッド距離  d2 = Σ (xi - yi)2

    2. 重み付きユークリッド距離  d2 = Σ wi (xi - yi)2

    3. マハラノビスの距離  d2 = (x - y)T C-1 (x - y)  C: 分散共分散行列

    4. 内積による類似度  sxy = xT y

  2. カテゴリーデータ(各変量の値が 0 または 1 )

    以下の説明における変数の意味:

    • a = Σ xkyk   データ xy において,共に 1 となる変量の個数
    • b = Σ xk(1 - yk)   データ xで 1,データ y で 0 となる変量の個数
    • c = Σ (1 - xk)yk   データ x で 0,データ y で 1 となる変量の個数
    • d = Σ (1 - xk)(1 - yk)   データ xy において,共に 0 となる変量の個数
            → n = a + b + c + d

  3. 順位データ

      順位データとは,例えば,n 種類のものに対して,各人がそのものに対する好みを 1 から n の値で答えるような場合に得られるデータです.従って,各データは,1,2,・・・,n のいずれかになっていることになります.

      順位データに対しては,一般に,順位で表現された値を,連続な値に変換し,T で述べた方法を適用するか,または,以下に示すような順位相関係数を使用する方法が使用されます.

    1. Spearmanの順位相関係数

    2. Kendallの順位相関係数

         ただし,C は,以下のような数値とします.まず,データ x を,[1 2 ・・・ n]T となるように各変量を入れ替えます.次に,この順序になるように,データ y を並べ替えます.そして,その結果を,[1 2 ・・・ n]T となるように並べ替えるのにかかった入れ替え回数を C とします.

7.2 クラスター構成方法

  クラスターを構成する方法としては,大きく分けて,階層的に構成していく方法と非階層的に構成していく方法とがあります.ここでは,階層的に構成する方法について説明します.

  データの数が N,かつ,分類したいクラスター数が L である場合,その基本的なアルゴリズムは以下に示す通りです.

  1. クラスター数 M = N とする

  2. クラスター(データ)間の類似度(距離)を計算する

  3. クラスターの中で最も類似度が大きい(距離が小さい)対を求め,それを 1 つのクラスターに融合する.

  4. M = M - 1 とし,もし,M > L ならば,融合されたクラスターと他のクラスタとの距離を計算し 3 へ戻り,そうでなければ終了する

  上記のアルゴリズムにおいて,クラスター間の類似度(距離)をどのように計算するかによって,以下に示すような手法が存在します.なお,各手法において使用される変数の意味は以下の通りであるとします.

  1. 最短距離法

  2. 最長距離法

  3. メジアン法

    Dko = 0.5 Dio + 0.5 Djo - 0.25 Dij

  4. 重心法

  5. 群平均法

    これは,クラスター間の距離を以下の式によって計算することに相当する.

    ただし,ΣΣ dij2 は,クラスター Ci に属するデータと,クラスター Cj に属するデータ間のユークリッド距離の 2 乗を,すべて加え合わせたものとする.

  6. ウォード法

      クラスターを融合することによって,クラスター Ck の重心まわりの偏差平方和が最小になるように融合する.結局,次の距離が最小になるものを融合する(データ間の距離としては,ユークリッド距離).

例5 : クラスター分析を行うためのプログラム例(→ )を挙げておきます.最初に,クラスター間距離を計算する方法(method),クラスタの数(L,クラスタの数がこの値になったら終了),変数の数(n),及び,データの数(N)を与え,続いて,N 組のデータを与えれば実行できます.

  例として使用したデータは,(N(50, 202), N(50, 202)), (N(30, 152), N(-50, 152)), 及び, (N(-20, 202), N(10, 202)) となるデータを,各々,40,30,及び,30 個発生させたものであり,図示すれば以下のようになります.

  以下に,分類するクラスター数を 9,6,及び,3 に設定した場合に対する実行結果を示しておきます.すべてのデータに対して以下のような結果が出るとは限りません.データの種類によって,最適な分類方法を選ぶべきです.

8.多変量解析と数量化

  例えば,「好き」,「嫌い」のような質的データに対し,数量化して分析した方がよい場合が存在します.そのような場合に使用されるのが,数量化分析です.数量化分析としては,以下のような方法がありますが,詳細については省略します.

  1. 数量化分析T類: 重回帰分析と同じ目的で使用されます
  2. 数量化分析U類: 判別分析と同じ目的で使用されます
  3. 数量化分析V,W類: 主成分分析や因子分析と同じ目的で使用されます

静岡理工科大学 総合情報学部 (by 菅沼) 菅沼ホーム 目次 索引