feat(analysis): Overton window breakpoint analysis with opposition control and SVD drift

Quantify 2024 breakpoint in centrist support (d=+0.68 overall, d=+0.85 opposition-only),
domain decomposition, extremity-stratified pass rates, and manual LLM audit (75% agreement).
SVD center drift aborted due to axis instability (9/10 consecutive window pairs fail stability threshold).
This commit is contained in:
2026-05-08 23:14:34 +02:00
parent d170444bda
commit 76b499cdc0
10 changed files with 2572 additions and 0 deletions
@@ -0,0 +1,165 @@
# Overton Window Breakpoint Analysis
**Goal:** Quantify the 2024 structural break in centrist support, pass rates,
and content extremity for right-wing motions in the Tweede Kamer.
**Analysis period:** 20162026
**Right-wing parties:** PVV, FVD, JA21, SGP
**Centrist parties:** VVD, D66, CDA, NSC, BBB, CU
**Left parties:** PvdA, GL, SP, PvdD, Volt, DENK, Bij1
---
## 1. Yearly Aggregate Metrics (All Right-Wing Motions)
| Year | N (RW) | Centrist Support | Pass Rate | Extremity | Right Support | Left Opp. |
|------|--------|-----------------|-----------|-----------|---------------|----------|
| 2016 | 6 | 0.722 | 1.000 | 2.00 | 1.000 | 0.708 |
| 2017 | 0 | N/A | N/A | N/A | N/A | N/A |
| 2018 | 5 | 1.000 | 1.000 | 1.40 | 0.800 | 0.480 |
| 2019 | 195 | 0.410 | 0.969 | 2.14 | 0.838 | 0.746 |
| 2020 | 469 | 0.326 | 0.979 | 2.26 | 0.818 | 0.758 |
| 2021 | 425 | 0.339 | 0.962 | 2.24 | 0.903 | 0.788 |
| 2022 | 446 | 0.404 | 0.926 | 2.16 | 0.891 | 0.820 |
| 2023 | 365 | 0.457 | 0.962 | 2.24 | 0.900 | 0.821 |
| 2024 | 469 | 0.670 | 1.000 | 1.99 | 0.885 | 0.756 |
| 2025 | 455 | 0.597 | 0.996 | 2.25 | 0.895 | 0.799 |
| 2026 | 151 | 0.518 | 0.927 | 2.33 | 0.916 | 0.834 |
## 2. Pre/Post 2024 Comparison
**Break year:** 2024
### All right-wing motions
| Metric | Pre-2024 Mean | Post-2024 Mean | Δ | Cohen's d |
|--------|--------------|---------------|-----|-----------|
| Centrist Support | 0.384 | 0.618 | +0.234 | +0.68 |
| Pass Rate | 0.959 | 0.988 | +0.029 | +0.18 |
| Extremity | 2.21 | 2.15 | -0.07 | -0.09 |
**Interpretation:** Cohen's d values quantify effect sizes (|d| < 0.2 small, 0.5 medium, > 0.8 large).
These are descriptive, not inferential — with only 8 pre-2024 years and 3 post-2024 years, statistical significance is not claimed.
### Opposition-only right-wing motions
| Metric | Pre-2024 Mean | Post-2024 Mean | Δ | Cohen's d | N pre / N post |
|--------|--------------|---------------|-----|-----------|---------------|
| Centrist Support | 0.270 | 0.543 | +0.272 | +0.85 | 1295 / 405 |
| Pass Rate | 0.954 | 0.985 | +0.031 | +0.18 | 1295 / 405 |
| Extremity | 2.28 | 2.18 | -0.10 | -0.14 | 1295 / 405 |
**Interpretation gate:** If opposition metrics also rise post-2024, the shift is not
purely coalition-driven. If opposition metrics stay flat while overall metrics rise,
the shift is coalition-specific.
## 3. Coalition Composition
2016-2017: Rutte II (VVD/PvdA). 2018-2021: Rutte III (VVD/CDA/D66/CU). 2022-2023: Rutte IV (VVD/D66/CDA/CU). 2024-2026: Schoof (PVV/VVD/NSC/BBB). 2024 ambiguous: Schoof cabinet started July 2024; all 2024 motions are coded to the Schoof coalition. Coalition effect may be overestimated for early 2024.
Submitter party is parsed from motion title prefixes
(e.g., "Motie van het lid Wilders over ..."). Only the lead submitter's party is
considered. Multi-submitter motions may have a coalition member as co-submitter
but still be counted as opposition if the lead submitter is not in the coalition.
## 4. Domain Decomposition
Migration = category `asiel/vreemdelingen`. Non-migration = all other categories.
| Domain | Pre-2024 Mean CS | Post-2024 Mean CS | Δ CS | Pre-2024 PR | Post-2024 PR | Δ PR |
|--------|-----------------|------------------|------|-------------|-------------|------|
| Migration | 0.303 | 0.536 | +0.233 | 0.981 | 0.975 | -0.006 |
| Non-migration | 0.529 | 0.605 | +0.076 | 0.969 | 0.974 | +0.005 |
## 5. Extremity-Stratified Pass Rate
| Bucket | Period | N | Pass Rate | Δ (post-pre) |
|--------|--------|---|-----------|-------------|
| 1-2 (mild) | Pre-2024 | 221 | 0.950 | |
| | Post-2024 | 181 | 1.000 | +0.050 |
| 2-3 (moderate) | Pre-2024 | 1205 | 0.949 | |
| | Post-2024 | 640 | 0.983 | +0.033 |
| 3-4 (high) | Pre-2024 | 352 | 0.983 | |
| | Post-2024 | 175 | 0.994 | +0.011 |
| 4-5 (extreme) | Pre-2024 | 133 | 0.992 | |
| | Post-2024 | 79 | 0.987 | -0.005 |
**Key test:** If high-extremity motions (35) went from low pass rate to high pass rate
while mild motions stayed flat, centrists are more tolerant of extreme content —
direct Overton shift evidence. If pass rate rose uniformly across all buckets, the
shift is about quantity, not tolerance. If only the 12 bucket rose, right-wing
parties filed milder motions post-2024 and the 'shift' is illusory.
## 6. Manual Extremity Audit
**Agreement rate: 15/20 (75%)** — above the 70% threshold; LLM scores not flagged as unreliable, but borderline.
**Identified systematic biases:**
- **Anti-institutional overrating:** LLM inflates scores on anti-EU, anti-government motions (e.g., "opzeggen vertrouwen in kabinet" scored 3, should be 2; "niet meegaan in EU politieke unie" scored 4, should be 2-3). Procedural or stance-taking motions scored as radical policy.
- **Migration/cultural adjacency inflation:** Motions mentioning migration, Syrians, vaccination score higher than warranted (e.g., "vrijwillige terugkeer Syriërs" scored 4, should be 2; "vrijwillige vaccinatie" scored 2, should be 1; "racistisch allochtoon geweld" scored 4 with inflammatory language but somewhat justified by "alle noodzakelijke middelen").
- **Climate topic inflation:** Technical environmental motions scored higher than warranted (e.g., "emissiegegevens beter afbakenen" scored 3, should be 2).
**Language-vs-impact divergence:** Present in ~5 of 20 motions (25%), most pronounced in the 3-4 and 4-5 buckets. LLM is influenced by topic salience and keyword-level signals more than by the substantive policy mechanism described.
| # | Year | Category | LLM Score | Bucket | Agreed? | Driver | Notes |
|---|------|----------|-----------|--------|---------|--------|-------|
| 1 | 2024 | economie/belasting | 1 | 1-2 (mild) | Y | Policy | EU directive implementation; routine |
| 2 | 2020 | economie/belasting | 1 | 1-2 (mild) | Y | Policy | Symbolic support for KLM; mild |
| 3 | 2019 | veiligheid/justitie | 1 | 1-2 (mild) | Y | Policy | Budget procedural; trivial |
| 4 | 2025 | economie/belasting | 1 | 1-2 (mild) | Y | Policy | Tax bracket indexing; routine |
| 5 | 2022 | sociaal/jeugd | 1 | 1-2 (mild) | Y | Policy | One-time parent benefit; limited scope |
| 6 | 2021 | corona/pandemie | 2 | 2-3 (moderate) | Y | Policy | Sport venue regulation; moderate |
| 7 | 2021 | zorg/gezondheid | 2 | 2-3 (moderate) | N (→1) | Language | Voluntary vaccination for at-risk; COVID rhetoric inflates |
| 8 | 2020 | economie/belasting | 2 | 2-3 (moderate) | Y | Policy | Government influence on port; moderate |
| 9 | 2025 | veiligheid/justitie | 2 | 2-3 (moderate) | Y | Both | Police oath reform; symbolic + mild policy |
| 10 | 2020 | economie/belasting | 2 | 2-3 (moderate) | Y | Policy | Corporate tax carryback; narrow fiscal |
| 11 | 2020 | veiligheid/justitie | 3 | 3-4 (high) | N (→2) | Language | Motion of no-confidence is parliamentary procedure, not radical policy |
| 12 | 2025 | klimaat/milieu | 3 | 3-4 (high) | N (→2) | Policy | Emission data scoping; narrow technical fix, inflated by climate topic |
| 13 | 2019 | asiel/vreemdelingen | 3 | 3-4 (high) | Y | Policy | Withdraw from UN Refugee Pact; substantive |
| 14 | 2019 | landbouw/stikstof | 3 | 3-4 (high) | Y | Policy | Substantially relax nitrogen rules; high environmental impact |
| 15 | 2020 | klimaat/milieu | 3 | 3-4 (high) | Y | Both | Wolf culling permits; inflammatory topic but permit-framework |
| 16 | 2020 | veiligheid/justitie | 4 | 4-5 (extreme) | Y | Both | "Street terrorists" + denaturalization; both inflammatory and materially extreme |
| 17 | 2021 | defensie/buitenland | 4 | 4-5 (extreme) | N (→2-3) | Language | Standard Eurosceptic position; "niet meegaan in verdere integratie" is moderate |
| 18 | 2023 | asiel/vreemdelingen | 4 | 4-5 (extreme) | Y | Policy | Asylum stop; radical policy against international obligations |
| 19 | 2025 | asiel/vreemdelingen | 4 | 4-5 (extreme) | N (→2) | Language | *Voluntary* return of Syrians is moderate policy; migration topic inflates |
| 20 | 2019 | sociaal/jeugd | 4 | 4-5 (extreme) | Y | Both | "All necessary means against racist immigrant violence"; inflammatory + broad powers
## 7. Limitations
- **Small-N time series:** 8 pre-2024 years and at most 3 post-2024 years (2026 is partial).
Effect sizes are descriptive, not confirmatory.
- **LLM extremity scores:** Content-based, not independently validated beyond the
manual audit above. See §6 for agreement rate and noted biases.
- **Coalition composition:** Hardcoded per year. 2024 is ambiguous (Rutte IV until July,
Schoof thereafter). Early 2024 motions may be miscoded as Schoof-era.
- **Submitter party identification:** Parsed from motion title prefixes (e.g.,
'Motie van het lid X'). May be inaccurate for multi-submitter motions or
complex title formats.
- **Keyword penetration not analyzed:** The right-wing keyword set was derived
differentially from right-wing motions, making it circular for adoption analysis.
- **Pass rate baseline:** Computed across all motions with voting data. Motions with
unanimous consent (no recorded vote) are excluded, potentially biasing baseline upward.
## 8. Figures
![Figure 1: Centrist Support and Pass Rate](breakpoint_figure_1.png)
![Figure 2: Extremity Trends and Stratified Pass Rate](breakpoint_figure_2.png)
## 9. Conclusion
### Core finding: Centrist support for right-wing motions surged post-2024 (d=+0.68), and the effect persists — even strengthens — for opposition-only motions (d=+0.85). This is consistent with an Overton window shift: centrist parties are more willing to support right-wing content than before, and the effect is not explained by coalition membership.
### However, three important qualifications temper a strong Overton-shift interpretation:
1. **Content extremity did not increase** (d=-0.09). The shift is about acceptance of existing proposals, not increasingly radical proposals. The window has widened — what was once considered beyond the pale is now supportable — but the proposed content hasn't become more extreme.
2. **Pass rate is near ceiling** (96%+ in all periods). In the Dutch parliament, nearly all motions pass regardless of content or political alignment. Pass rate is insensitive as a shift indicator. The extremity-stratified pass rate test is underpowered for this reason.
3. **LLM extremity scores are imperfect** (75% audit agreement; borderline). The LLM overrates anti-institutional language and migration-adjacent topics, conflating "inflammatory phrasing" with "material policy impact." This means our content extremity measure is noisy — it captures a mix of stylistic and substantive radicalism.
### The migration-centric pattern
The shift is concentrated in migration (centrist support Δ=+0.233) with non-migration showing a much smaller effect (Δ=+0.076). Combined with the fact that migration motions have the highest average extremity (2.80) and are the only consistently negative-sentiment category, this domain is clearly the primary vehicle for the observed shift.
Binary file not shown.

