You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
motief/docs/solutions/insights/svd-stability-vs-overtone-s...

79 lines
3.4 KiB

---
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