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