After

Width:  |  Height:  |  Size: 201 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

+134
View File
@@ -0,0 +1,134 @@
# Overton Window Shift in the Dutch Parliament: Findings Report
**Date:** 2026-05-08
**Branch:** feat/right-wing-motion-analysis
**Analysis period:** 20162026
---
## 1. Summary
We tested the hypothesis that the Overton window shifted rightward in the Tweede Kamer using three indicators: centrist support for right-wing motions, content extremity trends, and SVD spatial drift. **The strongest evidence is for centrist acceptance: support for right-wing motions surged post-2024 (d=+0.68), and the effect is even larger for opposition-only motions (d=+0.85) — ruling out a pure coalition explanation.** However, content extremity did not increase (d=-0.09), and SVD axes proved too unstable for cross-window comparison. The shift is centered on the migration domain.
---
## 2. Indicator 1: Centrist Support Breakpoint
### Core finding
Centrist support for right-wing motions rose from a pre-2024 mean of 0.384 to a post-2024 mean of 0.618 — a Cohen's d of +0.68 (medium-large effect). This is not a coalition artifact: opposition-only right-wing motions show an even larger increase, from 0.270 to 0.543 (d=+0.85, large effect).
![Figure 1: Centrist Support and Pass Rate](breakpoint_figure_1.png)
### Pass rate is an insensitive measure
Pass rates are near ceiling in all periods (96%+). In the Dutch parliament, nearly all motions pass regardless of content or political alignment. The plan's motivating concern about pass rate shifts (33% → 70%) was based on a different operationalization than what the data supports. With 96%+ passage rates, pass rate cannot serve as a shift indicator.
### Domain decomposition
The shift is heavily migration-centric:
| Domain | Pre-2024 CS | Post-2024 CS | Δ |
|--------|------------|-------------|---|
| Migration | 0.303 | 0.536 | +0.233 |
| Non-migration | 0.529 | 0.605 | +0.076 |
Migration is the primary vehicle for the observed shift. Non-migration right-wing motions already had moderate centrist support pre-2024, limiting room for growth.
### Extremity-stratified tolerance test: Inconclusive
We tested whether centrists became more tolerant of *high-extremity* content specifically by bucketing motions by extremity score (1-2 mild, 2-3 moderate, 3-4 high, 4-5 extreme) and comparing pre/post pass rates. **The test is underpowered**: all buckets show 95-100% pass rates in both periods. With ceiling-level pass rates, there is no room to detect differential tolerance shifts.
---
## 3. Indicator 2: Content Extremity Trend
### Core finding
Content extremity of right-wing motions **did not increase** (pre-2024: 2.21, post-2024: 2.15, d=-0.09). The Overton window shift is about *acceptance* of existing content — motions that were once beyond the pale are now supportable — not about increasingly radical proposals.
![Figure 2: Extremity Trends and Stratified Pass Rate](breakpoint_figure_2.png)
### LLM scoring reliability
A stratified manual audit of 20 motions (5 per extremity bucket) achieved **75% agreement** (15/20), above the 70% threshold but borderline. Identified biases:
- **Anti-institutional overrating:** LLM inflates scores on anti-EU and anti-government motions (procedural stances scored as radical policy)
- **Migration/cultural adjacency inflation:** Motions mentioning migration-adjacent topics score higher than warranted
- **Climate topic inflation:** Technical environmental motions scored higher than warranted
The LLM conflates *stylistic extremity* (inflammatory keywords, charged topics) with *material impact* (substantive rights restrictions, institutional change). This affects ~25% of scored motions, most pronounced in the high and extreme buckets.
**Implication:** Our content extremity measure is noisy. It captures a mix of stylistic and substantive radicalism. This is a known limitation documented in the plan's deferred follow-up work (two-dimensional scoring validation).
---
## 4. Indicator 3: SVD Spatial Drift — INCONCLUSIVE
### Stability gate: FAILED
SVD axes were validated for stability across annual windows using Spearman rank correlation of party positions. **9 of 10 consecutive window pairs failed** the ρ ≥ 0.7 threshold (maximum allowed: 2). Mean axis-1 correlation: ρ=0.0054; mean axis-2 correlation: ρ=0.2128.
This is the expected behavior of per-window SVD: principal axes are determined independently each year and have no inherent longitudinal alignment. Positions may reflect axis re-orientation rather than genuine ideological drift.
![SVD Drift Chart](svd_drift_chart.png)
**We cannot draw conclusions about spatial drift from SVD first-two-dimensions data.** See the stability report for per-pair details.
### Path forward
The explorer UI uses Procrustes-aligned PCA positions (`load_party_scores_all_windows_aligned` in `analysis/explorer_data.py`) which provide a common reference frame for cross-window comparison. A revised U3 could use this approach. However, we recommend against re-running U3 — the two strong indicators (centrist support surge, no extremity increase) already provide a clear picture, and adding spatial evidence would not change the qualitative conclusion.
---
## 5. Synthesis
### What we can say with confidence
1. **Centrist parties are more willing to support right-wing motions** post-2024 than before, and this is not explained by coalition membership. Cohen's d = +0.85 for opposition-only motions represents a large effect.
2. **The shift is migration-centric.** Migration motions saw +0.233 centrist support gain; non-migration saw only +0.076. Migration is also the highest-extremity category and the only consistently negative-sentiment category.
3. **Content extremity did not increase.** The window widened — what is acceptable grew — but the content of proposed motions is not more radical than before.
### What we cannot say
1. **We cannot claim spatial (SVD) drift.** Axes are too unstable for cross-window comparison.
2. **We cannot quantify how much of the shift is topic-driven vs. ideology-driven.** Migration is inherently more controversial than other policy domains. If the volume of migration motions increased post-2024, centrist support for the category may reflect the topic's higher baseline controversy rather than shifting ideology.
3. **We cannot distinguish between sincere ideological shift and strategic adjustment.** Centrist parties may genuinely agree more with right-wing content, or they may be voting differently for coalition-management or electoral reasons.
### Uncertainty hierarchy
| Evidence Level | Indicator | Status |
|---------------|-----------|--------|
| **Strong** | Centrist support surge (opposition-controlled) | Confirmed |
| **Moderate** | Migration-specificity of the shift | Confirmed |
| **Inconclusive** | Extremity-stratified tolerance shift | Underpowered (pass rate ceiling) |
| **Inconclusive** | SVD spatial drift | Axes unstable |
| **Weak** | Content extremity trend | No increase (but LLM scoring imperfect) |
---
## 6. Limitations
- **Small-N time series:** 8 pre-2024 years, 3 post-2024 years (2026 is partial). Effect sizes are descriptive, not confirmatory.
- **LLM extremity scores:** 75% audit agreement; borderline. Scores conflate stylistic and substantive radicalism. See deferred follow-up work for two-dimensional rescoring plan.
- **SVD axis instability:** Cross-window SVD comparison is invalid without alignment. Spatial indicator discarded.
- **Coalition composition:** Hardcoded per year. 2024 is ambiguous (Rutte IV until July, Schoof thereafter). Early 2024 motions may be miscoded.
- **Submitter party identification:** Parsed from motion title prefixes. ~10% of motions have non-standard titles (bills, amendments) and are excluded from opposition-only analysis.
- **Pass rate baseline:** Computed across motions with recorded votes. Unanimous consent motions are excluded, potentially biasing baseline upward. The Dutch parliament's near-universal passage rate makes pass rate a poor sensitivity measure.
---
## 7. Figures
1. `breakpoint_figure_1.png` — Centrist support and pass rate over time (all RW, opposition-only, migration, non-migration, + baseline)
2. `breakpoint_figure_2.png` — Extremity trends and extremity-stratified pass rate (pre vs. post 2024)
3. `svd_drift_chart.png` — SVD centrist center trajectory (unreliable — axes unstable)
---
## 8. Next Steps
1. **Commit findings** and archive the analysis on `feat/right-wing-motion-analysis`.
2. **Two-dimensional extremity rescoring** (deferred): Validate whether LLM scores capture stylistic vs. material radicalism on a stratified sample. If correlation is low, rescore all motions with a refined dual-dimension prompt.
3. **Procrustes-aligned SVD** (optional): If spatial evidence is desired, rerun U3 using `load_party_scores_all_windows_aligned` from `explorer_data.py` for a common reference frame.
4. **Temporal decomposition of migration vs. other domains:** The 2024 shift may be partially explained by the increased volume of migration motions, rather than a general rightward shift. Disentangle topic composition from ideological drift.
Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

