Kapitel 14 Histogramm versus Balkendiagramm
Zwei Graphiken die man oft sieht, sind das Histogramm und die Balkengraphik (Barplot). Oft werden diese Graphiken verwechselt, es sind jedoch ganz unterschiedliche Graphiken.
14.1 Histogramm
Schauen wir uns ein Histogramm für die Variable Alter an.
Hier werden Gruppen von 5 Jahren gebildet, und für jede Gruppe einen Balken erstellt. Die Höhe der Balken entspricht entweder der sogenannten Density (Dichte, respektive Wahrscheinlichkeitsdichtefunktion) oder der Häufigkeit (dies kann man einstellen. Beim klassischen Histogramm wird die Density dargestellt). Was ist die Density?
set.seed(1223434457)
= seq(0,100,10)
breaks
library(ggplot2)
library(gridExtra)
=1:200
id<-rnorm(200, 55,12)
Alter<-data.frame(id, Alter) data
Welche Formel benutzt ggplot um die Density zu berechnen:
Für jeden Balken: Häufigkeit (“count”) der Werte in diesem Balken geteilt durch die Balkenbreite, geteilt durch die totala Anzahl Werte.
Wir können das ja einmal für den höchsten Balken ausrechen.
relative Häufigkeit im Balken: 58/10 = 5.8
relative Häufigkeit im Balken geteilt durch totale Anzahl Werte: 5.8 / 200 = 0.029
Wir sehen, dass unsere Rechnung stimmt. der höchste Balken hat die Häufigkeit (“Count”) 58 und die Density 0.029
## Warning: The dot-dot notation (`..count..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(count)` instead.
14.2 Barplot
Das Balkendiagramm (Barplot) erstellen wir, wenn wir entweder die Häufigkeiten einer Kategorie, oder eine andere Statistik, wie Mittelwert, pro Kategorie einer ordinalen oder kategoriellen (nominalen) Variable darstellen möchten. Nemen wir als Beispiel die durchschnittliche Behandlungsdauer in Anzahl Sitzungen pro Diagnose (fiktive Daten).
library(dplyr)
##
## Attaching package: 'dplyr'
## The following object is masked from 'package:gridExtra':
##
## combine
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
<-rpois(30, 18)
Parkinson<-rpois(60, 36)
Schlaganfall<-rpois(120, 9)
Rückenschmerzen<-rpois(200, 6)
Arthrose
=rep(c("Parkinson", "Schlaganfall", "Rückenschmerzen", "Arthrose"), times=c(length(Parkinson), length(Schlaganfall), length(Rückenschmerzen), length(Arthrose)))
Diagnose
<-c(Parkinson, Schlaganfall, Rückenschmerzen, Arthrose)
Anzahl_Sitzungen
<-data.frame(Diagnose, Anzahl_Sitzungen) data
Hier ein Beispiel:
Oder ein zweites Beispiel über die BMI Kategorien
<-rnorm(200, 28, 5)
BMI=1:200
id<-data.frame(id, BMI)
data
<-data %>%
datamutate(BMI_Kategorien=case_when(
<18.5~"Untergewicht",
BMI>=18.5 & BMI <25~"Normalgewicht",
BMI>=25 & BMI <30~"Übergewicht",
BMI>=30~"Adipositas")) %>%
BMImutate(BMI_Kategorien=fct_relevel(BMI_Kategorien, "Untergewicht", "Normalgewicht", "Übergewicht", "Adipositas"))
Nun sehen wir gut den Unterschied: Histogramme werden für die Darstellung der Häufigkeiten von Wertebereichen ordinaler oder intervallskalierter Daten benutzt. Balkendiagramme benutzen wir für die Darstellung der Werte oder Häufigkeiten einzelner Kategorien nominaler Daten.