- 各質問に対して賛成・中立・反対を 1, 0, -1 で表し各政党をベクトル化
- ベクトル間のユークリッド距離を計算
- 多次元尺度構成法で可視化(Pythonで多次元尺度構成法を実装してみる,Excelの散布図のデータにラベルをつける)
ただし以下に注意
- 各質問の重みは考慮していない
- 距離の定義を変えればまったく異なる見え方に
さらに政党と政策との距離も可視化してみた→政党と政策の距離の可視化
以下コード
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# -*- coding: utf-8 -*- | |
import numpy | |
import scipy.spatial | |
# データ読み込み | |
f = open('nihonseiji.txt') | |
head = f.readline() | |
parties = head.strip().split('\t')[1:] | |
vlist = [] | |
for line in f: | |
cols = line.strip().split('\t') | |
matches = [float(col) for col in cols[1:]] | |
vlist.append(matches) | |
A = numpy.vstack(vlist) | |
# 距離行列の計算 | |
r, c = A.shape | |
D = numpy.zeros((c, c)) | |
VI = numpy.linalg.inv(numpy.cov(A)) | |
for i in range(c): | |
for j in range(i, c): | |
u = A[:,i] | |
v = A[:,j] | |
# ユークリッド距離 | |
D[i,j] = D[j,i] = scipy.spatial.distance.euclidean(u, v) | |
# マハラノビス距離 | |
# D[i,j] = D[j,i] = scipy.spatial.distance.mahalanobis(u, v, VI) | |
# 相関行列 | |
# print numpy.corrcoef(A.T)[i,j], | |
# 分散共分散行列 | |
# print numpy.cov(A) | |
# データの個数 | |
N = len(D) | |
# 距離の2乗の行列 (arrayだと要素同士の掛け算になる) | |
S = D * D | |
# 中心化行列 | |
one = numpy.eye(N) - numpy.ones((N,N))/N | |
# ヤング・ハウスホルダー変換 | |
P = - 1.0/2 * one * S * one | |
# スペクトル分解 | |
w,v = numpy.linalg.eig(P) | |
ind = numpy.argsort(w) | |
x1 = ind[-1] # 1番 | |
x2 = ind[-2] # 2番 | |
# print w[x1],w[x2] | |
# 標準されたデータの固有値が求められているので標準偏差を掛けて座標を求める | |
s = P.std(axis=0) | |
w1 = s[x1] | |
w2 = s[x2] | |
X = [] | |
Y = [] | |
for i in range(N): | |
X += [w1*v[i,x1]] | |
Y += [w2*v[i,x2]] | |
print parties[i], w1*v[i,x1], w2*v[i,x2] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
政策 民主党 自由民主党 日本未来の党 公明党 日本維新の会 みんなの党 日本共産党 社会民主党 国民新党 新党大地 新党改革 | |
消費税増税 1 1 -1 1 1 -1 -1 -1 1 -1 1 | |
TPP参加 1 -1 -1 -1 0 1 -1 -1 -1 -1 1 | |
脱原発 1 -1 1 0 -1 1 1 1 -1 1 0 | |
郵政民営化 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 | |
後期高齢者医療制度廃止 1 -1 1 -1 1 1 1 1 0 1 0 | |
児童手当拡充 1 -1 1 0 0 -1 0 1 1 0 1 | |
日米同盟維持 1 1 1 1 1 1 -1 -1 1 0 1 | |
年金一元化 1 -1 1 -1 1 -1 1 1 0 1 -1 | |
道州制導入 -1 1 1 1 1 1 -1 -1 1 0 1 | |
議員定数削減 1 1 1 0 1 0 -1 -1 1 1 1 | |
憲法9条改正 0 1 0 -1 0 1 -1 -1 1 1 1 | |
高校無償化 1 -1 1 1 1 -1 1 1 1 0 0 | |
最低賃金引き上げ 0 -1 0 0 0 0 1 1 0 1 -1 | |
政治献金禁止 -1 -1 0 1 0 1 1 1 -1 1 1 | |
裁判員制度維持 1 1 0 1 0 0 -1 -1 -1 -1 0 | |
マイナンバー導入 1 0 1 0 1 1 -1 -1 1 0 1 | |
尖閣諸島実効支配強化 -1 1 -1 -1 1 0 -1 -1 1 -1 0 | |
外国人参政権付与 1 -1 1 1 -1 -1 1 1 -1 1 0 | |
公共事業継続 -1 1 1 1 -1 -1 -1 -1 1 1 -1 | |
日銀法改正 1 0 1 1 1 1 -1 1 0 0 0 |
- やっつけなのでてきとう
- あとで双対尺度法試してみる
- 一つ前に書いた要約プログラムで連立政権について考えてみる
No comments:
Post a Comment