Lernpfad
Die Standardabweichung ist eine der gebräuchlichsten Methoden, um zusammenzufassen, wie breit deine Daten gestreut sind. Mit der Funktion sd()
in R kannst du dieses Maß für die Variabilität schnell berechnen, egal ob du mit Vektoren, Datenrahmen oder gruppierten Daten arbeitest.
In diesem Artikel gehe ich auf die Grundlagen der Verwendung von sd()
in R ein, erkläre, wie man mit fehlenden Werten umgeht, und zeige, wie man mit Funktionen wie tapply()
und Paketen wie dplyr
Standardabweichungen zwischen Gruppen berechnet.
Was macht sd() in R?
In R berechnet die Funktion sd()
aus Base R die Standardabweichung eines numerischen Vektors oder einer Spalte eines Datenrahmens. Sie misst, wie stark die Werte in deinen Daten vom Mittelwert abweichen und gibt dir ein Gefühl für die Variabilität oder Streuung.
Wenn du mit dem Konzept der Varianz vertraut bist, ist die Standardabweichung einfach die Quadratwurzel aus der Varianz. Aufgrund ihrer Berechnungsweise (die Quadratwurzel aus der durchschnittlichen quadrierten Abweichung) bleibt die Standardabweichung auf derselben Skala wie die ursprünglichen Daten. Das macht es einfacher, sie in der Praxis zu interpretieren.
Ein einfaches sd()-Beispiel
Angenommen, du hast eine Reihe von Zahlen und möchtest wissen, wie stark sie vom Durchschnitt abweichen.
Hier ist, wie du es in R machst:
exam_scores <- c(75, 80, 85, 90, 95)
sd(exam_scores)
Die Ausgabe gibt dir die Standardabweichung an, die den durchschnittlichen Abstand der einzelnen Punkte vom Mittelwert angibt.
Du kannst sd()
mit jedem numerischen Vektor verwenden, einschließlich Ganzzahlen, Doppelzahlen oder den Ergebnissen von Berechnungen. Du weißt vielleicht, dass R logische Vektoren als numerisch behandelt (TRUE
als 1
, FALSE
als 0
), so dass die Funktion sd()
technisch gesehen mit logischen Vektoren funktionieren würde (du kannst sie ausprobieren, wenn du willst), aber die Idee der Standardabweichung ist am sinnvollsten für kontinuierliche numerische Daten.
Behandlung von fehlenden Werten mit sd()
In der realen Welt enthalten Datensätze oft fehlende Werte, daher ist dies erwähnenswert: Wenn deine Daten irgendwelche NA
Werte enthalten, gibt sd()
standardmäßig NA
zurück.
Betrachte dieses Beispiel:
heights <- c(170, 175, NA, 180, 185)
sd(heights)
Das Ergebnis ist NA
.
Um fehlende Werte zu ignorieren und die Standardabweichung der verfügbaren Zahlen zu berechnen, verwendest du das Argument na.rm = TRUE
. Du kannst auch die NA
Werte aus deinem Datensatz löschen, aber das würde ich nur empfehlen, wenn es sinnvoll ist.
sd(heights, na.rm = TRUE)
Jetzt erhältst du die Standardabweichung für 170, 175, 180 und 185.
Berechnung der Standardabweichung für Datenrahmen in R
Du kannst die Standardabweichung einer bestimmten Spalte in einem Datenrahmen ganz einfach mit dem Operator $
berechnen. Angenommen, du hast einen Datenrahmen mit Produktgewichten:
product_data <- data.frame( weight = c(1.2, 1.5, 1.3, 1.7, 1.4), price = c(10, 12, 11, 13, 12) )
sd(product_data$weight)
So erhältst du die Standardabweichung der Spalte weight
. Denke daran, dass sd()
für numerische Vektoren und nicht für ganze Datenrahmen konzipiert ist. Wähle immer die entsprechende Spalte aus.
sd() und gruppierte Standardabweichungen
Oft willst du die Variabilität innerhalb von Gruppen messen, z. B. nach Kategorie, Region oder einem anderen Faktor. R bietet mehrere Möglichkeiten, gruppierte Standardabweichungen zu berechnen. Ich werde drei zeigen:
Verwendung von tapply() für gruppierte Standardabweichungen
Angenommen, du hast Verkaufsdaten für verschiedene Regionen und möchtest die Standardabweichung für jede Region ermitteln:
sales_amount <- c(200, 220, 210, 250, 240, 230)
region <- c("North", "North", "South", "South", "North", "South")
tapply(sales_amount, region, sd)
tapply()
wendet sd()
auf jede nach Region definierte Gruppe an.
Verwendung von aggregate() für gruppierte Standardabweichungen
Wenn du deine Ergebnisse lieber in einem aufgeräumten Datenrahmen haben möchtest, funktioniert aggregate()
:
sales_data <- data.frame( region = c("North", "North", "South", "South", "North", "South"), amount = c(200, 220, 210, 250, 240, 230) )
aggregate(amount ~ region, data = sales_data, sd)
Dies ergibt einen zusammenfassenden Datenrahmen mit der Standardabweichung für jede Region.
Verwendung von dplyr für gruppierte Standardabweichungen
Mit dem Paket dplyr
sind gruppierte Berechnungen noch besser lesbar. Verwende summarize()
nach der Gruppierung:
library(dplyr)
sales_data %>%
group_by(region) %>%
summarize(sd_amount = sd(amount))
Dieser Ansatz ist besonders bei größeren Datensätzen oder bei der Verkettung mehrerer Datentransformationen nützlich. (Oder wenn du, wie ich, einfach den Pipe-Operator verwendest).
Häufige Fehler und Tipps
Selbst eine einfache Funktion wie sd() kann Probleme verursachen, wenn du nicht aufpasst. Hier sind einige häufige Fallstricke:
-
Nicht-numerische Daten:
sd()
funktioniert nur mit numerischen Vektoren. Wenn deine Daten Zeichen oder Faktoren enthalten, bekommst du einen Fehler. Verwendeis.numeric()
, um deine Daten zu überprüfen. -
Fehlende Werte: Ein einziges
NA
führt dazu, dasssd()
NA
zurückgibt. Verwende immerna.rm = TRUE
, wenn du fehlende Werte ignorieren willst. -
Kleine Stichprobengrößen:
sd()
verwendet n-1 im Nenner (Standardabweichung der Stichprobe). Bei Vektoren der Länge 1 gibtsd()
NA
und nicht0
zurück.
Vor allem der letzte Fehler ist interessant, finde ich. Das ist ein weniger bekannter Unterschied, der dich bei der Umstellung von Python auf R stören kann, da Python durch die Standardabweichung der Grundgesamtheit dividiert, nicht durch die Stichprobe.
Nützliche Variationen und verwandte Funktionen in R
R bietet mehrere verwandte Funktionen zur Messung der Variabilität und zur Zusammenfassung von Daten:
-
var()
: Berechnet die Varianz, die das Quadrat der Standardabweichung ist. -
apply()
,sapply()
,lapply()
: Nützlich für die Anwendung vonsd()
auf Zeilen oder Spalten von Matrizen und Datenrahmen. mad()
: Berechnet die absolute Medianabweichung, die ein weiteres interessantes und robusteres Maß für die Variabilität ist.
Ich zeige dir sd()
, das mit apply()
verwendet wird, da ich es erwähnt habe: Hier erfährst du, wie du mit apply()
die Standardabweichung jeder Spalte in einer Matrix ermitteln kannst. Wie zuvor erstelle ich die Matrix im Handumdrehen.
measurement_matrix <- matrix(1:9, nrow = 3)
apply(measurement_matrix, 2, sd)
Dies liefert die Standardabweichung für jede Spalte und gibt dir einen schnellen Überblick über die Variabilität mehrerer Variablen.
Fazit
Die Funktion sd()
in R ist relativ einfach (sie besteht nur aus einer Zeile Code). Aber wenn du es für Berichte oder Präsentationen verwendest und dir die Details nicht ganz klar sind, melde dich für unseren Lernpfad Statistiker/in in R an. Es gibt viele Nuancen in der Statistik und Datenanalyse, also stelle sicher, dass du dich gut auskennst.
