Mittelwert und Standardabweichung
Wertet eine Zahlenreihe aus: Mittelwert, Median, Spannweite, Varianz und Standardabweichung — für Stichprobe und Grundgesamtheit.
Eine Reihe von Messwerten, Noten oder Verkaufszahlen sagt für sich genommen wenig. Erst die Kennzahlen machen sie vergleichbar: Wo liegt die Mitte, und wie weit streuen die Werte darum herum? Dieses Script rechnet die gängigen Größen auf einmal aus.
Tragt eure Zahlen ein — durch Leerzeichen, Kommas, Semikolons oder Zeilenumbrüche getrennt, das Script erkennt alle Varianten. Dezimalstellen dürft ihr mit Komma oder Punkt schreiben.
Zwei Mittelwerte werden ausgegeben, und der Unterschied ist wichtig. Das arithmetische Mittel ist der Durchschnitt, den jeder kennt: alles zusammenzählen, durch die Anzahl teilen. Der Median ist der Wert genau in der Mitte, wenn man alle der Größe nach sortiert. Bei Einkommen liegen die beiden weit auseinander — wenige sehr hohe Werte ziehen den Durchschnitt nach oben, während der Median unberührt bleibt. Deshalb ist beim Einkommen fast immer der Median die ehrlichere Zahl.
Die Standardabweichung misst, wie weit die Werte typischerweise vom Mittelwert entfernt liegen. Zwei Klassen können denselben Notendurchschnitt haben — in der einen liegen alle nah bei drei, in der anderen gibt es nur Einsen und Fünfen. Erst die Standardabweichung macht diesen Unterschied sichtbar. Das Script gibt sie in zwei Fassungen aus; welche wann gilt, steht in der Erklärung.
Verwandtes im Archiv: Prozentrechnung, Binomialverteilung für Wahrscheinlichkeiten und Notenrechner für die Auswertung einer Klassenarbeit.
Trennzeichen dürfen Leerzeichen, Kommas, Semikolons oder Zeilenumbrüche sein; Dezimaltrenner ist Punkt oder Komma.
So funktioniert das Script
Die Kennzahlen selbst sind wenige Zeilen. Interessant sind das Einlesen unsauberer Eingaben und die Frage, wann durch n und wann durch n − 1 geteilt wird.
const vorbereitet = text.replace(/(\d),(\d)/g, "$1.$2");
return vorbereitet.split(/[^0-9.\-+eE]+/)…
Das Komma ist im Deutschen zweideutig: In „2,5" ist es ein Dezimaltrenner, in „2, 5" trennt es zwei Zahlen. Die erste Zeile löst das über den Zusammenhang — nur ein Komma zwischen zwei Ziffern wird zum Punkt. Danach wird an allem getrennt, was nicht Teil einer Zahl sein kann. Diese Trennung über eine Negativliste ist nachsichtiger als eine feste Liste von Trennzeichen: Sie verkraftet auch Aufzählungsstriche und Klammern.
const quadratsumme = werte.reduce(function (bisher, wert) {
return bisher + (wert - mittel) * (wert - mittel);
}, 0);
Hier steckt der Kern der Streuungsrechnung: Für jeden Wert wird der Abstand zum Mittelwert bestimmt und quadriert. Das Quadrieren hat zwei Gründe. Erstens werden dadurch Abweichungen nach oben und unten gleich behandelt — ohne es hüben sich die Vorzeichen auf und die Summe wäre immer null. Zweitens fallen große Abweichungen stärker ins Gewicht als kleine, was gewollt ist.
const varianzGrund = quadratsumme / anzahl;
const varianzStich = quadratsumme / (anzahl - 1);
Und hier die Frage, über die in jeder Statistikvorlesung gestolpert wird. Hat man alle Werte, die es gibt — die Noten aller Schüler einer Klasse —, teilt man durch die Anzahl. Ist die Reihe dagegen eine Stichprobe aus einer größeren Menge — zehn Messungen von unzähligen möglichen —, teilt man durch die Anzahl minus eins.
Der Grund: Der Mittelwert wurde ja aus denselben Daten geschätzt, und die Werte liegen deshalb systematisch etwas zu nah an ihm. Das Teilen durch die kleinere Zahl gleicht diese Verzerrung aus. Der Unterschied ist bei vielen Werten winzig und bei wenigen erheblich — bei fünf Messwerten sind es immerhin 25 Prozent mehr Varianz. Im Zweifel ist die Stichproben-Fassung die richtige, weil man selten wirklich alle Werte hat.
return sortiert.length % 2 === 1
? sortiert[mitte]
: (sortiert[mitte - 1] + sortiert[mitte]) / 2;
Beim Median gibt es zwei Fälle: Bei ungerader Anzahl steht ein Wert genau in der Mitte, bei gerader nimmt man das Mittel der beiden mittleren. In der Vorgabe oben — neun Gehälter um 2.200 € und ein Ausreißer von 9.800 € — liegt der Median bei 2.275 €, das arithmetische Mittel dagegen bei 3.010 €. Ein einziger Wert verschiebt den Durchschnitt um mehr als 700 €; der Median bewegt sich kaum.
werte.slice().sort(function (a, b) { return a - b; });
Zwei Fallen auf einmal. Das slice() legt eine Kopie an, damit die Reihenfolge der Originalwerte unangetastet bleibt. Und die Vergleichsfunktion ist zwingend: Ohne sie sortiert JavaScript Zahlen als Text, und dann käme 100 vor 9 — ein Fehler, der bei einstelligen Testdaten nie auffällt.
Zum Anpassen: Für Quartile sortiert ihr ebenfalls und greift bei einem Viertel und drei Vierteln der Länge zu; der Abstand dazwischen heißt Interquartilsabstand und ist ein gegen Ausreißer unempfindliches Streuungsmaß. Für ein echtes Säulendiagramm teilt ihr die Spannweite in Klassen und zählt, wie viele Werte in jede fallen.
Script für die eigene Homepage
Kopiert euch den kompletten Code und fügt ihn an der Stelle eurer Seite ein, an der das Script erscheinen soll. Er läuft ohne weitere Dateien und ohne fremde Server.
Mehr aus der Kategorie Mathematik
-
5 Zahlen
-
Altersberechnungen
-
Anzahl der Stellen von Potenzen kalkulieren
-
Barrel in Liter
-
Beliebige Wurzel ziehen
-
Binomialverteilung
-
Collatz Problem
-
Denk Dir eine Zahl
-
Dezimalbruch
-
Dezimalzahl in Binärzahl umwandeln
-
Die Kamelhändler
-
Downloadzeit-Rechner
-
Drehender Kreis 1
-
Drehender Kreis 2
-
Drehender Kreis 3
-
Dreiecksrechner
-
Dreisatz
-
Dreisatz antiproportional
-
Einfacher Euro-Rechner
-
Fakultät berechnen
-
Fakultätsrechner
-
Fibonacci Reihe berechnen
-
Fibonacci-Zahlen
-
Flächenberechnung / Dreieck
-
Flächenberechnung / Kreis
-
Flächenberechnung / Parallelogramm
-
Flächenberechnung / Rechteck
-
Flächenberechnung / Trapez
-
Gedanken lesen
-
Geschwindigkeitsmesser