Korrektur der eigenen Verdict-Auswertung: die Gewichtung ist NICHT invertiert

Der Anteil "ueber alle Zeilen" mischt Gewichtung und Haeufigkeit. Entscheidend
fuer "ist die Gewichtung kaputt?" ist der Anteil, WENN ein Modul spricht:

  Welle 44,4 % · H1 39,3 % · Squeeze 37,3 % · M30 31,9 % · Elliott 26,2 % ·
  KI 16,2 %

Die Welle dominiert also mit dem hoechsten Wert im Feld, genau wie entworfen -
ihre 3,8 % im Alltag sind schlicht die 91 % gewollte Stille der Gates. Meine
vorherige Formulierung ("Gewichtung invertiert") war zu scharf und ist
korrigiert.

Was bleibt: H1 und Elliott haben in beiden Spalten fast denselben Wert, weil sie
praktisch nie schweigen - ein permanenter Hintergrund von ~65 %, gegen den die
episodischen Module anschieben muessen. Elliott ist dabei ueber 1.163 Episoden
flach (49 % Treffer).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-08-05 14:23:10 +02:00
co-authored by Claude Opus 5
parent 45c3cec5b5
commit 71aec2e240
2 changed files with 46 additions and 6 deletions
+25 -2
View File
@@ -166,10 +166,33 @@ def main():
ges += 1
for name, w in w_row.items():
summe[name] += w / s
# ⚠ Zwei GRUNDVERSCHIEDENE Fragen, die leicht verwechselt werden:
# (a) Anteil ueber ALLE Zeilen = wie stark praegt das Modul die Nadel im Alltag
# (b) Anteil NUR wenn es spricht = ob die Nominal-Gewichtung tut, was sie soll
# Ein Modul kann bei (a) winzig und bei (b) dominant sein — dann ist die
# Gewichtung KORREKT und das Modul schlicht selten. Ohne (b) haelt man ein
# gewolltes Schweigen faelschlich fuer eine Fehlgewichtung.
bedingt = {n: [0.0, 0] for _, n, _ in _MODULE}
for r in rows:
w_row = {}
for feld, name, gew in _MODULE:
wfeld = feld + "_w"
v = r[feld]
v = 0 if v is None else int(v)
w = (r[wfeld] or 0.0) if wfeld in r.keys() else (gew if v != 0 else 0.0)
w_row[name] = w if v != 0 else 0.0
s = sum(w_row.values())
if s <= 0:
continue
for name, w in w_row.items():
if w > 0:
bedingt[name][0] += w / s
bedingt[name][1] += 1
print(f" {'Modul':<13}{'alle Zeilen':>12}{'wenn es spricht':>18}")
for _, name, gew in _MODULE:
a = 100.0 * summe[name] / max(1, ges)
bar = "" * int(round(a / 2))
print(f" {name:<13}{a:>6.1f} % {bar}")
b_ = (100.0 * bedingt[name][0] / bedingt[name][1]) if bedingt[name][1] else 0.0
print(f" {name:<13}{a:>11.1f} %{b_:>17.1f} % " + "" * int(round(b_ / 3)))
print(f" (n={int(ges)} Zeilen mit mindestens einer Stimme)")
print()