Mittelwert und Median
Die beiden meistgenutzten Kennzahlen der gesamten Statistik sind je ein Funktionsaufruf:
mean() addiert alles und teilt durch die Anzahl. median() sortiert die Werte und nimmt den mittleren (oder mittelt die beiden mittleren, wenn die Anzahl gerade ist). Für die 32 Autos in mtcars liegt der mittlere Verbrauchswert bei etwa 20,1 mpg und der Median bei 19,2 - nah beieinander, was dir sagt, dass die Daten nicht stark schief sind. Wenn sie stark auseinandergehen, ist das ebenfalls Information; darauf kommen wir am Ende.
Etwas, das alle überrascht: Enthält der Vektor auch nur ein einziges NA, geben beide Funktionen NA zurück:
Das ist Absicht - R weigert sich, still so zu tun, als sei der fehlende Wert nicht da. na.rm = TRUE sagt "rechne mit den Werten, die du hast". Nahezu jede Zusammenfassungsfunktion in diesem Artikel akzeptiert es. Die ganze Geschichte, wie sich NA fortpflanzt, steht unter fehlende Werte.
Standardabweichung und Varianz
sd() misst die Streuung: grob, wie weit ein typischer Wert vom Mittelwert entfernt liegt, in denselben Einheiten wie die Daten. var() ist ihr Quadrat:
Eine Standardabweichung von etwa 6 mpg bedeutet, dass Autos typischerweise innerhalb von rund 6 mpg um den Durchschnitt von 20,1 liegen. Weil sd() in den Einheiten der Daten selbst steht, ist es das, was du berichtest; var() taucht meist innerhalb anderer Formeln auf.
Hier das Detail, das für Studienarbeiten zählt: sd() und var() berechnen die Stichproben-Kennzahl - sie teilen die Summe der quadrierten Abweichungen durch n − 1, nicht durch n:
Warum n − 1? Weil du den Mittelwert aus denselben Daten geschätzt hast, sind die Abweichungen um diesen geschätzten Mittelwert systematisch etwas zu klein; das Teilen durch n − 1 korrigiert das. Da deine Daten fast immer eine Stichprobe von etwas Größerem sind, ist die n − 1-Version das, was du willst. Hast du wirklich die gesamte Grundgesamtheit (jede Studierende im Kurs, jedes Produkt im Katalog), multipliziere: var(x) * (n - 1) / n.
Standardfehler des Mittelwerts
Standardabweichung und Standardfehler werden ständig verwechselt, halte sie also auseinander: sd beschreibt die Daten, SE beschreibt deine Schätzung des Mittelwerts. R hat kein eingebautes se(), aber die Formel ist eine Zeile:
Der Standardfehler schrumpft, wenn die Stichprobe wächst - erhebe die vierfache Datenmenge, und der SE halbiert sich -, weil eine größere Stichprobe den Mittelwert präziser festnagelt. Die sd schrumpft nicht mit der Stichprobengröße; die Autos sind so unterschiedlich, wie sie sind, egal wie viele du misst. Der SE ist der Baustein von Konfidenzintervallen, und dort verdient er sein Geld.
summary() - der Überblick in einem Aufruf
summary() gibt dir die Fünf-Zahlen-Zusammenfassung plus den Mittelwert auf einen Schlag und funktioniert auf ganzen Data Frames:
Auf einem Data Frame aufgerufen, fasst es jede Spalte zusammen - numerische Spalten bekommen Min/Quartile/Mittelwert/Max, und Faktoren bekommen Anzahlen je Level. Es ist das Erste, was du auf jedem frisch geladenen Datensatz ausführst: Unmögliche Werte (ein negatives Alter, ein Maximum von 9999) springen sofort ins Auge.
Quantile, Spannweite und IQR
quantile() verallgemeinert den Median auf jeden beliebigen Schnittpunkt:
Ohne Argumente gibt es Minimum, Quartile und Maximum zurück. Übergib probs = für bestimmte Schnittpunkte - das 10. und 90. Perzentil oben klammern ein, wo der Großteil der Daten lebt. IQR() (der Abstand zwischen dem 25. und 75. Perzentil) ist ein Streuungsmaß, das anders als sd() nicht von Ausreißern herumgezogen wird. range() gibt Min und Max als Paar zurück.
Der Modus: R's mode() macht das NICHT
Dieser erwischt jeden genau einmal. R hat eine Funktion namens mode(), und sie hat nichts mit Statistik zu tun - sie meldet den Speichertyp eines Objekts:
Das Idiom zum Merken: table(x) zählt, wie oft jeder Wert vorkommt, which.max() findet die größte Anzahl, und names() holt den Wert selbst heraus. Beachte, dass er als Zeichenkette zurückkommt (Tabellennamen sind das immer); pack ihn in as.numeric(), wenn du damit rechnen musst. Bei einem Gleichstand zweier Werte gibt which.max() still nur den ersten zurück - prüfe die Tabelle selbst, wenn Gleichstände plausibel sind.
Mittelwert vs. Median: was berichten?
Der Mittelwert nutzt jeden Wert, was seine Stärke und seine Schwäche ist - ein einziger Extremwert zieht ihn. Der Median interessiert sich nur für die Mitte, deshalb rühren Ausreißer ihn kaum an:
Ein hinzugefügter Wert schiebt den Mittelwert von etwa 49.300 auf über 155.000 - eine Zahl, die niemanden in den Daten beschreibt -, während sich der Median nur von 48.000 auf 49.500 bewegt. Deshalb werden Einkommen, Immobilienpreise und Krankenhausaufenthalte als Mediane berichtet: Schiefe Daten mit langem Rand machen den Mittelwert irreführend. Bei annähernd symmetrischen Daten stimmen die beiden überein und der Mittelwert ist in Ordnung (und statistisch effizienter). Ein schnelles Histogramm sagt dir, in welcher Lage du bist - und deinen Mittelwert mit deinem Median zu vergleichen ist selbst eine einzeilige Schiefeprüfung.
Was du mitnimmst
mean(x)undmedian(x)- ergänzena.rm = TRUE, wenn fehlende Werte vorliegen.sd(x)undvar(x)berechnen die Stichproben-Kennzahl (denn − 1-Nenner) - und das ist es, was du willst.- Der Standardfehler ist
sd(x) / sqrt(length(x))- er misst, wie gut du den Mittelwert kennst, nicht wie gestreut die Daten sind. summary()auf einem frischen Data Frame ist die schnellste Plausibilitätsprüfung in R.- Der Modus ist
names(which.max(table(x)))- R'smode()dreht sich um Speichertypen. - Schiefe Daten oder Ausreißer: berichte den Median. Symmetrische Daten: der Mittelwert ist in Ordnung.
Als Nächstes: messen, wie sich zwei Variablen gemeinsam bewegen - Korrelation mit cor() und cor.test().
Häufig gestellte Fragen
Wie berechnet man in R die Standardabweichung?
Mit sd(x). Beachte, dass es die Stichproben-Standardabweichung berechnet - es teilt durch n − 1, nicht durch n. Genau das willst du in fast jeder realen Analyse, denn deine Daten sind fast immer eine Stichprobe statt der gesamten Grundgesamtheit.
Wie findet man in R Mittelwert und Median?
mean(x) und median(x). Enthält der Vektor fehlende Werte, geben beide NA zurück - ergänze na.rm = TRUE, um mit den vorhandenen Werten zu rechnen: mean(x, na.rm = TRUE).
Wie findet man in R den Modus?
Nicht mit mode() - diese Funktion gibt den Speichertyp eines Objekts zurück, nicht den häufigsten Wert. Nutze stattdessen das Tabellenidiom: names(which.max(table(x))) gibt den Wert zurück, der am häufigsten vorkommt.
Was ist der Standardfehler in R?
Dafür gibt es keine eingebaute Funktion. Berechne ihn als sd(x) / sqrt(length(x)). Die Standardabweichung beschreibt die Streuung deiner Daten; der Standardfehler beschreibt, wie präzise du den Mittelwert geschätzt hast, und er schrumpft, wenn die Stichprobe wächst.