対応分析(第2回) スモールアンケートデータで実践

対応分析(第2回) スモールアンケートデータで実践

対応分析の基本形

とにかくやってみる

 対応分析とは?数量化理論Ⅲ類の分析手法です。対応分析・数量化理論Ⅲ類をネットで調べても数学的すぎて理解できない!私自身がそうなのです。数学的素養ほぼゼロの私が対応分析・数量化理論Ⅲ類を説明することは不可能なのです。それでも実践しているうちに、何となくこんな感じのものかなぁというのがみえてきました。

サンプルデータ

テーブルごとスクレイピングして実践してみてください。

好きな食べ物年代回答者
イチゴ10代A
イチゴ10代B
ミカン20代C
ミカン20代D
バナナ30代E
バナナ30代F

 データは好きな果物を聞いたアンケート調査結果です。
 回答者は6名、回答者の年代がわかっていて、10代×2名、20代×2名、30代×2名です。

 分析をするまでもなく10代はイチゴ、20代はミカン、30代はバナナが好きであることは明白です。それでもやってみます。

アイテムスコア

 上表を使いアイテムスコアを算出します。
 ご覧のとおり上表には値がありません。数量化理論Ⅲ類は数値ではないデータを分析きできる、たとえば文字列を数値化して分析する手法ことができます。

 10代20代30代
イチゴ200
バナナ002
ミカン020

・好きな果物が行
・年代が列のクロス集計表をつくります。
 数値は好きな果物の出現回数です。

 Rでアイテムスコアを算出します。Rの関数は「corresp」です。

 [成分1][成分2]
イチゴ0-1.41421
バナナ-1.224750.707107
ミカン1.2247450.707107

 算出したアイテムスコアです。
 アイテムスコアの
・「成分1」を横軸「x」
・「成分2」を縦軸「y」にして散布図を描きます。

 プロットする前に「イチゴ」「ミカン」「バナナ」がプロットされる座標から、2点間の距離を算出してみます。

 距離=√(x1―x2)^2+(y1―y2)^2

  x差2乗y差2乗距離
イチゴバナナ1.54.52.44949
イチゴミカン1.54.52.44949
バナナミカン6.00000102.44949

・「イチゴ」と「ミカン」
・「イチゴ」と「バナナ」
・「ミカン」と「バナナ」
 これらの距離は全く同じになります。そうなると、これら3点をプロットすると、3点は正三角形を描くはずです。

カテゴリースコア
 イチゴバナナミカン
10代200
20代002
30代020

 今度は年代を行にしたクロス集計表をつくります。
 同じようにRへ投入してカテゴリースコアを算出します。

 [成分1][成分2]
10代0-1.41421
20代-1.224750.707107
30代1.2247450.707107

 アイテムスコアと全く同じ数値になりました。当然ですが各2点間の距離も等しくなります。

描画します
テキストマイニング 対応分析

 アイテムスコアを青い丸、カテゴリースコアは赤い四角でプロットしました。

 イチゴのアイテムスコアと10代のカテゴリースコアはまったくの同一値ですから、同じ位置へプロットされます。

結果

・10代はイチゴ
・20代はミカン
・30代はバナナが好きな果物である、という結果です。

 予想通り当たり前の結果です。データを見たときにすでにわかっていました。サンプルデータは6行だけでした。もしもデータがビッグで数百数千もあると見ただけではわかりません。

複数回答MA

サンプルデータ
好きな食べ物年代回答者
イチゴ、バナナ10代A
イチゴ10代B
ミカン、イチゴ20代C
ミカン20代D
バナナ、イチゴ30代E
バナナ30代F
複数回答を許可したとき
テキストマイニング 対応分析

 回答者Aにバナナ、回答者Cにイチゴ、回答者Eにもイチゴを加えました。

青い丸(アイテムスコア)のサイズ変化

 青い丸のサイズに変化があります。
 青い丸のサイズは全体のなかでそれぞれの「語」が出現する回数に比例して大きく・小さくなります。サイズが変わったということは、「語」の出現回数が変わったということです。

 イチゴの出現回数が2回増加し4回へ、バナナは1回増加し3回へ、ミカンは2回で変化なし。
 サイズが大きい順に並べると「イチゴ」「バナナ」「ミカン」の順にまりますね。

