政策別に各政党のマニフェストをテキストマイニング
前回に引き続き、マニフェストのテキストマイニングで遊んでみます。
今回は2相3元データに対する多次元尺度構成法という、あまり一般的でない解析手法を適用します。
多次元尺度構成法(多次元尺度法)とは。 たとえば、世界の都市を飛行機で移動するときの時間の情報だけをもとに、移動時間の短い都市同士を近くに、移動時間が長い都市は遠くに配置して移動時間ベースの地図をつくることができる方法で、各点間の距離や類似度の情報をもとに、各ポイントの位置を空間にプロットすることができます。簡単にいうとこんなところです。各都市のイメージの類似度をもとにバカ世界地図を構成するのにも似てなくも無いです。
個人差多次元尺度法(Weighted MDS)と呼ばれる方法は、この多次元尺度法を個人間のイメージの違いも同時に分析できるようにした手法で、心理学関連の研究で使われています。w-mdsが各個人間の評価の違いをどう表現するのかというと、全員の共通項となる地図(共通布置空間)を1つ作り、各個人の差を、軸(緯度、経度)へのweightとして表現します。ある人にとっての地図は、共通項となる地図を緯度方向にちょっとだけ縮めたもので、ある人にとっての地図は経度方向に縮尺するとうまく当てはまる。みたいな。
説明むずかしいな。。。詳細はぐぐってください。
で、マニフェストにwmdsを適用して解析して、各政策別に政党間類似具合がうまく見えたら面白いなぁと。
wmdsの解析は、netlibで手に入るsindscalを使いました。
netlib/sindscal
Fortranのソースですので、g77あたりでコンパイルできます。
※indscal/sindcalをより一般化したALSCALがGNU Rで使えたような気がするのですが、どのパッケージに含まれているかみつからなかったのでsindscalで解析しています。
では、プロセスです
1.類似度行列の算出
各党のマニフェストを前回同様ヤフーみんなの政治からこぴってきます。
各政策単位のマニフェストデータを各党ごとにコサイン類似度をとり、行列を作成し、
sindscalのデータフォーマットにおとしこみます。
2.sindscalで解析
コンパイルしたプログラムをsindscalのプログラムに標準入力から渡して解析修了です。
これで政党の共通布置空間と各政策の傾向を表すWeightを得ることができます。
3.GNU Rで作図
GNU Rにデータを引っ張って作図します。
sindscalのデータフォーマットはIntroduction to Multidimensional Scalingか、Three Way Scaling
という本に載っています。 Web上ではみあたらないので、欲しい方がいたら詳細upします。
結果です。
VAF比の動きをみると5次くらいまでのデータを見たほうがよさそうなんですが、視覚化できないので2次までを求めました。
sindscalの解析結果は次のように出てきます。
この解析は、各党の”主張”が似ているかどうかを算出しているわけではなく、各党で”似たような単語”が使われているかどうかによって空間配置を行っているという点にご注意ください。
まず、共通布置空間(STIMULUS MATRIX)とWeight MatrixをPlotします。
Stimulus spaceが全体的な傾向の布置になり、自民・改革クラブ、社民・共産・民主党が近い距離にプロットされています。前回のクラスタ分析・MDSの結果とは若干違う傾向がでてますが、新党日本の位置はかわらないようです。
Weight matrixは各政策に対し、各党ごとに特徴が出ているかどうかといった事をあらわしています。特に子育てに関する政策に関しては差が顕著に出ています。
次に、各政党の共通布置空間に、政策別のWeightをかけた政策の個別空間をつくっていきます。
続きを読む…