Stimmverhalten: Über-Zeit-Drift (Quartal × Fraktion) #168

Closed
opened 2026-04-29 22:41:02 +02:00 by tobias · 1 comment
Owner

Folge-Issue zum Stimmverhalten-Feature (siehe Umbrella).

Idee

Stimm-Index pro Fraktion über die Zeit — Quartale oder Halbjahre der laufenden Wahlperiode. Macht sichtbar, ob sich die Gemeinwohl-Affinität einer Fraktion innerhalb der WP verschoben hat.

Erwartete Aussagen

  • „GRÜNE in NRW WP18 starteten mit Stimm-Index +1.5, sind im Q4 auf +0.3 gefallen"
  • „AfD-Index ist über die WP konstant negativ (kein Lerneffekt)"
  • Frühwarnsystem für Drift in einer Koalition

Implementierung

In app/auswertungen.py:

  • aggregate_stimm_index_zeitreihe(filter_bl, partei, granularitaet="quarter", min_n_per_bucket=3) — analog zu aggregate_zeitreihe, aber JOIN mit plenum_vote_results und Bucket nach Quartal/Halbjahr basierend auf assessment.datum.
  • Returns: [{bucket: "2024-Q1", n_ja: int, n_nein: int, stimm_index: float}, ...].

In app/main.py:

  • GET /api/auswertungen/stimm-index-zeitreihe?bundesland=&partei=&granularitaet=quarter

In Template:

  • Sub-Sektion mit Linien-Chart (Chart.js, gleiches Pattern wie das bestehende Zeitreihen-Modal in showZeitreihe()).
  • Multi-Fraktion-Vergleich: pro Fraktion eine Linie, alle in einem Chart.

Warum nicht in Phase 1?

Bei N=35 Assessments verteilt auf ~4 Quartale wären die Buckets zu dünn. Sinnvoll erst ab ~10 Anträge pro Quartal pro Fraktion (also ~200+ Assessments).

Folge-Issue zum Stimmverhalten-Feature (siehe Umbrella). ## Idee Stimm-Index pro Fraktion **über die Zeit** — Quartale oder Halbjahre der laufenden Wahlperiode. Macht sichtbar, ob sich die Gemeinwohl-Affinität einer Fraktion innerhalb der WP verschoben hat. ## Erwartete Aussagen - „GRÜNE in NRW WP18 starteten mit Stimm-Index +1.5, sind im Q4 auf +0.3 gefallen" - „AfD-Index ist über die WP konstant negativ (kein Lerneffekt)" - Frühwarnsystem für Drift in einer Koalition ## Implementierung In `app/auswertungen.py`: - `aggregate_stimm_index_zeitreihe(filter_bl, partei, granularitaet="quarter", min_n_per_bucket=3)` — analog zu `aggregate_zeitreihe`, aber JOIN mit `plenum_vote_results` und Bucket nach Quartal/Halbjahr basierend auf `assessment.datum`. - Returns: `[{bucket: "2024-Q1", n_ja: int, n_nein: int, stimm_index: float}, ...]`. In `app/main.py`: - `GET /api/auswertungen/stimm-index-zeitreihe?bundesland=&partei=&granularitaet=quarter` In Template: - Sub-Sektion mit Linien-Chart (Chart.js, gleiches Pattern wie das bestehende Zeitreihen-Modal in `showZeitreihe()`). - Multi-Fraktion-Vergleich: pro Fraktion eine Linie, alle in einem Chart. ## Warum nicht in Phase 1? Bei N=35 Assessments verteilt auf ~4 Quartale wären die Buckets zu dünn. Sinnvoll erst ab ~10 Anträge pro Quartal pro Fraktion (also ~200+ Assessments).
Author
Owner

Implementiert in commit 1e381d2.

Live auf dev: /api/auswertungen/stimm-index-zeitreihe und 4. Sub-Section im Stimmverhalten-Tab (Multi-Linien-Chart mit Partei-Farben).

Bei aktueller Datenmenge (35 Assessments × 4 Quartale) ist der Chart heute meist leer — die Infrastruktur ist fertig und fuellt sich automatisch, sobald mehr Anträge bewertet wurden (Issue #44 Batch-Bewertung).

Aktuelle Quartale auf dev: 2023-Q1, 2024-Q4, 2025-Q1, 2026-Q1. AfD hat in 2026-Q1 einen Stimm-Index von −1.25 (4 Datenpunkte). Andere Fraktionen unterhalb min_n_per_bucket=3.

Closing.

Implementiert in commit 1e381d2. Live auf dev: `/api/auswertungen/stimm-index-zeitreihe` und 4. Sub-Section im Stimmverhalten-Tab (Multi-Linien-Chart mit Partei-Farben). Bei aktueller Datenmenge (35 Assessments × 4 Quartale) ist der Chart heute meist leer — die Infrastruktur ist fertig und fuellt sich automatisch, sobald mehr Anträge bewertet wurden (Issue #44 Batch-Bewertung). Aktuelle Quartale auf dev: 2023-Q1, 2024-Q4, 2025-Q1, 2026-Q1. AfD hat in 2026-Q1 einen Stimm-Index von **−1.25** (4 Datenpunkte). Andere Fraktionen unterhalb min_n_per_bucket=3. Closing.
Sign in to join this conversation.
No description provided.