--- title: "SVD Axis Overtone Shift Analysis: Deep Dive" date: 2026-04-05 module: analysis problem_type: research component: motion-analysis tags: [svd, overtone-shift, semantic-drift, time-series, parliamentary-analysis] --- # SVD Axis Overtone Shift: Deep Dive Analysis ## Executive Summary This analysis explores the relationship between **axis stability** (structural consistency of SVD components over time) and **overtone shift** (semantic drift of motion content within those stable axes). The key finding is that these are **independent phenomena**: axes can be structurally stable (same parties voting similarly) while their semantic content drifts dramatically. ## Key Finding: Stability vs. Semantic Content are Independent | Phenomenon | What it Measures | Typical Value | Interpretation | |------------|-----------------|---------------|----------------| | **Axis Stability** | Consistency of which motions load on an axis | 0.70-0.83 | Structural alignment of semantic signatures | | **Overtone Shift** | How motion content evolves over time | 1.30-1.97 | Semantic drift within stable structure | ### Why This Matters A stable axis (e.g., "Rechts kabinetsbeleid versus links oppositiebeleid") means: - The same coalition/opposition voting pattern persists across years - Parties maintain consistent relative positions But high overtone shift means: - The specific topics that define "coalition" vs "opposition" change substantially - Motions discussed in 2026 are semantically different from 2016 even though they occupy the same axis position ## Detailed Findings ### Axis Stability Results (Lasso Regression, alpha=0.1) | Axis | Avg Stability | Classification | Interpretation | |------|---------------|---------------|----------------| | 1 | 0.83 | Stable | Coalition vs opposition voting pattern is consistent | | 2 | 0.75 | Stable | PVV/FVD populist positioning vs mainstream | | 3 | 0.78 | Stable | Welfare state vs market liberalisation | | 4 | 0.72 | Stable | NSC/BBB vs D66/CDA/JA21 | | 5 | 0.70 | Stable | Christian-social vs progressive-individual | | 6 | 0.35 | **Reordered** | Migration/culture axis most volatile | | 7 | 0.77 | Stable | Administrative pragmatism | | 8 | 0.79 | Stable | Healthcare/education/regional housing | | 9 | 0.76 | Stable | System reform vs practical governance | | 10 | 0.74 | Stable | Regulation vs deregulation | ### Overtone Shift Results | Axis | Avg Shift | Max Shift | Inflection Points | |------|-----------|-----------|-------------------| | 1 | 1.47 | 1.97 | 0 | | 2 | 1.42 | 1.79 | 0 | | 3 | 1.38 | 1.83 | 0 | | 4 | 1.39 | 1.89 | 0 | | 5 | 1.43 | 1.93 | 0 | | 7 | 1.31 | 1.84 | 0 | | 8 | 1.30 | 1.89 | 0 | | 9 | 1.38 | 1.93 | 0 | | 10 | 1.30 | 1.72 | 0 | **Critical observation**: ALL stable axes show high overtone shift (1.3-1.97), with no inflection points detected. This indicates **gradual, continuous semantic drift** rather than sudden shifts. ## Interpretation Framework ### The "Axis Stability" Metric Axis stability uses **Lasso regression** to learn the semantic signature of each axis: ``` SVD_score ~ fused_embedding ``` The learned weight vector (2610 dimensions) represents which embedding dimensions are most predictive of an axis score. Stability is measured by comparing these weight vectors across windows using: - **Cosine similarity** of full weight vectors - **Jaccard similarity** of top-100 weighted dimensions Why Lasso (alpha=0.1)? The L1 regularization produces sparse weight vectors, concentrating on the most important semantic dimensions. This makes cross-window comparison more robust than dense Ridge regression. ### The "Overtone Shift" Metric Overtone shift computes **semantic gravity** — the weighted mean fused embedding of all motions on an axis: ``` gravity = weighted_mean(fused_embeddings, weights=abs(SVD_scores)) ``` The cosine distance between gravity vectors of consecutive windows measures how the "center of mass" of motion content moves. High shift values (1.3-1.9) indicate the motion topics that define each axis change substantially over time. ## Implications for Interpretation ### For Users of the Stemwijzer 1. **Axis labels are temporally bounded** — The label "Rechts kabinetsbeleid versus links oppositiebeleid" accurately describes the 2016-2026 period, but the specific motions that exemplify this axis have changed. 2. **Cross-temporal comparison is valid structurally but not semantically** — Party positions along Axis 1 are comparable across years (stable structure), but the meaning of extreme positions has shifted (high overtone). 3. **Axis 6 (Migration/Culture)** is an exception — Low stability (0.35) suggests this axis may have fundamentally changed meaning or composition over the period. ### For Analysts Studying Parliamentary Evolution 1. **Coalition/opposition as a dimension is remarkably stable** — Despite changes in coalition composition (Rutte III, Rutte IV, Schoof), the first axis consistently captures this dynamic. 2. **Policy content evolves within stable voting patterns** — What constitutes "coalition policy" in 2026 differs semantically from 2016, even if the voting alignment remains. 3. **The 2022-2023 period may be significant** — Gap in windows (2020-2021) coincides with COVID and government crises, potentially affecting overtone patterns. ## Methodological Notes ### Why Lasso (alpha=0.1)? Three alternatives were evaluated and rejected: | Approach | Problem | |----------|---------| | Jaccard similarity of top-N motion IDs | Motions are unique per window — 0% overlap | | Cosine similarity of embedding centroids | Near-zero similarity due to varying embedding dimensions | | Ridge regression weights | Dense weights less interpretable; Lasso concentrates signal | Lasso (alpha=0.1) was chosen for: - **Interpretability**: Sparse weights identify key semantic dimensions - **Robustness**: Top-K dimension matching captures structural similarity - **Stability**: Results are less sensitive to embedding dimension changes ### Dimension Alignment Challenge Fused embeddings have varying dimensions across windows (typically 768-2610). All comparisons use **minimum common dimension** alignment to ensure valid cosine similarity computation. ### Inflection Point Detection Inflection points are defined as shift/drift rates exceeding 2× median rate. The absence of detected inflection points suggests **gradual, continuous drift** rather than sudden semantic shifts — consistent with how policy debates evolve incrementally. ## Recommendations ### For Stemwijzer Maintenance 1. **Re-run overtone analysis after SVD recomputation** — Current themes may drift further from the underlying data 2. **Monitor Axis 6 specifically** — Low stability warrants closer attention during axis updates 3. **Consider temporal weighting in visualizations** — Recent windows may better represent current semantics ### For Future Research 1. **Correlate overtone shift with political events** — External factors (elections, crises) may explain inflection patterns 2. **Analyze dimension-level drift patterns** — Which specific embedding dimensions drive the shift? 3. **Extend to party-level analysis** — Do individual parties show consistent voting semantics over time? ## Related Files - `scripts/motion_drift.py` — Analysis script - `reports/drift/report.md` — Generated report - `reports/drift/axis_stability.png` — Stability heatmaps - `reports/drift/semantic_drift.png` — Drift timelines - `reports/drift/party_trajectories.png` — Party position plots