赤い四角(カテゴリースコア)の位置変化

 青い丸も赤い四角も前回から位置が変化しています。
 ただし、赤い四角の位置は変化しましたが2点間の距離は同じなのです。

 赤い四角3点は相変わらず正三角形を描き、各辺の長さに変化はありません。座標は変化したが、赤い四角と赤い四角の位置関係という意味では全く同一です。

 [成分1][成分2]  
10代-0.53783-1.30795  
20代1.4016340.188205  
30代-0.863811.119748  
     
  x差2乗y差2乗距離
10代20代3.761512.2384912.44949
10代30代0.1062635.8937372.44949
20代30代5.1322270.8677732.44949

 各赤い四角の位置関係が変化しません。このあたりに対応分析と主成分分析との違いがあるようです。

 対応分析では似ているところはより近く、違うところはより遠く表現します。

 外部変数が3の場合はできるだけ正三角形を描き、画面全体で表現するように工夫されているみたいです。

青い丸の位置変化
 [成分1][成分2]  
イチゴ-0.16877-1.10522  
バナナ-0.947871.04954  
ミカン1.7593560.636134  
     
  x差2乗y差2乗距離
イチゴバナナ0.6069994.6430012.291288
イチゴミカン3.7176793.0323212.598076
バナナミカン7.3290950.1709052.738613

 見た目で位置の変化を読みとることができるので、距離も変化していることを確認しました。

 ここで重要なのは距離が示す数値ではなく、位置と距離の両方が変化しているということだけです。
 距離が違うのでプロットしたときに正三角形にはなりません。

青い丸の位置関係が変化する理由

 位置の変化は「語」が出現する場所(データが属しているカテゴリー)が変化したからです。

 10代だけに出現していたイチゴが20代と30代にも出現します。

 従って20代を示す赤い四角と30代を示す赤い四角に引っ張られて原点ゼロ方向に移動します。
 出現回数は10代で2回、20代で1回、30代で1回ですからまだ10代に近い位置にあります。「語」が出現する回数が多い青い四角に近づきます。

 バナナは30代から20代方向へ動きます。
 出現回数は30代で2回、10代で1回ですから30代に近いポジションになります。20代には出現しないので20代の方向へは移動しません。

ミカンが出現するのは20代だけです。
 従って、原点ゼロからみて20代の赤い四角の外側へ移動します。移動すると言うより、はじき出されるといったほうが的確かもしれません。

このように対応分析は
データの数量と場所をあらわすこと

このように考えてよいと思います。

主成分分析との違い

主成分分析
 10代20代30代
イチゴ211
バナナ102
ミカン020

 主成分分析用のデータです。複数回答MAのデータをクロス集計しました。このデータをRへ読み込んで結果を算出します。

#CSVデータの読み込み
d = read.csv('ファイルパス/ファイル名.csv',head=T,row.names=1)
#主成分分析実行
d_pr = prcomp(d, scale=T)
# 主成分分析結果を表示
d_pr
#結果をプロット
biplot(d_pr)
主成分分析結果
R 主成分分析


  

 対応分析とは違う描画になりました。年代の位置関係が正三角形ではありません。

 20代と30代が、まったく反対側にプロットされるのは、
・20代には「バナナ」が含まれない
・30代には「ミカン」が含まれない
 つまり共通する成分が「イチゴ」ただ1個だけだからです。

 10代と30代が近いのは、ともに「ミカン」を含まず「イチゴ」「バナナ」の2個が共通成分になっているからです。

 対応分析結果と比較すると「イチゴ」「ミカン」「バナナ」の位置が違います。これは対応分析が関連性が強くて似ているものが近くになるよに値を算出しているからです。

 元の情報をそのままビジュアル化するのが主成分分析,似ているとか違うとかを見つけるのが対応分析ですね。

>対応分析(第1回) テキストマイニングツールの仕事