柏市議会の会派のイデオロギーマップ
柏市議会の会派の政治傾向をPCAで可視化した
December 30, 2018
柏市議会には(きっと他の地方議会でもそうだと思いますが)国政の場における政党のようなもので会派というものがあります。 公明党、日本共産党のように特定の政党と一致する会派もあれば、柏愛倶楽部のように所属議員が特定の政党に限定されない会派もあります。
公明党や日本共産党のように国政の場における政党と一致する会派はイメージがわきますが、そうでないところは初見ではどんな政治傾向なのか想像しにくいです。 各会派の政治傾向がどんなものかを知るには、所属する議員の議会での発言、議会以外での日々の活動などをウォッチすることが一番確実でしょう。 ただ、それをやるにはかなり積極的に情報を取りに行く姿勢が必要です。
もう少し簡単に政治傾向を知る方法ないものか、ということで、議会で審議される議案、請願への投票結果に注目してみました。 同じような投票パターンをしている会派であれば、少なくとも投票における意思決定の傾向は同じとみなせるので、ある程度似たような政治傾向と言えるはずです。 各会派単位での議案、請願への投票結果は柏市議会のサイトにて公開されているので、そのデータを使って各会派の政治傾向を2次元グラフに可視化してみました。
結果です。 自民党の人が多い会派である柏清風と公明党は近く、横軸の逆方向を見ると日本共産党がプロットされていることから、そう外した結果ではなさそうです。 国政の場でも馴染みのある政党との近さから、それ以外の会派の立ち位置もなんとかなく見えてきます。 個人名が出ているのは、無所属議員です。
縦軸の解釈は難しいです。 一人だけ縦軸方向で飛び出している議員がいますが、どの議員とも異なる投票パターンをしているのかもしれません。 各会派、議員が投票した結果で議案の件名を抽出できるようにする予定なので、それを使ってみると何かわかるかもしれません。
以下、解析に使ったデータなどの詳細です。
データ
柏市のサイトには、各定例会で審議された議案、請願の投票結果が公開されています。 例として、平成30年の第4定例会の結果です。 現職議員はH27年の3回目の定例会からなので、それ以降の結果を対象としました。 ウェブページをまるっと解析して抽出したかったのですが、投票結果のテーブルを特定する処理が難しそうだったので、各結果テーブルのhtmlだけをどうにか手動で集めて、そのhtmlに対して結果を抽出するスクリプトを用意しました。
https://gist.github.com/hokuma/3785b1ccaf3bd32ecb983729514a2f6d
上記のscriptをGoogle Colabで実行しています。賛成、反対がテキストかと思いきや全て画像タグになっていたり、定例会によって微妙にタグの組み方が違っていたりするせいでかなり苦労しました。htmlとは別にcsvでも公開してほしいです。。。
また、htmlタグがおかしなところについてはhtmlタグに若干修正した上で解析しています。(pタグで囲まれるべきところがそうなっていない場合など)
解析方法
主成分分析を実施しました。 行を各会派、列を議案、請願として、投票結果を1(賛成)、0(反対)の値として表現する行列を用意し、scikit-learnのsklearn.decomposition.PCAを使って分析しました。 棄権も反対扱いとしています。
第二成分までを使って可視化しました。 寄与率は横軸が0.53664699、縦軸が0.12883713なので、横軸だけでデータの変動の半分程度を説明できていることになります。 縦軸を足すと7割弱です。 ざっくり傾向を掴むには十分ではないでしょうか。
https://gist.github.com/hokuma/660c5533eeaab8b8a1256a2f51020836
参考にした資料
似たようなことが、アメリカのgovtrackというサイトで国政レベルで実施されています。govtrackでは議案に対する議員同士の協賛?(共同して議案を出すこと?)関係に対して主成分分析を行っています。
まとめ
多様な政治傾向を2次元に落とし込むのはざっくりしすぎではありますが、大まかな政治傾向はつかめました。 個人レベルで投票結果が公開されているとなお良いのですが、なぜか会派単位での結果しか公表されていませんでした。なんでだろう? 次は投票結果から議案、請願の件名を探す機能を実装することで、例えば柏清風は賛成しているが柏愛倶楽部は反対している案件はなんだろう?といったことを調査できるようにしていきます。