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.
79 lines
3.4 KiB
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
|
|
|