Unerwartete Histogramm-Probleme

Histogramm: Man nimmt sich einen Wertebereich und teilt diesen in gleich große Bereich. Nun werde alle Werte in die passenden Bereich einsortiert. Am Ende erhält man normalisierte Daten die aus Bereichen und der Anzahl der in dem Bereich liegen Werte bestehen.

Dies hat bei Bar-Charts bei der Darstellung viele Vorteile. Für Slider braucht man so etwas nicht, da man dort nur den Min- und Max-Wert braucht.

Wenn man nun viele dicht bei einander liegende Werte hat, bekommt man ein geringere Datenmenge als es die Einzelwerte wären.

Als Beispiel nehmen wir diese Werte


105
107
115
115
116
121
144


Wenn wir nun Bereiche mit der Weite von 10 definieren erhalten wir


100:2
110:3
120:1
130:0
140:1


Die Berechnung für die Normalisierung ist sehr ein einfach und daher auch schnell.

Wir sparen an der Datenmenge, je mehr Werte pro Bucket einsortiert werden können. Zusätzliche Daten entstehen aber dann wenn man leere Buckets hat. Hätten wir noch zusätzlich die Werte 1 und 1.000.000 hätten wir nicht mehr 5 Buckets sondern 1.000.000 / 10 also 100.000 Buckets für 9 Werte.

Würden wir PHP mit einer Max-Size 64M für ein Script können wir schon schnell Probleme mit dem Speicher bekommen, wenn zur Speicherung der Bucket Objekte oder eine HashMap verwendet wird.

bbcode-image


Wenn man Histogramme verwendet sollte man immer an diese Problematik denken und wenn möglich nur gefüllte Buckets laden, also ein Min-Count von 1 setzen
und die leeren Buckets erst bei Bedarf rekonstruieren.
User annonyme 2017-04-14 14:28

write comment:
Eight + = 14