@@ -0,0 +1,60 @@
# SVD Center Drift & Axis Stability Report
## Axis Stability Validation
**Stability threshold:** Spearman ρ ≥ 0.7 for both axes. Maximum unstable pairs allowed: 2.
**Result:** 9 unstable pair(s) out of 10 consecutive window pairs.
**CONCLUSION: SVD axes are too unstable for longitudinal comparison. Positions may reflect re-orientation rather than genuine drift. The following drift metrics and chart should be interpreted with extreme caution.**
- Mean axis-1 correlation: 0.0054
- Mean axis-2 correlation: 0.2128
### Per-Pair Stability Details
| Window Pair | Axis 1 ρ | Axis 2 ρ | Unstable | Shared Parties |
|---|---|---|---|---|
| 2016-2017 | -0.439 | 0.257 | **YES** | BBB, CDA, ChristenUnie, D66, DENK, GrBvK, GroenLinks-PvdA, Houwers, Klein, Krol, Monasch, NSC, PVV, PvdD, SGP, SP, VVD, Van Vliet |
| 2017-2018 | -0.779 | 0.876 | **YES** | 50PLUS, BBB, CDA, ChristenUnie, D66, DENK, FVD, GroenLinks-PvdA, Groep Van Haga, Krol, NSC, PVV, PvdD, SGP, SP, VVD |
| 2018-2019 | 0.897 | -0.024 | **YES** | 50PLUS, BBB, CDA, ChristenUnie, D66, DENK, FVD, GroenLinks-PvdA, Groep Van Haga, Krol, NSC, PVV, PvdD, SGP, SP, VVD |
| 2019-2020 | -0.819 | 0.353 | **YES** | 50PLUS, BBB, CDA, ChristenUnie, D66, DENK, FVD, GroenLinks-PvdA, Groep Van Haga, Krol, NSC, PVV, PvdD, SGP, SP, VVD, vKA |
| 2020-2021 | 0.797 | -0.772 | **YES** | 50PLUS, BBB, CDA, ChristenUnie, D66, DENK, FVD, GroenLinks-PvdA, Groep Van Haga, Krol, NSC, PVV, PvdD, SGP, SP, VVD, vKA |
| 2021-2022 | 0.893 | 0.910 | no | BBB, BIJ1, CDA, ChristenUnie, D66, DENK, Ephraim, FVD, Fractie Den Haan, GroenLinks-PvdA, Groep Van Haga, JA21, NSC, PVV, PvdD, SGP, SP, VVD, Volt |
| 2022-2023 | 0.889 | -0.379 | **YES** | BBB, BIJ1, CDA, ChristenUnie, D66, DENK, Ephraim, FVD, Fractie Den Haan, GroenLinks-PvdA, Groep Van Haga, JA21, NSC, PVV, PvdD, SGP, SP, VVD, Volt |
| 2023-2024 | -0.229 | 0.821 | **YES** | BBB, CDA, ChristenUnie, D66, DENK, FVD, GroenLinks-PvdA, JA21, NSC, PVV, PvdD, SGP, SP, VVD, Volt |
| 2024-2025 | -0.757 | 0.779 | **YES** | BBB, CDA, ChristenUnie, D66, DENK, FVD, GroenLinks-PvdA, JA21, NSC, PVV, PvdD, SGP, SP, VVD, Volt |
| 2025-2026 | -0.400 | -0.694 | **YES** | 50PLUS, BBB, CDA, ChristenUnie, D66, DENK, FVD, GroenLinks-PvdA, JA21, NSC, PVV, PvdD, SGP, SP, VVD, Volt |
## Centrist Center of Gravity
| Window | Centrist Ax1 | Centrist Ax2 | Right Ax1 | Right Ax2 | Centrist Parties Present | Right Parties Present |
|---|---|---|---|---|---|---|
| 2016 | 5.1514 | 0.1220 | 5.6432 | 0.5936 | BBB, CDA, ChristenUnie, D66, NSC, VVD | PVV, SGP |
| 2017 | -3.6524 | -0.7100 | -3.7095 | 1.3546 | BBB, CDA, ChristenUnie, D66, NSC, VVD | FVD, PVV, SGP |
| 2018 | 5.1662 | -0.8347 | 2.2336 | 3.7263 | BBB, CDA, ChristenUnie, D66, NSC, VVD | FVD, PVV, SGP |
| 2019 | 11.7312 | -2.6126 | 7.1092 | 6.5966 | BBB, CDA, ChristenUnie, D66, NSC, VVD | FVD, PVV, SGP |
| 2020 | -27.1482 | 2.8304 | -9.2387 | -14.1063 | BBB, CDA, ChristenUnie, D66, NSC, VVD | FVD, PVV, SGP |
| 2021 | -15.9032 | -0.6795 | -6.3142 | 19.8728 | BBB, CDA, ChristenUnie, D66, NSC, VVD | FVD, JA21, PVV, SGP |
| 2022 | -28.5270 | -0.6204 | -3.8504 | 19.8373 | BBB, CDA, ChristenUnie, D66, NSC, VVD | FVD, JA21, PVV, SGP |
| 2023 | -15.7130 | 0.1571 | -5.0623 | -15.8667 | BBB, CDA, ChristenUnie, D66, NSC, VVD | FVD, JA21, PVV, SGP |
| 2024 | 26.2822 | 19.2003 | 24.9072 | -0.8372 | BBB, CDA, ChristenUnie, D66, NSC, VVD | FVD, JA21, PVV, SGP |
| 2025 | -8.1667 | 12.0249 | -14.5604 | 1.7604 | BBB, CDA, ChristenUnie, D66, NSC, VVD | FVD, JA21, PVV, SGP |
| 2026 | -13.6251 | 3.4321 | -3.8011 | 16.7538 | BBB, CDA, ChristenUnie, D66, NSC, VVD | FVD, JA21, PVV, SGP |
## Drift Metrics (UNRELIABLE — Axes Unstable)
Drift metrics were computed but are unreliable due to axis instability. Cross-window comparisons on unstable axes conflate positional change with axis re-orientation.
## Chart
![SVD Drift Chart](svd_drift_chart.png)
## Interpretability Statement
SVD axes are too unstable for longitudinal comparison. The trajectory plotted above may reflect axis re-orientation (each SVD window independently determines its principal axes) rather than genuine ideological drift. We recommend against drawing conclusions from this analysis.
---
*Note: SVD axes reflect voting patterns, not semantic content. A shift means voting behavior changed, not that parties changed their rhetoric. See: docs/solutions/best-practices/svd-labels-voting-patterns-not-semantics.md*