Kapitel 41 Dokumentieren von fehlenden Daten
Unkorrigierte, unfertige Version 24 December, 2022
Sie lernen in diesem Kapitel folgendes:
- Visualisierung fehlender Daten
- Tabelle mit Anzahl fehlenden Daten
To Do:
41.0.1 Wir benutzen folgende Pakete in diesem Kapitel:
::opts_chunk$set(echo = TRUE)
knitr<- getOption("repos")
r "CRAN"] <- "https://stat.ethz.ch/CRAN/"
r[options(repos = r)
<- c("patchwork","bookdown","rmarkdown" ,"knitr","rio", "psych","janitor",
list.of.packages "tidyverse","jtools","summarytools", "qgraph", "gtsummary" , "viridis", "wesanderson", "missMethods", "ggpubr", "ggrepel", "naniar", "finalfit", "missMethods", "rpart", "rpart.plot")
<- list.of.packages[!(list.of.packages %in% installed.packages()[,"Package"])]
new.packages if(length(new.packages)) install.packages(new.packages)
library(summarytools)
library(psych)
library(janitor)
library(sjlabelled)
library(tidyverse)
library(gtsummary)
library(viridis)
library(wesanderson)
library(missMethods)
library(ggpubr)
library(ggrepel)
library(naniar)
library(visdat)
library(finalfit)
library(rpart)
library(rpart.plot)
library(mice)
library(knitr)
library(patchwork)
41.1 Daten simulieren.
<-c(2,3,2,4,5,3,2,NA,2,2)
pain_1 <-c(8,6,1,3,2,3,2,NA,2,1)
pain_2 <-c(3,2,1,3,1,1,1,2,2,1)
pain_3 <-c(4,2,NA,5,2,1,2,2,2,1)
pain_4
<-c(1,2,1,4,5,3,NA,3,3,2)
function_1 <-c(6,4,2,3,2,3,2,NA,1,1)
function_2 <-c(2,3,3,3,1,1,2,3,4,1)
function_3 <-c(NA,2,NA,5,2,1,3,4,2,2)
function_4
<-sample(c("Man", "Woman"), rep=TRUE, size=10, prob=c(0.51, 0.49))
gender<-1:length(pain_1)
id
<-data.frame(id, pain_1, pain_2, pain_3, pain_4, pain_1, pain_2, pain_3, pain_4, gender) data
41.2 Fehlende Werte visualisieren
41.2.1 Mit Angaben zum Datentyp
::vis_dat(data) visdat
## Warning: `gather_()` was deprecated in tidyr 1.2.0.
## ℹ Please use `gather()` instead.
## ℹ The deprecated feature was likely used in the visdat package.
## Please report the issue at <]8;;https://github.com/ropensci/visdat/issueshttps://github.com/ropensci/visdat/issues]8;;>.
41.2.3 Über eine andere Variable
Über die ID-Variable.
::gg_miss_fct(data, id) naniar
Über das Geschlecht.
::gg_miss_fct(data,gender ) naniar
41.2.4 Fehlende Werte über zwei Variablen
ggplot(data, aes(y=pain_1, x=function_1))+
geom_point()+
geom_miss_point(size=2)
## Warning: Removed 2 rows containing missing values (`geom_point()`).

Abbildung 16.1: Wir sehen, dass bei einem Wert von 3 in der Funktion, ein fehlender Wert beim Schmerz ist, und beim Wert 2 beim Schmerz, ein fehlender Wert bei der Funktion ist.
41.2.5 Baum mit fehlenden Werten pro Variable
Dieser Befehl funktioniert mit unserem kleinen Datensatz nicht.
library(rpart)
library(rpart.plot)
names(data)
## [1] "id" "pain_1" "pain_2" "pain_3" "pain_4" "pain_1.1"
## [7] "pain_2.1" "pain_3.1" "pain_4.1" "gender"
%>%
data add_prop_miss() %>%
rpart(prop_miss_all ~ ., data = ., model=TRUE) %>%
prp(type =4, extra = 101, prefix = "Prop. Miss = ")
Deswegen werden wir einen grösseren Datensatz erstellen.
Das Beispiel ist nicht so optimal, illustriert aber gleichwohl die Funktion. Ein besseres Beispiel finden Sie hier.
<-data.frame(id, pain_1, pain_2, pain_3, pain_4, pain_1, pain_2, pain_3, pain_4, gender)
data2<-bind_rows(data, data2)
data2<-bind_rows(data, data2)
data2<-bind_rows(data, data2)
data2
%>%
data2 select(-id) %>%
add_prop_miss() %>%
rpart(prop_miss_all ~ ., data = ., model=TRUE) %>%
prp(type =4, extra = 101, prefix = "Prop. Miss = ")
41.3 Variable mit Anzahl fehlender Werte
<-data %>%
datamutate(missing_pain=rowSums(across(contains("pain"), is.na))) %>%
mutate(missing_function=rowSums(across(contains("function"), is.na))) %>%
::select(id, contains("missing"), everything()) dplyr
Die neuen Variablen zeigen die Anzahl fehlender Werte auf.
::datatable(data, filter='top') DT