--- title: "SVD Axis Stability and Overtone Shift are Independent Phenomena" date: 2026-04-05 module: analysis problem_type: insight component: motion-analysis severity: medium tags: [svd, overtone-shift, semantic-drift, axis-stability, parliamentary-analysis] applies_when: - Interpreting SVD axes over multiple time windows - Comparing motion content across different parliamentary periods - Understanding why stable axis labels don't guarantee stable motion content --- # SVD Axis Stability and Overtone Shift are Independent Phenomena ## Key Insight When analyzing SVD axes across time windows, **axis stability** and **overtone shift** measure fundamentally different phenomena: | Phenomenon | What it Measures | How to Compute | |------------|-----------------|----------------| | **Axis Stability** | Whether the same motions/embeddings load on an axis | Lasso regression: `SVD_score ~ fused_embedding`, compare weight vectors via cosine similarity + Jaccard | | **Overtone Shift** | How motion content evolves over time | Semantic gravity (weighted mean embedding) tracking via cosine distance | **The implication**: An axis can be "stable" (parties vote similarly across years) while its semantic content drifts dramatically (different motions define the axis). ## Evidence Analysis of 9 annual windows (2016-2026) revealed: - **9 of 10 axes are stable** (similarity > 0.7) - **All stable axes show high overtone shift** (1.3-1.97 cosine distance) - **No inflection points detected** — drift is gradual, not sudden ### Example: Axis 1 (Coalition vs Opposition) | Metric | Value | Interpretation | |--------|-------|----------------| | Axis Stability | 0.83 | Coalition/opposition voting pattern is structurally consistent | | Overtone Shift | 1.47 avg, 1.97 max | Motion content defining "coalition" vs "opposition" has changed substantially | This means: PVV, VVD, NSC, BBB consistently vote together against SP, GL-PvdA, PvdD across all windows — but the specific motions that exemplify "coalition policy" in 2026 are semantically different from 2016. ## Why This Matters 1. **Axis labels are temporally bounded** — "Rechts kabinetsbeleid versus links oppositiebeleid" accurately describes 2016-2026, but the underlying motions have evolved. 2. **Cross-temporal comparison is valid structurally but not semantically** — Party positions are comparable; motion content is not. 3. **Axis 6 (Migration/Culture)** is an exception — Low stability (0.35) suggests fundamental change in how this dimension is structured. ## How to Analyze This Use `scripts/motion_drift.py`: ```bash uv run python scripts/motion_drift.py --db data/motions.db --output reports/drift ``` The script computes: - **Axis stability**: Lasso regression weights compared across windows - **Overtone shift**: Semantic gravity tracking - **Inflection points**: Sudden drift detection - **Party trajectories**: How parties move along stable axes ## Prevention When updating SVD themes: 1. Run `scripts/motion_drift.py` to check current overtone shift levels 2. Verify that theme descriptions match current motion content, not historical content 3. Monitor Axis 6 specifically for stability issues 4. Consider temporal weighting in visualizations — recent windows better represent current semantics ## Related - `scripts/motion_drift.py` — Analysis script - `docs/research/2026-04-05-svd-overtone-shift-deep-dive.md` — Deep analysis - `reports/drift/report.md` — Generated report