Mit dem Paket naniar sind die oben dargestellten Schritte viel schneller und leichter darzustellen. Das Paket schafft dabei auch immer einen ggplot, so dass die oben gelernten Anpassungen auch hier möglich sind. Zuerst nutzen wir Funktionen, um uns Tabellen mithilfe von naniar ausgeben zu lassen. Die Erste ist die Funktion miss_var_summary(), die uns die absolute und relative Häufigkeit von missings in den Variablen ausgibt.
pss %>%
miss_var_summary()
## # A tibble: 14 × 3
## variable n_miss pct_miss
## <chr> <int> <num>
## 1 edu 352 7.04
## 2 agea 157 3.14
## 3 stfdem 95 1.9
## 4 trstprl 35 0.7
## 5 trstprt 17 0.34
## 6 trstlgl 12 0.24
## 7 trstplt 11 0.22
## 8 lrscale 7 0.14
## 9 stfeco 6 0.12
## 10 idno 0 0
## 11 district 0 0
## 12 gndr 0 0
## 13 wkhtot 0 0
## 14 income 0 0
Dies können wir auch gruppieren:
pss %>%
group_by(district) %>%
miss_var_summary()
## # A tibble: 65 × 4
## # Groups: district [5]
## district variable n_miss pct_miss
## <fct> <chr> <int> <num>
## 1 Distrikt 1 edu 30 3
## 2 Distrikt 1 stfdem 16 1.6
## 3 Distrikt 1 trstprl 8 0.8
## 4 Distrikt 1 trstprt 4 0.4
## 5 Distrikt 1 lrscale 2 0.2
## 6 Distrikt 1 trstlgl 1 0.1
## 7 Distrikt 1 idno 0 0
## 8 Distrikt 1 gndr 0 0
## 9 Distrikt 1 agea 0 0
## 10 Distrikt 1 wkhtot 0 0
## # ℹ 55 more rows
Zuerst können wir uns eine Verteilung der missings im Datensatz ausgeben lassen. Die Funktion gg_miss_var_cumsum() gibt uns die kumulierte Summe der missings pro Variable aus. Hieran kann man also ablesen, wie sich die missings auf die Variablen verteilen.
gg_miss_var_cumsum(pss)

Die Funktion vis_miss() visualisiert die missings eines gesamten Datensatzes (außer wir grenzen ein).
vis_miss(pss)

Eine weitere ansprechende Alternative ist die Funktion gg_miss_upset() aus dem Paket naniar. Hierbei werden auch die Häufigkeiten der Kombination der missings zwischen den Variablen angezeigt. Aber auch dies wird bei allzu großen Datensätzen schnell unübersichtlich. Für Teilbereich kann das aber aufschlussreich sein (z.B. wenn man prüfen möchte, ob Personen nur Teile einer Itembatterie oder die Itembatterie komplett nicht beantwortet haben).
gg_miss_upset(pss)

In der Grafik sieht man, dass die vier Variablen trstprt, trtprl, stfdem und agea edu haben. Insgesamt gibt es folgende Kombinationen:
edu NA haben,agea NA haben,stfdem NA haben,trstprl NA haben,trstprt haben,stfdem und edu NA haben,agea und edy NA haben,trstprl und edu NA haben,stfdem und agea NA haben,trstprt und edu NA haben,trstprl und stfdem NA haben,trstprt und agea NA haben,Insgesamt gilt, dass die maximale Anzahl an Kombinationen wie folgt berechnet wird: \(2^{Anzahl Variable} - 1\). In diesem Fall wären es 31 mögliche Kombinationen, angezeigt werden aber nur 12. Warum?
Daneben können missings zweier Variablen auch über die Funktion geom_miss_point() ganz leicht in einem ggplot dargestellt werden:
ggplot(
pss,
aes(
x = district,
y = agea
)
) +
geom_miss_point()

So kann man ganz leicht sehen, ob die missings sich eventuell bei einer bestimmten Kombination häufen.
Alternativ kann man auch noch die Funktionen gg_miss_var() und gg_miss_fct() nutzen.
Mit der Funktion gg_miss_var() wird die Anzahl der missings dargestellt. Mit dem Argument facet kann man dies auch auf einzelne Ausprägungen runterbrechen. So kann man sehen, ob evtl. eine Gruppe deutlich mehr missings aufweist, als eine andere Gruppe.
gg_miss_var(
pss,
facet = district
)
Mit der Funktion gg_miss_fct() können missings visuell sehr schön aufbereitet werden.
gg_miss_fct(
x = pss,
fct = district
)
Auch das kann man sich wieder nach Ausprägungen auf einer weiteren Variable ausgeben lassen, um zu sehen, ob es starke Gruppenunterschiede gibt:
gg_miss_fct(
x = pss,
fct = district
) +
labs(title = "NA in PSS nach Distrikt")

Das war’s zu missing values!