Politikk og meningsrommet
- 24. August 2023
- #datascience
Vi ser på data fra NRKs 2023 valgomat. Hvor like er partiene? Hvilke partier kan grupperes sammen? Hvilke retninger beskriver politikkens meningsrom best?
Hierarkisk clustering av partier og påstander
Figuren nedenfor viser i hvilken grad \(21\) av Oslo-partiene er enige i \(26\) påstander. Det er \(4\) nivåer av enighet totalt. Mørkegrønt betyr “Helt enig” og hvitt betyr “Helt uenig”. Dataene er hentet fra NRKs valgomat.
Trykk på bildet for å se full størrelse.
Treet over kolonnene er laget ved hjelp av hierarkisk clustering, og forteller oss hvor like partiene er. Eksempelvis er MGD og PS de partiene som er mest like, fordi partiene slås sammen på nederste nivå i treet. Det nest likeste paret er R og SV. På samme måte viser treet over radene hvor likt partiene svarte på påstandene.
Meningsrommet
Hver kolonne i politikkmatrisen \(X\) ovenfor kan tolkes som en vektor i meningsrommet, et \(26\)-dimensjonalt vektorrom. Kan vi beskrive partiene ved hjelp av noen få retninger \(\boldsymbol{u}_i\) i meningsrommet?
La oss ta singulærverdi-dekomposisjonen av politikkmatrisen \(X\) og trunkere:
Vektorene \(\boldsymbol{u}_1\) og \(\boldsymbol{u}_2\) er ortogonale og beskriver meningsrommet. I figuren nedenfor ser vi \(\boldsymbol{u}_1\) og \(\boldsymbol{u}_2\) som to kolonner. Tolkningen er at \(\boldsymbol{u}_1\) beskriver et sett med meninger, der grønn farge i \(\boldsymbol{u}_1\) betyr stor grad av enigheten i påstanden. Meningene til partiene R og SV kan beskrives veldig godt av \(\boldsymbol{u}_1\), mens KON beskrives ikke av \(\boldsymbol{u}_1\).
Matrisen som vises i figuren er ikke \(X\), men rank-\(2\) approksimasjonen \(\lambda_1 \boldsymbol{u}_1 \boldsymbol{v}_1^T + \lambda_2 \boldsymbol{u}_2 \boldsymbol{v}_2^T\). Om vi sammenligner med \(X\) i den første figuren, ser vi at approksimasjonen er rimelig god med tanke på at vi representerer et \(26\) dimensjonalt rom ved hjelp av kun \(2\) vektorer (\(R^2 = 0.57\)).
Legg merke til at fargene ikke kombineres direkte. Hvit farge i rad, ganget med hvit farge i kolonne, blir ikke hvit farge i matrisen. Eksempelvis er \(\boldsymbol{u}_1\) ikke tilhenger å fange CO2-utslipp (påstand 5), derfor har denne cellen hvit farge. Samtidig er ikke DEM enig med \(\boldsymbol{u}_1\), derfor har cellen med tallet \(1\) også en hvit farge. Om \(\boldsymbol{u}_1\) representerer uenighet med en påstand, og et parti igjen er uenig med \(\boldsymbol{u}_1\), så er partiet enig i påstanden. Med andre ord: minus ganger minus blir pluss.
Vi kan tenke på partiene som punkter i rommet som spennes av \(\boldsymbol{u}_1\) og \(\boldsymbol{u}_2\). Jeg kan ikke mye om politikk, så jeg forsøker ikke å tolke \(\boldsymbol{u}_1\) og \(\boldsymbol{u}_2\) i detalj. Om vi plotter partienes score får vi ut noe som gir mening, i den forstand at partier som er nær hverandre er mer enige.
Vi har sett at visualisering kan hjelpe oss med å tolke resultater fra en valgomat. I motsetning til å ta valgomaten og få en personlig score, gir denne analysen et fugleperspektiv på politikken. Lineær algebra er også til stor hjelp, og man kunne nok undervist mye lineær algebra kun med politikkmatrisen \(X\) som utgangspunkt.
Kommentarer og referanser
- For mer informasjon om NRKs valgomater, se artikkelen Slik snekret vi en valgomat for hele landet fra NRKbeta.
- Radene og kolonnene ble sortert ved hjelp av algoritmen beskrevet i artikkelen Fast optimal leaf ordering for hierarchical clustering, som er implementert i
optimal_leaf_ordering
. Artikkelen Matrix Reordering Methods for Table and Network Visualization er også potensielt interessant. - For å få optimal sortering i
seaborn.clustermap
måtte jeg monkey-patche:
import seaborn as sns
from scipy.cluster import hierarchy
def linkage_with_ordering(self):
return hierarchy.linkage(
self.array,
method=self.method,
metric=self.metric,
optimal_ordering=True)
sns.matrix._DendrogramPlotter._calculate_linkage_scipy = linkage_with_ordering
- Om vi beholder en høyere rank i singulærverdi-dekomposisjonen får vi bedre resultater. Rank-\(1\) har \(R^2 = 0.38\), rank-\(2\) har \(R^2 = 0.57\), rank-\(4\) har \(R^2 = 0.75\), rank-\(8\) har \(R^2 = 0.90\), rank-\(16\) har \(R^2 = 0.99\).
- Singulærverdi-dekomposisjonen er bare én av mange måter å redusere dimensjonalitet på. Jeg gjorde også en MDS og NMF, og begge deler ga gode resultater.
- En idé er å prøve å representere et parti som en lineær kombinasjon av de andre.
La \(\boldsymbol{x}_{\text{R}}\) være Rødts plassering i det \(26\)-dimensjonale meningsrommet.
La \(X_{-\text{R}}\) være politikkmatrisen \(X\) med kolonnen for Rødt fjernet.
Kan vi finne en \(\boldsymbol{w}\) slik at:
\begin{align*} X_{-\text{R}} \boldsymbol{w} = [\boldsymbol{x}_{\text{NKP}}, \boldsymbol{x}_{\text{SV}}, \boldsymbol{x}_{\text{AP}}, \ldots ] \boldsymbol{w} \approx \boldsymbol{x}_{\text{R}} \end{align*}Vi kan forsøke å løse optimeringsproblemet:\begin{align} & \underset{\boldsymbol{w}}{\text{minimize}} && \lVert X_{-\text{R}} \boldsymbol{w} - \boldsymbol{x}_{\text{R}} \rVert_2 + \epsilon \lVert \boldsymbol{w} \rVert_2 \\ & \text{subject to} && \boldsymbol{w} \geq \boldsymbol{0} && \end{align}Svaret for Rødt blir at\begin{align} \boldsymbol{x}_{\text{R}} \approx 0.147 \, \boldsymbol{x}_{\text{NKP}} + 0.739 \, \boldsymbol{x}_{\text{SV}} + 0.118 \, \boldsymbol{x}_{\text{SP}} + 0.124 \, \boldsymbol{x}_{\text{BOM}} \end{align}