# Center Drift Report (Procrustes-Aligned) ## Alignment Method Party positions are Procrustes-aligned across all windows, then PCA-rotated to a common 2D reference frame. This ensures that axis orientation is consistent across time — no stability validation is needed because all positions live in the same coordinate system. This is the same alignment used by the Explorer UI compass and trajectories: 1) zero-padding vectors to max dimension across all windows, 2) chained Procrustes orthogonal rotation (each window to the previous aligned one), 3) global PCA on the stacked aligned matrix, 4) flip-correction per component using canonical left/right parties. **Note:** Non-annual windows excluded from drift analysis: current_parliament ## Axis Interpretation After flip correction, the Procrustes-aligned PCA axes have the following sign convention (verified by querying party positions): - **Axis 1 (economic):** Positive = pro-market/right, negative = welfare/left. Right-wing parties score higher; left-wing parties score lower. - **Axis 2 (cultural/nationalist):** Positive = kosmopolitisch/left-wing, **negative = nationalist/right-wing**. This is the *opposite* of what the raw `SVD_THEMES[2]` label says, because PCA axes are flip-corrected to align with canonical left/right parties. > **Signed parties:** PVV (y = −0.56), FVD (y = −0.36), JA21 (y = −0.36) all negative = nationalist/right-wing. GL-PvdA (y = +0.21), Volt (y = +0.27) positive = kosmopolitisch/left-wing. ## Centrist Center of Gravity | Window | Centrist Ax1 | Centrist Ax2 | Right Ax1 | Right Ax2 | Centrist Parties | Right Parties | |---|---|---|---|---|---|---| | 2016 | 0.3395 | 0.0103 | 0.1321 | -0.2716 | BBB, CDA, ChristenUnie, D66, NSC, VVD | FVD, JA21, PVV, SGP | | 2017 | 0.2623 | 0.0278 | 0.0981 | -0.3418 | BBB, CDA, ChristenUnie, D66, NSC, VVD | FVD, JA21, PVV, SGP | | 2018 | 0.2844 | 0.1560 | 0.0724 | -0.3819 | BBB, CDA, ChristenUnie, D66, NSC, VVD | FVD, JA21, PVV, SGP | | 2019 | 0.0535 | 0.0446 | -0.0361 | -0.2754 | BBB, CDA, ChristenUnie, D66, NSC, VVD | FVD, JA21, PVV, SGP | | 2020 | 0.2615 | 0.1170 | -0.0858 | -0.3468 | BBB, CDA, ChristenUnie, D66, NSC, VVD | FVD, JA21, PVV, SGP | | 2021 | 0.1182 | 0.0838 | 0.0378 | -0.3388 | BBB, CDA, ChristenUnie, D66, NSC, VVD | FVD, JA21, PVV, SGP | | 2022 | 0.1567 | 0.1876 | 0.0117 | -0.3509 | BBB, CDA, ChristenUnie, D66, NSC, VVD | FVD, JA21, PVV, SGP | | 2023 | 0.0951 | -0.0041 | -0.0040 | -0.3228 | BBB, CDA, ChristenUnie, D66, NSC, VVD | FVD, PVV, SGP | | 2024 | 0.2122 | 0.1209 | 0.1295 | -0.3524 | BBB, CDA, ChristenUnie, D66, NSC, VVD | FVD, PVV, SGP | | 2025 | 0.0214 | -0.0010 | 0.0323 | -0.3755 | BBB, CDA, ChristenUnie, D66, NSC, VVD | FVD, PVV, SGP | | 2026 | 0.1169 | 0.0914 | 0.0542 | -0.3368 | BBB, CDA, ChristenUnie, D66, NSC, VVD | FVD, PVV, SGP | | current_parliament | 0.0366 | 0.0181 | 0.0703 | -0.2993 | BBB, CDA, ChristenUnie, D66, NSC, VVD | PVV, SGP | ## Drift Metrics (Annual Windows Only) - **Net centrist displacement (first → last):** 0.236936 - Δ axis-1: −0.222632 → **LEFT** economically (more welfare-oriented) - Δ axis-2: +0.081077 → **LEFT** culturally (more kosmopolitisch) - **Net direction:** 159.99° (arctan2(Δy, Δx)) - Negative Δx = leftward on axis 1 (welfare) - Positive Δy = leftward on axis 2 (kosmopolitisch) - **Right-wing net displacement (reference):** - Net displacement: 0.101517 - Δ axis-1: −0.077852 → **LEFT** economically (slightly more welfare) - Δ axis-2: −0.065152 → **RIGHT** culturally (more nationalist) - **Centrist–right distance (Euclidean):** - First window: 0.3500 - Last window: 0.4327 - Δ distance: +0.0827 - **Centrist–right cultural distance (axis 2):** - First window: 0.282 → Centrist +0.010, Right −0.272 - Last window: 0.428 → Centrist +0.091, Right −0.337 - Δ cultural distance: +0.146 (culture gap widened) ### Year-over-Year Drift | Window Pair | Distance | Δ Axis-1 | Δ Axis-2 | |---|---|---|---| | 2016-2017 | 0.079190 | -0.077243 | +0.017454 | | 2017-2018 | 0.130100 | +0.022145 | +0.128201 | | 2018-2019 | 0.256345 | -0.230871 | -0.111406 | | 2019-2020 | 0.220175 | +0.207912 | +0.072456 | | 2020-2021 | 0.147073 | -0.143268 | -0.033236 | | 2021-2022 | 0.110660 | +0.038466 | +0.103759 | | 2022-2023 | 0.201353 | -0.061559 | -0.191712 | | 2023-2024 | 0.171334 | +0.117084 | +0.125086 | | 2024-2025 | 0.226449 | -0.190820 | -0.121930 | | 2025-2026 | 0.132903 | +0.095522 | +0.092406 | **Total path length:** 1.675582 ## Chart ![Drift Chart](svd_drift_chart.png) ## Key Finding: Spatial Divergence Centrists moved **LEFT on both axes** while right-wing moved **further RIGHT culturally**. The centrist–right cultural distance widened (0.282 → 0.428, +0.146). This is **spatial divergence**, not convergence — consistent with "acceptance without conversion": the political window widens without parties changing their underlying ideological positions. Centrists became more welfare-oriented and kosmopolitisch; right-wing became more nationalist. ## Interpretability Statement Party positions use Procrustes-aligned PCA axes that provide a common reference frame across all windows. Unlike raw per-window SVD axes — which may re-orient between windows and cause 9/10 consecutive window pairs to fail axis stability (Spearman ρ < 0.7) — this alignment ensures that positional changes reflect genuine shifts in voting behavior rather than axis re-orientation artifacts. The centrist center-of-gravity movement on the 2D compass can be interpreted as a measure of ideological drift. --- *Note: PCA 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*