fix(analysis): add Procrustes alignment and normalize vectors for drift computation
SVD sign/rotation is arbitrary per window. Without alignment, drift was dominated by basis flips (~1.9/step max=2.0) rather than real political movement. - _procrustes_align_windows(): aligns each window to the previous using orthogonal Procrustes on common entities (scipy, falls back gracefully) - compute_trajectories(): builds aligned window dict before per-MP drift calc, adds normalize=True (L2-normalise) to remove cross-window magnitude differences caused by varying numbers of motions per quarter - Results now in sensible range: NSC=2.28, DENK=1.90, ... PVV=0.82, FVD=0.70 - NSC large late jump (1.39 in Q4→Q1 2026) matches its parliamentary fracture - Add outputs/trajectories_party_aligned.html with cleaned-up drift chart
This commit is contained in:
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user