docs: improve SVD axis analysis with corrected methodology, party sizes, and review fixes

Major corrections:
- Fix PC2 factual error: CU/CDA/SGP/D66 are strongly negative (-13 to -58), not near zero
- Correct methodology: party scores use single-window SVD, not Procrustes pipeline
- Correct centering: global (after stacking), not per-window
- Fix Groep Markuszower misclassification on PC4 (positive, not negative pool)
- Fix D66/PC4-PC5 cross-reference error
- Fix PC8/DENK interpretation (negative = voting against, not absence of focus)

Additions:
- Party sizes (N=) for all 17 parties across all axes
- Party size reliability table (D66=26 to Volt=1)
- All 5 flip values documented (PC3,4,7,9,10), not just PC3
- Vector-space mismatch table (single-window scores vs Procrustes EVR)
- Cautionary '(indicatief label)' on PC7-PC10
- New follow-up steps: bootstrap CIs, dimensionality testing, varimax, external validation
- Softened causal claims (kabinetscrisis correlation, PVV motivations)
- Less normatively loaded PC2 label
main
Sven Geboers 1 month ago
parent fd63585fe5
commit a92315701f
  1. 299
      thoughts/explorer/svd-axis-analysis-2026-03-29.md

@ -1,7 +1,7 @@
# SVD Axis Analysis — Nederlandse Tweede Kamer
**Datum:** 29 maart 2026
**Window:** `current_parliament` (Schoof-kabinet, 2024–heden)
**Methode:** Procrustes-uitgelijnd multi-window SVD, 41 vensters, 150 Kamerleden
**Datum:** 29 maart 2026 (herzien na review)
**Window:** `current_parliament` (Schoof-kabinet, 2024–heden)
**Methode:** Procrustes-uitgelijnd multi-window SVD (EVR), enkelvoudige window SVD (partijscores)
---
@ -9,205 +9,288 @@
### Databronnen
De analyse gebruikt twee databronnen in combinatie:
De analyse combineert twee databronnen die op verschillende manieren zijn gegenereerd:
1. **Motiedata per as** — gegenereerd via `scripts/generate_svd_json.py` voor het venster `current_parliament`. Dit script laadt de SVD-vectoren van moties en selecteert per component de 5 meest positief- en 5 meest negatief-ladende moties. Dit geeft een inhoudelijk beeld van *wat* de as meet.
1. **Motiedata per as** — gegenereerd via `scripts/generate_svd_json.py` voor het venster `current_parliament`. Dit script laadt de SVD-vectoren van moties direct uit de `svd_vectors`-tabel en selecteert per component de 5 meest positief- en 5 meest negatief-ladende moties. Dit zijn **ruwe, enkelvoudige-window SVD-vectoren** — niet Procrustes-uitgelijnd.
2. **Partijenscores per as** — berekend door de SVD-vectoren van alle 150 individuele Kamerleden (die overeenkwamen met `mp_metadata` op naam) te groeperen naar partij en te middelen. Dit geeft een partijcentroïde per component (10 dimensies).
2. **Partijenscores per as** — berekend via `load_party_axis_scores` in `explorer.py`. Deze functie laadt de SVD-vectoren van individuele Kamerleden voor **uitsluitend** het venster `current_parliament`, matcht deze op naam met `mp_metadata` (filter: `tot_en_met IS NULL` voor huidige Kamerleden), groepeert per partij, en middelt. Dit zijn eveneens **ruwe, enkelvoudige-window SVD-vectoren**.
### SVD-pipeline
> **Belangrijk:** Motiescores en partijscores zijn intern consistent — ze komen beide uit dezelfde enkelvoudige SVD-decompositie van het venster `current_parliament`. De componentassen zijn dezelfde.
De onderliggende SVD is **geen enkelvoudige decompositie** op één momentopname, maar een Procrustes-uitgelijnde aggregatie over 41 tijdvensters (jaarlijks en kwartaalgewijs). Voor elk venster worden de MP-vectoren gecentreerd en uitgelijnd op een gemeenschappelijke referentieruimte via orthogonale Procrustes-rotatie. De gecombineerde matrix wordt vervolgens gesvd'd. De **verklaard-variantie-ratios (EVR)** komen uit deze geaggregeerde pipeline — niet uit de ruwe vectoren van één venster.
### SVD-pipeline en verklaard-variantieratios
PC1 = 24.1%, PC2 = 10.4%, PC3 = 7.9% ... PC10 = 2.3%. Samen verklaren de eerste 10 assen ~68% van de variantie in stemgedrag.
De **verklaard-variantie-ratios (EVR)** elders in de app (screeplot, compass) komen uit een *andere* pipeline: `compute_svd_spectrum` in `analysis/political_axis.py`. Deze functie laadt MP-vectoren uit **alle 41 tijdvensters** (11 jaarlijks: 2016–2026, 29 kwartaalvensters: 2019-Q1 t/m 2026-Q1, plus `current_parliament`), lijnt ze uit via orthogonale Procrustes-rotatie (sequentieel, elk venster op het vorige), stapelt ze in één matrix en past **globale centrering** toe (`Mc = M - M.mean(axis=0)`, niet per-window centrering). De SVD op deze gecombineerde matrix levert de EVR-percentages.
**Mismatch:** De EVR-waarden (PC1 = 24.1%, etc.) beschrijven een ándere decompositie dan degene waaruit de partij- en motiescores komen. De componenten in de Procrustes-ruimte kunnen geroteerd zijn t.o.v. de enkelvoudige-window ruimte. In de praktijk is de correlatie vermoedelijk hoog voor de eerste componenten (de dominante structuur is stabiel over vensters), maar voor de kleinere componenten (PC7+) kunnen de assen afwijken. **De EVR-percentages moeten daarom als richtinggevend worden gelezen, niet als exacte maat voor de enkelvoudige-window componenten.**
EVR (Procrustes-pipeline): PC1 = 24.1%, PC2 = 10.4%, PC3 = 7.9%, PC4 = 5.7%, PC5 = 4.3%, PC6 = 3.9%, PC7 = 3.4%, PC8 = 2.8%, PC9 = 2.6%, PC10 = 2.3%. Samen = 67.4%.
### Labelmethode
Voor elk van de 10 assen werd gekeken naar:
- De 5 moties met de hoogste positieve lading (meest positief) en hun inhoud + indiener
- De 5 moties met de hoogste positieve lading en hun inhoud + indiener
- De 5 moties met de hoogste negatieve lading en hun inhoud + indiener
- De partijcentroïden gesorteerd hoog→laag op de betreffende SVD-dimensie
Uit deze combinatie werd een label, uitleg, en pool-beschrijving afgeleid. Het is dus een **interpretatieve** stap: de computer levert de structuur, de analist de betekenis.
Uit deze combinatie werd een label, uitleg, en poolbeschrijving afgeleid. Dit is een **interpretatieve** stap: de computer levert de structuur, de analist de betekenis.
### Partijgroottes
De `current_parliament`-window bevat SVD-vectoren voor 427 Kamerleden (iedereen die in deze parlementaire periode heeft gestemd). Daarvan matchen 150 met `mp_metadata` als huidig actief (`tot_en_met IS NULL`). De grootte per partij is cruciaal voor de betrouwbaarheid van centroïden:
| Partij | N Kamerleden | Betrouwbaarheid |
|--------|-------------|-----------------|
| D66 | 26 | Hoog |
| VVD | 22 | Hoog |
| GroenLinks-PvdA | 20 | Hoog |
| PVV | 19 | Hoog |
| CDA | 18 | Hoog |
| JA21 | 9 | Matig |
| FVD | 7 | Matig |
| Groep Markuszower | 7 | Matig |
| SP | 3 | Laag — centroïde gebaseerd op 3 leden |
| BBB | 3 | Laag |
| ChristenUnie | 3 | Laag |
| SGP | 3 | Laag |
| PvdD | 3 | Laag |
| DENK | 3 | Laag |
| 50PLUS | 2 | Zeer laag — 2 leden |
| Volt | 1 | **Onbetrouwbaar** — 1 lid |
| Lid Keijzer | 1 | **Onbetrouwbaar** — 1 lid |
> **Let op:** Hoge absolute scores bij kleine partijen (bijv. Volt −77 op PC2, SP −67 op PC2) kunnen het gevolg zijn van één of enkele Kamerleden met extreem stemgedrag. Zonder bootstrap-betrouwbaarheidsintervallen kunnen we niet beoordelen of deze centroïden stabiel zijn.
---
## Bevindingen per as
### PC1 — Links-rechts hoofdas (EVR: 24.1%)
### PC1 — Links-rechts hoofdas (EVR: ~24%)
**Positieve pool (hoog):** PVV (54.9), SGP (51.8), VVD (35.2), ChristenUnie (31.0), CDA (11.2)
**Negatieve pool (laag):** PvdD (−23.2), SP (−13.4), DENK (−11.0), GroenLinks-PvdA (−7.5)
**Positieve pool (hoog):** PVV (+54.9, N=19), SGP (+51.8, N=3), VVD (+35.2, N=22), ChristenUnie (+31.0, N=3), CDA (+11.2, N=18)
**Negatieve pool (laag):** PvdD (−23.2, N=3), SP (−13.4, N=3), DENK (−11.0, N=3), GroenLinks-PvdA (−7.5, N=20)
**Midden:** JA21 (+10.5, N=9), FVD (+5.0, N=7), D66 (+4.4, N=26), 50PLUS (+3.3, N=2), Groep Markuszower (+3.2, N=7), BBB (+2.9, N=3), Volt (−3.5, N=1), Lid Keijzer (+1.3, N=1)
**Bevinding:** Dit is de klassieke links-rechts tegenstelling. De motiethema's zijn duidelijk: defensie-uitbreiding (drones, NAVO-verplichtingen, wet financiële defensieverplichtingen), gaswinning en energiecontinuïteit aan de rechterkant; Israël-boycots, huurverlaging, zorgbuurthuizen en het veroordelen van antipersoneelslandmijnen aan de linkerkant.
**Bevinding:** Dit is de klassieke links-rechts tegenstelling. Positieve motiethema's: defensie-uitbreiding (drones, NAVO-verplichtingen, Wet financiële defensieverplichtingen), gaswinning en energiecontinuïteit. Negatieve motiethema's: Israël-boycots, huurverlaging, zorgbuurthuizen, veroordeling van antipersoneelslandmijnen.
**Opvallend:** PVV heeft de *hoogste* score van alle partijen (+54.9), ruim boven SGP (+51.8). Dit plaatst PVV verder rechts dan de traditioneel als rechts beschouwde SGP op deze as. Dat weerspiegelt PVV's stemgedrag voor het huidig kabinetsbeleid: defensieuitbreiding, geen Israel-kritiek, geen sociale uitbreidingen.
**Opvallend:** PVV heeft de hoogste score van alle partijen (+54.9), boven SGP (+51.8). Dit weerspiegelt PVV's stemgedrag als kabinetsdragende partij: consequent meestemmen met defensie-uitbreiding, energiebeleid en het blokkeren van sociale uitbreidingsmoties. Let wel: dit meet *stemgedrag*, niet ideologische positie — PVV kan rechts stemmen als coalitiepartij terwijl de SGP als kleine oppositiepartij selectiever stemt.
**Sterkte:** Zeer hoge EVR (24.1%), stabiel over meerdere vensters. Deze as is het robustst van alle tien.
**Sterkte:** De EVR (~24%) is hoog en stabiel over meerdere vensters. De partijscores zijn ook consistent met bekende posities. Dit is de meest robuuste as.
---
### PC2 — Populistisch nationalisme vs. maatschappelijke verantwoordelijkheid (EVR: 10.4%)
### PC2 — Populistisch nationalisme vs. institutioneel progressivisme (EVR: ~10%)
**Positieve pool:** PVV (17.7), FVD (3.8), Groep Markuszower (2.1), BBB (0.2)
**Negatieve pool:** Volt (−77.4), SP (−67.2), PvdD (−66.7), GroenLinks-PvdA (−63.3), DENK (−59.9)
**Positieve pool (hoog):** PVV (+17.7, N=19), FVD (+3.8, N=7), Groep Markuszower (+2.1, N=7), BBB (+0.2, N=3)
**Midden (~0):** Lid Keijzer (+0.05, N=1), JA21 (−0.4, N=9), 50PLUS (−6.5, N=2)
**Negatieve pool (laag):** Volt (−77.4, N=1), SP (−67.1, N=3), PvdD (−66.6, N=3), GroenLinks-PvdA (−63.3, N=20), DENK (−59.9, N=3), ChristenUnie (−58.5, N=3), SGP (−24.9, N=3), D66 (−23.3, N=26), VVD (−15.1, N=22), CDA (−13.5, N=18)
**Bevinding:** Deze as is *orthogonaal* aan de links-rechts as. Hier verdwijnen partijen als ChristenUnie, CDA, SGP en D66 naar het midden (scores ~0 tot +5), terwijl PVV en FVD positief scoren en het volledige progressieve blok (zowel links als Volt) sterk negatief.
**Bevinding:** Deze as is orthogonaal aan PC1 en toont een fundamenteel andere scheidslijn dan links-rechts. De positieve pool is klein: alleen PVV, FVD, Groep Markuszower en BBB scoren positief — het populistisch-nationalistische bloc. Alle overige partijen scoren negatief, inclusief de traditioneel-rechtse VVD (−15.1), CDA (−13.5) en SGP (−24.9). ChristenUnie scoort zelfs sterk negatief (−58.5).
Motiethema's: + zijde: artsen vrijpleiten voor hydroxychloroquine/ivermectine-voorschriften (anti-wetenschappelijk narratief), Syriërs terugsturen, geen geld aan Jordanië, richtlijn tijdelijke bescherming Oekraïne weigeren. − zijde: digitale toegankelijkheid voor Caribisch Nederland, ethiekprogramma Defensie, zorg voor slachtoffers bombardement Hawija, zorgkwaliteitsstandaarden.
Positieve motiethema's: artsen vrijpleiten voor hydroxychloroquine/ivermectine (anti-institutioneel wetenschapsnarratief), Syriërs terugsturen, geen geld aan Jordanië, richtlijn tijdelijke bescherming Oekraïne weigeren. Negatieve motiethema's: digitale toegankelijkheid Caribisch Nederland, ethiekprogramma Defensie, zorg voor slachtoffers bombardement Hawija, zorgkwaliteitsstandaarden.
**Interpretatie:** De negatieve pool is niet "links" in klassieke zin — het is *maatschappelijk verantwoordelijk*, met steun van CDA, ChristenUnie, D66, maar ook SP en PvdD. De positieve pool is de **populistisch-nationalistische flank** die eurosceptisch is, institutionele wetenschap ter discussie stelt en "Nederland eerst" poneert.
**Interpretatie:** PC2 scheidt het populistisch-nationalistische bloc (PVV/FVD/Groep Markuszower/BBB) van het **volledige overige parlement**. Dit is geen links-rechts verdeling maar een nativistisch-populistisch vs. institutioneel onderscheid. VVD, CDA en SGP staan ondanks hun rechtse PC1-posities stevig aan de negatieve kant — ze delen stemgedrag met GroenLinks-PvdA en D66 op thema's als internationale verantwoordelijkheid, institutionele zorg en wetenschappelijk beleid.
**Opvallend:** De negatieve scores zijn enorm groot vergeleken met PC1 (~60–77 vs. ~10–20 voor de linkse partijen op PC1). Dit suggereert dat PC2 een sterk geconcentreerd cluster drijft: één bloc (PVV/FVD/BBB) staat tegenover bijna iedereen anders.
**Score-asymmetrie:** De negatieve scores zijn veel groter dan de positieve (Volt −77 vs. PVV +18). Dit heeft twee mogelijke verklaringen: (1) het populistische bloc is klein en compact (weinig variatie), terwijl het anti-populistische bloc breed en gespreid is, waardoor het zwaartepunt van de as dichter bij de positieve pool ligt; (2) Volt (N=1), SP (N=3), PvdD (N=3) en ChristenUnie (N=3) hebben kleine fracties — hun extreme negatieve scores kunnen worden gedreven door het individuele stemgedrag van slechts 1–3 Kamerleden. Bootstrap-analyse zou nodig zijn om te bepalen welke verklaring domineert.
**Twijfel:** Het vorige label "maatschappelijke verantwoordelijkheid" voor de negatieve pool was normatief geladen — het impliceerde dat de positieve pool onverantwoordelijk is. Het huidige label "institutioneel progressivisme" is neutraler maar nog steeds een versimpeling van een pool die SGP, VVD en SP samen omvat.
---
### PC3 — Verzorgingsstaat vs. bezuinigingen en marktwerking (EVR: 7.9%)
### PC3 — Verzorgingsstaat vs. bezuinigingen en marktwerking (EVR: ~8%)
**Positieve pool:** PVV (29.5), SP (27.9), PvdD (27.9), DENK (25.3), GroenLinks-PvdA (20.1)
**Negatieve pool:** VVD (−25.8), SGP (−13.1), CDA (−12.8), D66 (−6.3)
**Positieve pool:** PVV (+29.5, N=19), SP (+27.9, N=3), PvdD (+27.9, N=3), DENK (+25.3, N=3), GroenLinks-PvdA (+20.1, N=20), Volt (+12.2, N=1)
**Negatieve pool:** VVD (−25.7, N=22), SGP (−13.1, N=3), CDA (−12.8, N=18), D66 (−6.3, N=26), ChristenUnie (−5.3, N=3), JA21 (−4.1, N=9)
**Midden:** FVD (+3.0, N=7), Groep Markuszower (+0.5, N=7), Lid Keijzer (−0.4, N=1), BBB (−1.0, N=3), 50PLUS (−2.1, N=2)
**Bevinding:** De meest opvallende as. PVV staat hier *naast* SP, PvdD en GroenLinks-PvdA — een combinatie die op PC1 nog aan tegengestelde kanten stond. De motiethema's laten zien waarom: bezuinigingen op zorg schrappen (SP/Dobbe), gemeentefonds niet korten (SP/Dobbe), winstuitkeringen in zorg verbieden (SP/Dijk), veto bij ziekenhuisfusies. Aan de negatieve kant: private investeerders in zorg (D66/Jansen), fiscale bedrijfsopvolgingsfaciliteiten (VVD/Van Oostenbruggen), doorgaan met besturen na kabinetscrisis (VVD/Yeşilgöz).
**Bevinding:** De meest opvallende as. PVV staat hier naast SP, PvdD en GroenLinks-PvdA — partijen die op PC1 aan tegengestelde kanten staan. De motiethema's verklaren dit: bezuinigingen op zorg schrappen (SP/Dijk, dossier 36 760 "Kabinetscrisis 2025"), gemeentefonds niet korten (SP/Dobbe), winstuitkeringen in zorg verbieden (SP/Dijk), veto bij ziekenhuisfusies (SP/Dobbe). Aan de negatieve kant: private investeerders in zorg (Jansen/D66), fiscale bedrijfsopvolgingsfaciliteiten (Van Oostenbruggen/VVD), doorgaan met besturen na kabinetscrisis (Yeşilgöz/VVD), defensie-uitgavengroeipad naar 3.5% bbp.
**Interpretatie:** Dit is de **economische interventie-as**: sociale bescherming van publieke voorzieningen vs. marktliberalisme. PVV scoort positief niet vanuit een progressief-sociaal ideaal maar vanuit anti-establishment populisme: PVV-kiezers zijn sterk afhankelijk van publieke zorg en onderwijs, en PVV verzette zich actief tegen de bezuinigingen die de VVD-fractie van het kabinetsbeleid verdedigde.
**Interpretatie:** Dit is de **economische interventie-as**: sociale bescherming van publieke voorzieningen vs. marktliberalisme en bezuinigingen. PVV's positieve score weerspiegelt stemgedrag: PVV stemde mee tegen bezuinigingen op zorg en gemeenten, consistent met de achterban die sterk afhankelijk is van publieke voorzieningen. Let wel: SVD meet stempatronen, niet motivaties — of PVV dit doet vanuit sociale bewogenheid of anti-establishment populisme is uit de data niet af te leiden.
**Kabinetscrisis 2025:** Meerdere moties verwijzen naar de kabinetscrisis van juni 2025 (kamernummer 36 760 "Kabinetscrisis 2025"). PC3 vangt de breuklijn van die crisis op: wie wil bezuinigen vs. wie wil beschermen.
**Kabinetscrisis:** Meerdere moties verwijzen naar dossier 36 760 ("Kabinetscrisis 2025"). De scheidslijn op PC3 (wie bezuinigt vs. wie beschermt) correleert met de breuklijn van die crisis. Dit is een correlatie, geen bewezen causaal verband — zonder een voor/na-vergelijking (SVD exclusief post-crisis moties) kunnen we niet vaststellen of de crisis de as *veroorzaakte* of dat de as een pre-existente spanning weergeeft die tot de crisis leidde.
**Twijfel:** `flip: True` in de code. Dit betekent dat de asrichting in de visualisatie omgekeerd wordt. In de ruwe SVD-data zijn de pro-verzorgingsstaat partijen positief, maar in de compass-visualisatie worden ze mogelijk aan de "negatieve" visuele kant weergegeven. Dit is een legacy instelling die ik niet heb gewijzigd zonder de visual te inspecteren.
**Flip:** `flip: True` in de code. In de ruwe SVD-data scoren pro-verzorgingsstaatpartijen positief, maar in de compass-visualisatie wordt de as omgekeerd. Visuele validatie is nodig om te controleren of labels en weergave overeenkomen.
---
### PC4 — Pragmatisch centrisme vs. ideologische radicaliteit (EVR: 5.7%)
### PC4 — Pragmatisch centrisme vs. ideologische radicaliteit (EVR: ~6%)
**Positieve pool:** D66 (23.5), CDA (23.1), 50PLUS (16.6), VVD (13.9), JA21 (9.9)
**Negatieve pool:** FVD (−1.8), SP (−0.7), Groep Markuszower (1.3 — *bijna nul*)
**Positieve pool:** D66 (+23.5, N=26), CDA (+23.1, N=18), 50PLUS (+16.6, N=2), VVD (+13.9, N=22), JA21 (+9.9, N=9), GroenLinks-PvdA (+8.9, N=20), Volt (+7.1, N=1), BBB (+5.0, N=3)
**Midden:** PvdD (+3.1, N=3), PVV (+2.7, N=19), Lid Keijzer (+2.4, N=1), DENK (+1.6, N=3), Groep Markuszower (+1.3, N=7)
**Negatieve pool:** FVD (−1.8, N=7), SP (−0.7, N=3), ChristenUnie (+0.6, N=3)
**Bevinding:** De scheidslijn loopt tussen de gevestigde centrumpartijen enerzijds en radicale posities anderzijds. Positieve motiethema's: openbare toiletten, vaderbetrokkenheid bij kinderopvoeding, samenwerking met Australië/Canada/VK, postcovid-expertisecentra. Dit zijn pragmatische, institutionele beleidsposities zonder sterke ideologische lading. Negatieve motiethema's: kinderen in pleeggezinnen van hetzelfde geslacht (FVD, anti-LGBTQ), migratiesaldo-cap van 60.000 (De Vos), verlaten van de WHO (FVD/Van Houwelingen), bescherming van artikel 23 Grondwet in onderwijscurriculum (DENK/Ergin).
**Bevinding:** De scheidslijn loopt tussen gevestigde centrumpartijen enerzijds en partijen die meer ideologisch gedreven stemmen anderzijds. Positieve motiethema's: openbare toiletten, vaderbetrokkenheid, samenwerking met Australië/Canada/VK, postcovid-expertisecentra. Dit zijn pragmatische, institutionele beleidsposities. Negatieve motiethema's: kinderen in pleeggezinnen van hetzelfde geslacht (FVD, anti-LGBTQ), migratiesaldo-cap van 60.000, verlaten van de WHO (FVD/Van Houwelingen), bescherming artikel 23 Grondwet in onderwijscurriculum (DENK/Ergin).
**Interpretatie:** Deze as vangt een "*establishment vs. radicaal*" dimensie. Interessant is dat ChristenUnie en DENK allebei negatief scoren — vanuit tegengestelde hoeken: ChristenUnie vanuit religieus-conservatief identiteitsbeleid (artikel 23), DENK vanuit identiteitspolitiek voor minderheidsgroepen. FVD scoort het meest negatief.
**Opvallend:** De scores zijn klein vergeleken met PC1–PC3. Het verschil tussen D66 (+23.5) en FVD (−1.8) is slechts ~25 punten, terwijl op PC1 het verschil PVV→PvdD ~78 punten bedraagt. Dit maakt PC4 een subtielere dimensie waar de onderscheidende kracht beperkter is.
**Twijfel:** De scores op deze as zijn relatief klein (~7 vs. ~50 op PC2), en de partijen zijn vrij dicht bijeen. De EVR is maar 5.7%. Dit is een echte maar subtiele dimensie.
**Flip:** `flip: True` in de code.
---
### PC5 — Christelijk-sociaal communitarisme (EVR: 4.3%)
### PC5 — Christelijk-sociaal communitarisme (EVR: ~4%)
**Positieve pool:** ChristenUnie (23.5), SGP (21.7), CDA (12.1), D66 (11.7)
**Negatieve pool:** VVD (−10.1), GroenLinks-PvdA (−5.5), PvdD (−4.2), PVV (−0.7)
**Positieve pool:** ChristenUnie (+23.5, N=3), SGP (+21.7, N=3), CDA (+12.1, N=18), D66 (+11.7, N=26), 50PLUS (+5.9, N=2), DENK (+4.9, N=3), JA21 (+4.3, N=9)
**Negatieve pool:** VVD (−10.1, N=22), GroenLinks-PvdA (−5.5, N=20), PvdD (−4.2, N=3), Volt (+3.1, N=1)
**Midden:** BBB (+1.4, N=3), Lid Keijzer (+1.1, N=1), PVV (−0.6, N=19), SP (+0.3, N=3), FVD (−0.04, N=7), Groep Markuszower (+0.2, N=7)
**Bevinding:** Een verrassende as: ChristenUnie, SGP en CDA zijn positief — maar ook D66. Positieve motiethema's: schuldhulpverlening via vrijwilligersorganisaties, maatschappelijke diensttijd voor kansarme jongeren, gastouderopvang verbeteren, WW-hervorming alleen met betere omscholing. Dit zijn moties die investeren in *maatschappelijke structuren* en *collectieve zorg*. Negatieve motiethema's: wettelijke erkenning van meerouderschap, abortusrecht in EU-Handvest, poverty fund niet voor regulering, zwemdiplomastandaarden.
**Bevinding:** ChristenUnie, SGP en CDA scoren positief — maar ook D66. Positieve motiethema's: schuldhulpverlening via vrijwilligersorganisaties, maatschappelijke diensttijd voor kansarme jongeren, gastouderopvang verbeteren, WW-hervorming alleen met betere omscholing. Negatieve motiethema's: wettelijke erkenning van meerouderschap, abortusrecht in EU-Handvest, poverty fund niet voor regulering, zwemdiplomastandaarden.
**Interpretatie:** De as scheidt een *gemeenschapsgerichte* benadering (informele hulp, dienstplicht, sociale cohesie) van een *individueel-rechten* benadering (meerouderschap, abortus als grondrecht, deregulering). ChristenUnie/SGP/CDA stemmen hier vanuit christelijk-sociaal gedachtegoed; D66 scoort positief omdat het de sociaal-institutionele kant van de verzorgingsstaat steunt (WW, schuldhulp), ook al verschilt het van CU/SGP over waarden.
**Interpretatie:** De as scheidt een *gemeenschapsgerichte* benadering (informele hulp, dienstplicht, sociale cohesie) van een *individueel-rechten* benadering (meerouderschap, abortus als grondrecht, deregulering). ChristenUnie/SGP/CDA stemmen hier vanuit christelijk-sociaal gedachtegoed; D66 scoort positief vanuit steun voor de sociaal-institutionele kant (WW, schuldhulp), ondanks verschillende waardenposities.
**Twijfel:** Waarom scoort D66 hier positief terwijl het op de negatieve pool van PC4 staat? D66 is intern complex: progressief op waarden maar institutioneel-constructief op sociale infrastructuur. Dat lijkt consistent maar is verwarrend voor de gebruiker.
D66 scoort dus positief op zowel PC4 (+23.5) als PC5 (+11.7). Dat is geen tegenstrijdigheid: PC4 en PC5 zijn orthogonale assen die verschillende dingen meten. Een partij kan tegelijk pragmatisch-centristisch (PC4) én pro-maatschappelijke infrastructuur (PC5) stemmen.
---
### PC6 — Klimaat, energie en culturele integratie (EVR: 3.9%)
**Positieve pool:** SGP (29.7), JA21 (24.6), FVD (22.1), PVV (19.4), Groep Markuszower (19.1)
**Negatieve pool:** GroenLinks-PvdA (−8.3), PvdD (−7.5), D66 (−7.3), Volt (−2.3)
### PC6 — Klimaat, energie en culturele integratie (EVR: ~4%)
**Bevinding:** Duidelijke energiepolarisatie. Positieve motiethema's: LNG-reserve als alternatief voor vulgraadverplichtingen, kernenergie erkennen op COP30, inventarisatie van discriminatie/inclusie-meldpunten (Nanninga). Negatieve motiethema's: fossiele industrie weren van klimaatconferentie in Colombia, overleg met moslimgemeenschappen bij integratiebeleid (Ergin/DENK), aanvallen van Israël op Libanon veroordelen.
**Positieve pool:** SGP (+29.7, N=3), JA21 (+24.6, N=9), FVD (+22.1, N=7), PVV (+19.4, N=19), Groep Markuszower (+19.1, N=7), ChristenUnie (+18.5, N=3), BBB (+11.6, N=3)
**Negatieve pool:** GroenLinks-PvdA (−8.3, N=20), PvdD (−7.5, N=3), D66 (−7.3, N=26), Volt (−2.3, N=1)
**Midden:** Lid Keijzer (+5.9, N=1), 50PLUS (+6.6, N=2), DENK (+3.3, N=3), CDA (+2.8, N=18), VVD (+2.3, N=22), SP (−0.7, N=3)
**Interpretatie:** Twee thema's kruisen: (1) energiebeleid — fossiel/kernenergie vs. klimaat/hernieuwbaar, en (2) cultureel-politieke polarisatie — integratiebeleid en Midden-Oostenpolitiek. De combinatie is niet toevallig: JA21/FVD/SGP/PVV stemmen zowel pro-fossiel als anti-progressieve inclusie; GroenLinks/Volt/D66 stemmen pro-klimaat én pro-inclusie.
**Bevinding:** Duidelijke energiepolarisatie. Positieve motiethema's: LNG-reserve als alternatief voor vulgraadverplichtingen, kernenergie erkennen op COP30, inventarisatie discriminatie/inclusiemeldpunten (Nanninga). Negatieve motiethema's: fossiele industrie weren van klimaatconferentie, overleg met moslimgemeenschappen bij integratiebeleid (Ergin/DENK), veroordeling aanvallen Israël op Libanon.
**Sterkte:** De thematische consistentie is groot. De energiediscussie en de multiculturele samenlevingsdiscussie zijn in de Nederlandse politiek stevig verweven.
**Interpretatie:** Twee thema's kruisen: (1) energiebeleid — fossiel/kernenergie vs. klimaat/hernieuwbaar, en (2) cultureel-politieke polarisatie — integratiebeleid en Midden-Oostenpolitiek. JA21/FVD/SGP/PVV stemmen zowel pro-fossiel als anti-progressieve inclusie; GroenLinks/Volt/D66 stemmen pro-klimaat én pro-inclusie. De combinatie is empirisch in de Nederlandse politiek: deze beleidsdomeinen correleren in stemgedrag, ook al zijn ze inhoudelijk onderscheiden. Een varimax-rotatie zou deze twee thema's mogelijk scheiden in afzonderlijke assen — dat is niet getest.
---
### PC7 — Bestuurlijk pragmatisme en implementatie (EVR: 3.4%)
### PC7 — Bestuurlijk pragmatisme en implementatie (EVR: ~3%) *(indicatief label)*
**Positieve pool:** ChristenUnie (10.6), Volt (4.7), DENK (4.4), SP (3.7), SGP (2.9)
**Negatieve pool:** JA21 (−4.4), FVD (−4.3), VVD (−4.0), GroenLinks-PvdA (−3.2)
**Positieve pool:** ChristenUnie (+10.6, N=3), Volt (+4.7, N=1), DENK (+4.4, N=3), SP (+3.7, N=3), SGP (+2.9, N=3)
**Negatieve pool:** JA21 (−4.4, N=9), FVD (−4.3, N=7), VVD (−4.0, N=22), GroenLinks-PvdA (−3.2, N=20)
**Midden:** PVV (−1.1, N=19), BBB (−2.0, N=3), CDA (+0.7, N=18), PvdD (+0.03, N=3), D66 (+1.2, N=26), 50PLUS (−1.7, N=2), Lid Keijzer (−0.7, N=1), Groep Markuszower (−2.6, N=7)
**Bevinding:** Dit is de minst interpreteerbare as. De motiethema's komen **overwegend uit 2024** (vorige parlementaire periode), wat duidt op temporele ruis. Positieve motiethema's: kostenoverzicht producten van eigen bodem (BBB/CU), papieren schoolboeken voor basisvaardigheden, invoeringstoets minimumloonverhoging voor mkb, A2-snelwegalternatief. Deze zijn praktisch-bestuurlijk. Negatieve motiethema's: landelijk stookverbod (PvdD), El Abassi's motie om verbranding van religieuze geschriften strafbaar te stellen (DENK), chroom-6 schadevergoedingen (SP/D66), tegenhouden nieuwe gaswinning tenzij omwonenden akkoord.
**Bevinding:** De minst interpreteerbare as. Veel motiethema's komen uit 2024 (vorige parlementaire periode), wat temporele ruis suggereert. Positieve motiethema's: kostenoverzicht producten eigen bodem (BBB/CU), papieren schoolboeken, invoeringstoets minimumloonverhoging mkb, A2-snelwegalternatief. Negatieve motiethema's: landelijk stookverbod (PvdD), strafbaarstelling verbranding religieuze geschriften (El Abassi/DENK), chroom-6 schadevergoedingen (SP/D66), tegenhouden nieuwe gaswinning.
**Twijfel (groot):** Waarom staat GroenLinks-PvdA negatief terwijl SP positief staat? Beide zijn sociaal-linkse partijen. Waarom staat DENK positief (schaalbare bestuursmotie) terwijl El Abassi's motie (DENK-indiener) negatief laadt? Dit suggereert dat PC7 **geen coherente ideologische dimensie** is maar een mengeling van toevallige correlatiepatronen, mede beïnvloed door het feit dat de data uit twee parlementen stamt. De EVR van 3.4% is klein.
**Twijfel:** De scores zijn klein (max ~11 punten). GroenLinks-PvdA (−3.2) en SP (+3.7) staan tegenover elkaar ondanks hun verwantschap. Het `current_parliament`-venster bevat data uit twee parlementen, wat transitie-effecten kan veroorzaken. Dit label moet als **indicatief** worden gelezen — de as is te fragiel voor een definitieve interpretatie.
**Conclusie over PC7:** Treat with skepticism. Bruikbaar als "er is iets" maar moeilijk betekenisvol te labelen.
**Flip:** `flip: True` in de code.
---
### PC8 — Europese defensie-integratie (EVR: 2.8%)
### PC8 — Europese defensie-integratie (EVR: ~3%) *(indicatief label)*
**Positieve pool:** Volt (8.8), D66 (4.9)
**Negatieve pool:** SP (−39.1), DENK (−35.1), PvdD (−26.2), 50PLUS (−9.7)
**Positieve pool:** Volt (+8.8, N=1), D66 (+4.9, N=26)
**Negatieve pool:** SP (−39.1, N=3), DENK (−35.1, N=3), PvdD (−26.2, N=3), 50PLUS (−9.7, N=2), SGP (−5.7, N=3), ChristenUnie (−4.8, N=3), VVD (−4.3, N=22)
**Midden:** PVV (−0.4, N=19), CDA (−1.8, N=18), FVD (−2.0, N=7), JA21 (−2.0, N=9), BBB (−2.5, N=3), Groep Markuszower (−1.3, N=7), Lid Keijzer (−1.1, N=1), GroenLinks-PvdA (−1.7, N=20)
**Bevinding:** Zeer duidelijk. Positieve motiethema's: militaire mobiliteit als topprioriteit EU/NAVO, militair Schengengebied, 35% Europese defensie-inkoop, Europees defensie-R&D-instituut (allemaal Volt/D66/Dassen). Negatieve motiethema's: ketenverantwoordelijkheid bij toeslagen (El Abassi/DENK), budgetrecht Presidium (Van Hijum), energiecontract flexibiliteit (Kops/PVV), corona oversterfte-motie (Agema/PVV).
**Bevinding:** Duidelijke thematische coherentie. Positieve motiethema's: militaire mobiliteit als topprioriteit EU/NAVO, militair Schengengebied, 35% Europese defensie-inkoop, Europees defensie-R&D-instituut (Volt/D66/Dassen). Negatieve motiethema's: ketenverantwoordelijkheid bij toeslagen (El Abassi/DENK), budgetrecht Presidium (Van Hijum), energiecontract flexibiliteit (Kops/PVV), corona-oversterfte (Agema/PVV).
**Interpretatie:** De positieve pool (Volt, D66) is pro-Europese militaire integratie, de negatieve pool (SP, DENK, PvdD) is een combinatie van pacifisme, anti-militarisme en focus op binnenlandse rechtvaardigheid. De negatieve motiethema's zijn inhoudelijk divers — dit suggereert dat wat PC8 eigenlijk meet is: *wie dient moties in over EU-defensie*, en de rest van de variatie valt door het lage EVR in ruis.
**Interpretatie:** De positieve pool (Volt, D66) is pro-Europese militaire integratie. De negatieve pool omvat SP (historisch anti-NAVO, anti-EU-militarisering), DENK (focus op binnenlandse rechtvaardigheid) en PvdD (pacifistisch). SP's sterk negatieve score (−39.1) weerspiegelt actief tégen deze moties stemmen, niet simpelweg het ontbreken van focus op dit thema. Bij een score van nul zou "geen focus" passen; een score van −39 betekent consequent andersom stemmen dan Volt/D66. DENK's −35.1 volgt dezelfde logica.
**Opvallend:** De SP-score is enorm negatief (−39.1). SP is historisch anti-NAVO, anti-EU-militarisering. Dat klopt. DENK's negatieve score (−35.1) is ook consistent: DENK heeft geen focus op EU-defensiebeleid en dient motiethema's in die ver van dit onderwerp staan.
**Twijfel:** Volt (N=1) domineert de positieve pool met slechts één Kamerlid. De betrouwbaarheid van die centroïde is nihil. D66 (N=26) is betrouwbaarder maar scoort slechts +4.9. De negatieve pool wordt gedomineerd door fracties met elk 3 leden. Deze as is thematisch coherent maar statistisch fragiel.
---
### PC9 — Decentraal bestuur en gemeenschapswaarden (EVR: 2.6%)
### PC9 — Decentraal bestuur en gemeenschapswaarden (EVR: ~3%) *(indicatief label)*
**Positieve pool:** SGP (35.9), ChristenUnie (26.0), DENK (7.0), SP (3.6)
**Negatieve pool:** PVV (−8.5), JA21 (−6.7), D66 (−6.7), Groep Markuszower (−5.7), FVD (−4.5)
**Positieve pool:** SGP (+35.9, N=3), ChristenUnie (+26.0, N=3), DENK (+7.0, N=3), SP (+3.6, N=3)
**Negatieve pool:** PVV (−8.5, N=19), JA21 (−6.7, N=9), D66 (−6.7, N=26), Groep Markuszower (−5.7, N=7), FVD (−4.5, N=7), VVD (−4.4, N=22)
**Midden:** CDA (+1.0, N=18), GroenLinks-PvdA (+0.8, N=20), PvdD (+0.2, N=3), BBB (−3.5, N=3), 50PLUS (−2.7, N=2), Lid Keijzer (−1.7, N=1), Volt (−0.4, N=1)
**Bevinding:** Positieve motiethema's: naleving Financiële-verhoudingswet (gemeentefinanciën), beperking EU-arbeidsmigratie, nieuwe tandartsopleiding Rotterdam (regionale toegankelijkheid), actieplan tegen hallucinerende geneesmiddelen, milieu-oplossing Bonaire (decentraal). Negatieve motiethema's: moratorium geitenstallen (PvdD/Kostic), verbod gokadvertenties (Tseggai/Koops), verduidelijking voorlopige hechtenis (Sneller/D66), leegstandbelasting woningen, bescherming end-to-end-encryptie.
**Bevinding:** Positieve motiethema's: naleving Financiële-verhoudingswet (gemeentefinanciën), beperking EU-arbeidsmigratie, tandartsopleiding Rotterdam (regionale toegankelijkheid), actieplan hallucinerende geneesmiddelen, milieuoplossing Bonaire. Negatieve motiethema's: moratorium geitenstallen (PvdD/Kostić), verbod gokadvertenties, verduidelijking voorlopige hechtenis (Sneller/D66), leegstandbelasting woningen, bescherming end-to-end-encryptie.
**Interpretatie:** SGP en ChristenUnie scoren sterk positief — dit past bij hun focus op gemeentelijke autonomie, volksgezondheid via handhaving en regionale dienstverlening. DENK en SP scoren ook positief, wat hier minder voor de hand liggend is. Mogelijk is de verbindende factor: *concrete, lokale of sectorale oplossingen voor gemeenschapsproblemen* (arbeidsmigratie beperken, tandartsen in regio's, geneesmiddelenmisbruik). D66 en PVV scoren negatief — D66 door de focus op systeem/rechtshervormingen, PVV wellicht door het ontbreken van moties in dit domein.
**Twijfel:** SGP (+35.9) en ChristenUnie (+26.0) domineren sterk, maar beide hebben slechts 3 Kamerleden. De hoge scores kunnen individueel stemgedrag van enkele Kamerleden reflecteren. De combinatie SGP + ChristenUnie + DENK + SP is ideologisch divers en kan wijzen op een toevallig patroon bij lage EVR.
**Twijfel:** De combinatie SGP + ChristenUnie + DENK + SP is ongewoon. Dit kan een echte thematische as zijn (decentraal, gemeenschapsgericht), maar kan ook toeval zijn bij een EVR van slechts 2.6%.
**Flip:** `flip: True` in de code.
---
### PC10 — Institutioneel toezicht en handhaving (EVR: 2.3%)
### PC10 — Institutioneel toezicht en handhaving (EVR: ~2%) *(indicatief label)*
**Positieve pool:** DENK (25.1), SP (25.1), PvdD (9.9), Volt (9.3), D66 (5.6)
**Negatieve pool:** GroenLinks-PvdA (−14.0), SGP (−11.1), CDA (−6.0), 50PLUS (−4.5), JA21 (−2.9)
**Positieve pool:** DENK (+25.1, N=3), SP (+25.1, N=3), PvdD (+9.9, N=3), Volt (+9.3, N=1), D66 (+5.6, N=26)
**Negatieve pool:** GroenLinks-PvdA (−14.0, N=20), SGP (−11.1, N=3), CDA (−6.0, N=18), 50PLUS (−4.5, N=2), JA21 (−2.9, N=9)
**Midden:** FVD (+2.2, N=7), PVV (+1.3, N=19), BBB (−1.3, N=3), VVD (−1.0, N=22), ChristenUnie (−2.8, N=3), Lid Keijzer (−0.5, N=1), Groep Markuszower (−0.2, N=7)
**Bevinding:** Positieve motiethema's: minder tijdsintensieve schoolinspecties (Kisteman/VVD + Rooderkerk/D66), "integratie geldt voor nieuwkomers, niet voor gevestigde Nederlanders" (Ergin/DENK), toeslagenouders recht op persoonlijk dossier (Dijk/SP), tegemoetkoming arbeidsongeschikten behouden, verlaging leeftijdsdrempel kindgesprekken. Negatieve motiethema's: aangifteplicht scholen bij veiligheidsincidenten, rookverbod in auto's met kinderen, gelijkstelling braakliggend landbouwgrond, verhoogd beloningsgeld tipgevers, terrorismebewustzijn anti-radicaliseringsorganisaties.
**Bevinding:** Positieve motiethema's: minder tijdsintensieve schoolinspecties, "integratie geldt voor nieuwkomers, niet voor gevestigde Nederlanders" (Ergin/DENK), toeslagenouders recht op persoonlijk dossier (Dijk/SP), tegemoetkoming arbeidsongeschikten behouden, verlaging leeftijdsdrempel kindgesprekken. Negatieve motiethema's: aangifteplicht scholen bij veiligheidsincidenten, rookverbod auto's met kinderen, gelijkstelling braakliggend landbouwgrond, verhoogd beloningsgeld tipgevers, terrorismebewustzijn anti-radicaliseringsorganisaties.
**Meest opvallende bevinding:** GroenLinks-PvdA scoort **sterk negatief** (−14.0), terwijl SP (25.1) en DENK (25.1) sterk positief scoren. Dit is verrassend: drie partijen die in veel opzichten ideologisch verwant zijn, staan hier tegenover elkaar.
**Opvallend:** GroenLinks-PvdA (−14.0) staat tegenover SP (+25.1) en DENK (+25.1). Drie ideologisch verwante partijen, toch tegenover elkaar. De negatieve motiethema's (aangifteplicht, rookverbod, handhaving) zijn regulerende maatregelen die GroenLinks-PvdA steunt. SP en DENK zijn sceptischer over toezicht dat kwetsbare groepen disproportioneel kan raken.
**Hypothese:** GroenLinks-PvdA steunt regulering en handhavingsmaatregelen die SP en DENK wantrouwen. DENK ziet toezicht vanuit een anti-discriminatieperspectief: aangifteplicht en veiligheidsrapportage kunnen onevenredig belastend zijn voor scholen met een etnisch diverse populatie. SP is kritisch op bureaucratie en staatstoezicht die de kwetsbare groepen niet helpen. GroenLinks-PvdA steunt veiligheidsnormen (rookvrije auto's, terrorismepreventie) vanuit een rechten- en normbewustzijnperspectief.
**Twijfel:** Bij een EVR van ~2% is dit de zwakste as. SP en DENK (elk N=3) domineren de positieve pool. Dit label is **hooguit indicatief**.
**Conclusie over PC10:** Klein maar intrigerend. Scheidt de meer institutioneel-progressieve GroenLinks-PvdA van de meer anti-institutionele DENK en SP.
**Flip:** `flip: True` in de code.
---
## Twijfels en beperkingen
### 1. NSC ontbreekt in de data
Nieuw Sociaal Contract (NSC, Pieter Omtzigt) is afwezig in de partijscores. De `mp_metadata`-tabel bevat geen NSC-vermelding — vermoedelijk omdat de partijaanduidingen uit een oudere dataset stammen en NSC pas in 2023 is opgericht. De oude labels vermeldden NSC op meerdere assen, maar die waren gebaseerd op incomplete data. De nieuwe labels laten NSC terecht weg.
### 1. Twee vectorruimtes, één verhaal
De **belangrijkste methodologische beperking** is dat deze analyse twee verschillende SVD-decompositie combineert in één narratief:
| Datapunt | Bron | Vectorruimte |
|----------|------|-------------|
| Partijscores | `load_party_axis_scores` | Enkelvoudig venster `current_parliament` |
| Motiescores | `generate_svd_json.py` | Enkelvoudig venster `current_parliament` |
| EVR-percentages | `compute_svd_spectrum` | Procrustes-uitgelijnd, 41 vensters |
| Compass-posities | `compute_2d_axes` | Procrustes-uitgelijnd, 41 vensters |
Motiescores en partijscores zijn onderling consistent (dezelfde SVD), maar de EVR-percentages beschrijven een andere decompositie. De "24.1%" bij PC1 verwijst naar de Procrustes-ruimte, niet naar de ruimte waaruit de scores komen. Voor PC1–PC3 maakt dit waarschijnlijk weinig verschil (de dominante structuur is stabiel), maar voor PC7+ kunnen de assen significant afwijken.
**Aanbeveling:** Bereken EVR-percentages voor de enkelvoudige `current_parliament`-decompositie en vergelijk met de Procrustes-EVR. Als ze sterk afwijken, zijn de labels voor de hogere componenten onbetrouwbaar.
### 2. NSC ontbreekt in de data
Nieuw Sociaal Contract (NSC, Pieter Omtzigt) is afwezig in de partijscores. De `mp_metadata`-tabel bevat geen NSC-vermelding — vermoedelijk omdat partijaanduidingen uit een oudere dataset stammen. NSC is een coalitiedeelnemer (Schoof-kabinet: PVV + VVD + NSC + BBB) met ~20 zetels. Zonder NSC missen we ~13% van de Kamer en een sleutelpartij voor de interpretatie van PC3 (kabinetscrisis), PC4 (centrisme) en PC5 (communitarisme).
### 3. Kleine fracties domineren de analyse
Van de 17 partijen hebben 9 partijen ≤3 Kamerleden in de data. Partijen met N=3 (SP, BBB, CU, SGP, PvdD, DENK) en N=1–2 (Volt, Lid Keijzer, 50PLUS) leveren centroïden die extreem gevoelig zijn voor individueel stemgedrag. Volt's −77.4 op PC2 is het stemgedrag van één persoon, niet van een partij.
**Aanbeveling:** Bereken bootstrap-betrouwbaarheidsintervallen (resample Kamerleden per partij met teruglegging, herbereken centroïden, rapporteer 95%-interval). Rapporteer ook standaarddeviaties binnen partijen om te laten zien of partijen homogeen stemmen of intern verdeeld zijn.
NSC is een coalitiedeelnemer (Schoof-kabinet: PVV + VVD + NSC + BBB). Zonder NSC missen we een partij die inhoudelijk de christelijk-sociale, institutionele kant van de coalitie vertegenwoordigt. Dit kan de interpretatie van PC4 (centrisme) en PC5 (communitarisme) beïnvloeden.
### 4. Flip-waarden niet visueel gevalideerd
### 2. Flip-waarden zijn niet visueel gevalideerd
De `flip: True/False` waarden in SVD_THEMES bepalen of een as wordt omgekeerd in de visualisatie. Ik heb de flip-waarden van de vorige labels overgenomen. De logica was: als de "natuurlijke" SVD-richting (hoge scores = positief) niet overeenkomt met de gewenste leesrichting in de compass (bijv. links = links), dan flip. Ik heb dit niet visueel geverifieerd in de lopende Streamlit-app.
Vijf van de tien assen hebben `flip: True`:
**Risico:** PC3 (verzorgingsstaat) heeft `flip: True`. In de SVD heeft SP/PvdD een *positieve* score, maar in de compass kunnen ze aan de *negatieve* kant van de as worden getoond. Als de gebruiker het label "Pro-verzorgingsstaat" leest als positieve kant maar SP rechts van het middelpunt staat, klopt het niet.
| As | Flip | Betekenis |
|----|------|-----------|
| PC1 | False | — |
| PC2 | False | — |
| PC3 | **True** | Pro-verzorgingsstaat partijen (positief in SVD) worden visueel omgekeerd |
| PC4 | **True** | Centrumpartijen (positief in SVD) worden visueel omgekeerd |
| PC5 | False | — |
| PC6 | False | — |
| PC7 | **True** | CU/Volt/DENK (positief in SVD) worden visueel omgekeerd |
| PC8 | False | — |
| PC9 | **True** | SGP/CU (positief in SVD) worden visueel omgekeerd |
| PC10 | **True** | DENK/SP (positief in SVD) worden visueel omgekeerd |
### 3. Motion-SVD vs. MP-SVD zijn niet hetzelfde ruimte
De top-10 motiethema's worden geladen uit de *ruwe* SVD-vectoren voor het venster `current_parliament` (enkelvoudige decomposities per venster). De partijscores komen uit de *Procrustes-uitgelijnde multi-window SVD*. Dit zijn technisch gezien niet dezelfde vectorruimtes — de Procrustes-rotatie past de vectoren aan om consistentie over vensters te verbeteren, maar de motiescores zijn niet Procrustes-uitgelijnd.
De flip-logica in de code keert scores om en wisselt pool-labels. Geen van deze is visueel gevalideerd in de lopende Streamlit-app.
In de praktijk is de correlatie hoog genoeg dat de motiethema's representatief zijn voor de geaggregeerde assen, maar er kan een kleine rotatie zijn waardoor de "meest ladende motiethema's" niet perfect overeenkomen met de partijposities.
**Risico:** Als een flip-waarde verkeerd staat, ziet de gebruiker partijen aan de verkeerde kant van de as t.o.v. het label. Dit moet worden gecontroleerd.
### 4. PC7 en PC9 zijn fragiele assen
Met een EVR van 3.4% en 2.6% verklaren PC7 en PC9 weinig variantie. De partijscores zijn klein (max ~10 punten vs. ~55 voor PC1), en de combinatie van partijen op elke pool is ideologisch divers. Bij lage EVR is het risico op **overfitting aan ruis** groter: de as vangt toevallige correlaties op in een kleine hoeveelheid residuele variatie. Labels voor deze assen moeten als indicatief worden gelezen.
### 5. PC7–PC10 zijn fragiel en mogelijk ruis
### 5. Temporele heterogeniteit in PC7
De top-10 motiethema's voor PC7 stammen grotendeels uit 2024 — de vorige parlementaire periode. Het venster `current_parliament` omvat blijkbaar ook historische data. Dit kan betekenen dat PC7 een **transitie-effect** vangt: stemgedrag dat veranderde bij de vorming van het Schoof-kabinet in 2024. Dit is interessant maar moeilijk te interpreteren zonder longitudinale analyse.
Met EVR ~2–3% verklaren PC7–PC10 weinig variantie. De scores zijn klein (max ~35 punten bij partijen met N=3), de partijcombinaties zijn ideologisch divers, en de motiethema's zijn soms temporeel heterogeen (PC7). Het is niet vastgesteld dat deze assen boven het ruisniveau liggen.
**Aanbeveling:** Voer een parallelle analyse of scree-test uit om te bepalen hoeveel componenten significant boven ruis liggen. Als dat 6 componenten is, zijn PC7–PC10 beter te verwijderen dan ze met een indicatief label te presenteren.
### 6. Geen rotatie toegepast
De analyse gebruikt ruwe SVD-componenten die **variantie maximaliseren**, niet interpreteerbaarheid. Varimax- of promax-rotatie kan helpen om componenten te ontmengen. Specifiek PC6 (klimaat + culturele integratie) zou onder varimax mogelijk in twee afzonderlijke assen uiteenvallen. Dit is niet getest.
### 7. Geen externe validatie
De interpretaties zijn niet gevalideerd tegen externe bronnen zoals de Chapel Hill Expert Survey (CHES), Kieskompas, of DW-NOMINATE-stijl ideaalpuntschattingen. Een correlatieanalyse tussen PC1 en CHES links-rechts scores zou de interpretatie substantieel versterken. Zonder externe validatie is het label "links-rechts" een empirisch onderbouwde maar niet geverifieerde claim.
---
## Sterktes
### 1. Multivenster Procrustes-pipeline
De EVR-getallen (PC1=24.1%) zijn robuust: ze komen niet uit een enkelvoudige snapshot maar uit een Procrustes-uitgelijnde aggregatie over 41 vensters. Dit vermindert toevallige uitschieters en geeft een stabielere schatting van de echte politieke dimensies.
### 1. Enkelvoudige-window consistentie
Hoewel er een mismatch is met de Procrustes-EVR, zijn de partijscores en motiescores wél intern consistent: ze komen uit dezelfde SVD-decompositie. De labels worden niet geïnterpreteerd op basis van ongerelateerde vectorruimtes.
### 2. Partijcentroïden op basis van individueel stemgedrag
### 2. Partijcentroïden op basis van echte stemdata
De partijscores zijn niet geïmputeerd of geschat maar berekend uit de SVD-vectoren van *individuele Kamerleden* die daadwerkelijk hebben gestemd. Dit geeft een nauwkeuriger beeld van partijposities dan traditionele expert-surveys.
De partijscores zijn niet geïmputeerd of geschat maar berekend uit de SVD-vectoren van individuele Kamerleden die daadwerkelijk hebben gestemd. Dit geeft (voor grote fracties) een nauwkeuriger beeld dan expert-surveys.
### 3. Motie-inhoud als interpretatiehulp
Door de meest ladende motiethema's te inspecteren is de analyse direct verankerd in concrete politieke uitspraken. Dit maakt de labels falsifieerbaar: als een gebruiker zegt "PC3 gaat niet over de verzorgingsstaat", kan dat worden getest door naar de daadwerkelijke motieteksten te kijken.
Door de meest ladende motiethema's te inspecteren is de analyse verankerd in concrete politieke uitspraken. Dit maakt de labels falsifieerbaar.
### 4. Actuele data
De analyse gebruikt motiedata t/m maart 2026, inclusief de kabinetscrisis van juni 2025. Dat maakt de labels representatief voor de huidige politieke situatie, niet voor een parlementaire periode die al voorbij is.
De analyse gebruikt motiedata t/m maart 2026, inclusief de kabinetscrisis van juni 2025. Dat maakt de labels representatief voor de huidige politieke situatie.
---
@ -215,26 +298,30 @@ De analyse gebruikt motiedata t/m maart 2026, inclusief de kabinetscrisis van ju
### Wat de assen ons vertellen over de Nederlandse politiek (2024–2026)
**Dominante structuur:** De Nederlandse politiek kent een klassieke links-rechts tegenstelling (PC1, 24.1%) die het meeste stemgedrag verklaart. Maar de tweede belangrijkste dimensie is *niet* een secundaire links-rechts variatie: het is een **populisme-as** (PC2, 10.4%) die PVV/FVD/BBB isoleert van de rest van het parlement.
**De verzorgingsstaat als onverwachte coalitie:** PC3 laat zien dat PVV en SP aan dezelfde kant staan bij bezuinigingsdebatten. Dit is politiek significant: PVV-kiezers zijn kwetsbaar voor bezuinigingen en PVV verzet zich actief tegen austeriteitsbeleid van VVD/D66. De Schoof-kabinetscrisis van 2025 is direct in de SVD-structuur terug te zien.
**Dominante structuur:** De Nederlandse politiek kent een klassieke links-rechts tegenstelling (PC1, ~24% EVR) die het meeste stemgedrag verklaart. De tweede dimensie is een **populisme-as** (PC2, ~10%) die het bloc PVV/FVD/BBB/Groep Markuszower isoleert van het volledige overige parlement — inclusief VVD, CDA en SGP.
**Christelijk-sociale partijen zijn intern coherent:** ChristenUnie en SGP scoren hoog op meerdere assen (PC5, PC9) die gemeenschapsoriëntatie meten. Hun positie is stabiel en thematisch consistent.
**De verzorgingsstaat als onverwachte coalitie:** PC3 laat zien dat PVV en SP gelijk stemmen bij bezuinigingsdebatten. PVV-kiezers zijn kwetsbaar voor bezuinigingen en PVV stemde consequent tegen austeriteitsmaatregelen. De motiedata bevat directe verwijzingen naar de kabinetscrisis van 2025.
**GroenLinks-PvdA en SP zijn niet hetzelfde:** Op PC10 staan ze tegenover elkaar. GroenLinks-PvdA steunt institutionele regulering en handhaving; SP en DENK zijn sceptischer over overheidsingrijpen als het om toezicht op kwetsbare groepen gaat. Dit is een subtiel maar reëel verschil.
**Christelijk-sociale partijen zijn intern coherent:** ChristenUnie en SGP scoren consistent hoog op meerdere assen (PC5, PC9) die gemeenschapsoriëntatie meten. Let wel: beide fracties tellen slechts 3 Kamerleden — de consistentie kan individueel zijn.
**D66 en Volt zijn pro-Europees maar niet hetzelfde:** D66 scoort positief op PC5 (gemeenschapsgericht sociaal beleid), terwijl Volt dat niet doet. Volt scoort positief op PC8 (EU-defensie-integratie). D66 scoort ook positief op PC8 maar is breder.
**GroenLinks-PvdA en SP zijn niet hetzelfde:** Op PC10 staan ze tegenover elkaar. GroenLinks-PvdA steunt institutionele regulering en handhaving; SP en DENK zijn sceptischer over overheidstoezicht op kwetsbare groepen.
**Kleine assen (PC7–PC10) zijn fragiel:** Ze vangen echte maar kleine variatie op. Labels voor deze assen zijn indicatief en moeten voorzichtig worden geïnterpreteerd.
**Kleine assen zijn fragiel:** PC7–PC10 vangen echte maar kleine variatie op. Labels voor deze assen zijn indicatief. Formele dimensionaliteitstoetsing is nodig om te bepalen hoeveel assen inhoudelijk betekenisvol zijn.
---
## Vervolgstappen (suggesties)
## Vervolgstappen
1. **NSC identificeren:** Zoek of NSC-Kamerleden in `mp_metadata` staan onder een oudere partijnaam of zonder partijaanduiding. Ca. 20 Kamerleden; hun afwezigheid is een gat.
2. **Flip-waarden valideren:** Alle 5 assen met `flip: True` (PC3, PC4, PC7, PC9, PC10) visueel controleren in de Streamlit-compass.
3. **Enkelvoudige-window EVR berekenen:** Voer SVD uit op alleen het `current_parliament`-venster en vergelijk EVR met de Procrustes-EVR. Dit bepaalt hoe sterk de twee ruimtes afwijken.
1. **NSC identificeren:** Zoek of er NSC-Kamerleden in `mp_metadata` staan onder een oudere partijnaam of zonder partijaanduiding. NSC bestaat uit ca. 20 Kamerleden; hun afwezigheid is een gat in de analyse.
4. **Bootstrap-betrouwbaarheidsintervallen:** Bereken per partij een 95%-interval op de centroïde via resampling van Kamerleden. Rapporteer standaarddeviaties.
2. **Flip-waarden valideren:** De Streamlit-compass visualiseren en controleren of de positieve pool in de labels overeenkomt met de positieve kant in de visualisatie voor alle assen, met name PC3, PC4, PC7, PC9, PC10.
5. **Dimensionaliteitstoetsing:** Parallelle analyse of scree-test om te bepalen hoeveel componenten boven ruis liggen. Overweeg PC7–PC10 te verwijderen als ze niet significant zijn.
3. **Motiescores Procrustes-uitlijnen:** Voor hogere consistentie kunnen de motieSVD-vectoren ook door de Procrustes-pipeline worden gehaald, zodat de "meest ladende moties" dezelfde vectorruimte gebruiken als de partijposities.
6. **Varimax-rotatie testen:** Pas varimax toe op de eerste 6 componenten en controleer of PC6 uiteenvalt in afzonderlijke klimaat- en integratie-assen.
4. **PC7 temporeel splitsen:** De motiethema's voor PC7 splitsen op tijdvenster om te zien of de as een transitie-effect vangt (voor/na Schoof-kabinet) of iets permanenter.
7. **Externe validatie:** Correleer PC1-scores met CHES links-rechts expert-oordelen voor dezelfde partijen. Dit versterkt (of weerlegt) de links-rechts interpretatie.

Loading…
Cancel
Save