静粛に、只今統計勉強中

仕事でデータ分析をすることになったバリバリ文系アラフィフのおっさんが、独学で統計の勉強を始めました。

Excel VBAで『Excelで学ぶコレスポンデンス分析』の手順をマクロにしてみた1

今回のネタ元は、こちら。

Excelで学ぶコレスポンデンス分析

Excelで学ぶコレスポンデンス分析

当ブログで高橋信氏の著作を紹介するのは、これで4冊目になりますが *1 、出版年月を見ると『マンガでわかる統計学』 の次に書かれているみたいですね。

 

この本、オーム社の「Excelで学ぶ~」 シリーズの一冊なんですが、どうせなら「マンガでわかる~」シリーズで出してほしかったです。

全212ページ中のほぼ半分にあたる102ページまでが『マンガでわかる統計学』と同じ内容で、損した気分になります。このページ数で井上いろはさんのマンガを読めたら、きっと楽しかったに違いありません。

数量化Ⅲ類の計算方法の説明が途中までで端折られてしまっているのも、残念なところ。

 

気を取り直して、第5章「コレスポンデンス分析」を読み進めますが、やはり計算方法は難解です。ですが、腰を据えて取り組めば、著者の言うとおり Step1 から Step5 までは、なんとか付いていけます。

Step6 は「ラグランジュの未定乗数法」を知らなければ理解できないのですが(したがって私は理解できていないのですが)、あらかじめ与えられる解を受け入れれば、(式変換は複雑を極めますが)Step7 から Step12 まで、計算そのものは進められます。

 

ここまでの理解を概念的には、

コレスポンデンス分析とは、「クロス集計表の各カテゴリー」に「クロス集計表の情報が十分に引き出された値」をプレゼントする分析手法
Excelで学ぶコレスポンデンス分析』高橋信(オーム社)106ページ

と言うそうですが、ピンとくる方いるでしょうか?
私は全然ダメだったので、もう少し噛み砕いてみたいと思います。

下のようなクロス表があったとき、*2
f:id:cyclo-commuter:20180618114822p:plain

「クロス集計表の各カテゴリー」とは、
f:id:cyclo-commuter:20180618115432p:plain

「クロス集計表の情報」とは、
f:id:cyclo-commuter:20180618115619p:plain

で、「クロス集計表の各カテゴリー」に「クロス集計表の情報が十分に引き出された値」をプレゼントするとは、どうやら、クロス集計表の各カテゴリーを数量と見立てて、クロス集計表の情報=度数を元に、相関係数(の最大値)を計算し、その副産物(という言い方は違うかもですが)として導き出される値(のうち1カテゴリーにつき2つ)を、各カテゴリーに当てはめてやる。
ということのようです。

このとき、相関係数の2乗は固有値、 カテゴリーに当てはめる値(の1プロセス手前)は固有ベクトルとして導かれるのだそうですが(Step13)、これらの求め方の説明はありません。(代わりに、付録CD-ROMに固有値算出ソフトが同梱されています。)

最後に、各カテゴリーに当てはめた2つの値を座標に見立てて散布図を作成してあげれば、コレスポンデンス分析は(いちおう)完了となります。

 

今回は、このコレスポンデンス分析の手順をマクロにしてみようというわけです。

付録のCD-ROMには計算のプロセス(関数とか)が入力されたエクセルExcelファイルも入っているので、
f:id:cyclo-commuter:20180618140330p:plain
VBAへの移植は、大筋としてはそう難しくはないでしょう。

ただし、ブラックボックスになってしまっている固有値固有ベクトルの算出はどうにかしなくてはなりません。

どうにかならんかと、例によってネットで検索してみたら、すぐに見つかりました。

エクセルで操る!ヤコビ法による固有値計算、固有ベクトル計算

もう、そのものズバリ!

解説は、残念ながらほとんど理解できませんでしたが、エクセルExcelワークシート上の関数とVBAのソースコードが公開されているので、計算じたいは可能です。

ので、若干のアレンジを加えて、ありがたく使わせていただこうと思います。

*1:以前紹介した3冊はこちら

*2:データは『Excelで学ぶコレスポンデンス分析』から拝借しています。