Wie geht man mit fehlenden Werten in R um?
In diesem Beitrag
Was sind fehlende Werte in R?
In R werden fehlende Werte als NA (Not Available) dargestellt. Sobald Sie einen Datensatz einlesen – sei es aus Excel, SPSS oder einer CSV-Datei – tauchen fehlende Einträge automatisch als NA auf. Fast jeder reale Datensatz enthält solche Lücken, sei es durch Abbrüche bei der Befragung, technische Fehler oder schlicht vergessene Antworten.
Das Problem: Viele R-Funktionen liefern bei NA-Werten ebenfalls NA als Ergebnis zurück. Ein einfaches mean(x) ergibt NA, sobald auch nur ein Wert fehlt. Das ist kein Bug, sondern eine bewusste Design-Entscheidung – R zwingt Sie dazu, sich aktiv mit fehlenden Werten auseinanderzusetzen, statt sie stillschweigend zu ignorieren.
NA kennt R auch verwandte Sonderwerte: NaN (Not a Number, z. B. bei 0/0), NULL (leeres Objekt) und Inf (unendlich). Für fehlende Beobachtungen ist ausschließlich NA der korrekte Wert.Mit is.na(x) prüfen Sie, welche Einträge eines Vektors oder Dataframes fehlen. sum(is.na(df)) gibt Ihnen die Gesamtanzahl fehlender Werte im gesamten Datensatz – ein sinnvoller erster Schritt bei jeder Datenanalyse.
MCAR, MAR und MNAR: Die drei Typen fehlender Werte
Bevor Sie sich für eine Strategie entscheiden, müssen Sie verstehen, warum Werte fehlen. Die Statistik unterscheidet drei Mechanismen, die grundlegend bestimmen, welche Methoden zulässig sind:
- MCAR – Missing Completely At Random: Die Wahrscheinlichkeit, dass ein Wert fehlt, hängt weder von beobachteten noch von unbeobachteten Variablen ab. Fehlende Werte entstehen rein zufällig, z. B. durch einen Datenbankfehler. In diesem Fall sind einfache Methoden wie listenweiser Ausschluss unverzerrt – allerdings tritt MCAR in der Praxis selten auf.
- MAR – Missing At Random: Die Fehlwahrscheinlichkeit hängt von beobachteten Variablen ab, aber nicht vom fehlenden Wert selbst. Ältere Befragte brechen häufiger bei bestimmten Fragen ab – wenn das Alter im Datensatz vorliegt, ist das Muster erklärbar. MAR ist die Standardannahme für Multiple Imputation.
- MNAR – Missing Not At Random: Die Fehlwahrscheinlichkeit hängt vom fehlenden Wert selbst ab. Personen mit sehr hohem Einkommen geben dieses seltener an. MNAR ist methodisch am schwierigsten zu behandeln und erfordert spezialisierte Modelle.
Für Abschlussarbeiten ist die MAR-Annahme in den meisten Fällen vertretbar – vorausgesetzt, Sie begründen sie und prüfen die Missingness-Muster explorativ.
Fehlende Werte diagnostizieren und visualisieren
Bevor Sie imputed oder ausschließen, sollten Sie verstehen, wo und wie Werte fehlen. Dieser Diagnoseschritt wird in der Praxis häufig übersprungen – was problematisch ist, denn das Muster der Missingness bestimmt die geeignete Methode.
Basisdiagnose in R
Ein erster Überblick gelingt mit wenigen Zeilen:
# Anzahl fehlender Werte pro Variable
colSums(is.na(df))
# Anteil fehlender Werte pro Variable (in Prozent)
colMeans(is.na(df)) * 100
# Überblick über den gesamten Datensatz
summary(df)
Diese Ausgaben zeigen Ihnen sofort, welche Variablen besonders viele Lücken aufweisen und ob das Muster auf einzelne Spalten konzentriert ist oder sich über den gesamten Datensatz verteilt.
Visualisierung mit dem VIM-Paket
Für eine tiefergehende Analyse empfiehlt sich das R-Paket VIM. Es macht nicht nur Ersatzwerte, sondern macht die Struktur fehlender Werte grafisch sichtbar – was für die Wahl der geeigneten Imputationsmethode entscheidend ist. VIM bietet vier Imputationsmethoden (Hot-Deck, k-Nearest-Neighbor, Regressionsimputation und iterative robuste Imputation) sowie explorative Grafiken, die Missingness-Muster in Variablenkombinationen aufdecken.
install.packages("VIM")
library(VIM)
# Aggregationsplot: zeigt Muster fehlender Werte
aggr(df, col = c("navyblue", "red"),
numbers = TRUE, sortVars = TRUE,
labels = names(df), cex.axis = 0.7,
gap = 3, ylab = c("Fehlende Werte", "Muster"))
Der aggr()-Plot zeigt auf einen Blick, welche Variablenkombinationen gleichzeitig fehlen. Das ist besonders hilfreich, um zu beurteilen, ob MCAR, MAR oder MNAR wahrscheinlicher ist.
Strategien im Überblick: Was tun mit fehlenden Werten?
Es gibt mehrere Wege, mit NA-Werten umzugehen. Welcher sinnvoll ist, hängt von der Anzahl fehlender Werte, dem Missingness-Mechanismus und der geplanten Analyse ab.
| Strategie | Wann geeignet | R-Umsetzung | Risiko |
|---|---|---|---|
| Listenweiser Ausschluss | Wenige Lücken (< 5 %), MCAR | na.omit(df) |
Informationsverlust, ggf. Verzerrung |
| Paarweiser Ausschluss | Korrelationsanalysen, MCAR | use = "pairwise.complete.obs" |
Inkonsistente Stichprobengrößen |
| Mittelwert-/Medianimputation | Selten empfehlenswert | Manuell mit ifelse() |
Unterschätzt Varianz, verzerrt Korrelationen |
| Einfache Imputation (VIM) | Explorative Analysen, kleinere Datensätze | kNN(df) aus VIM |
Unterschätzt Unsicherheit |
| Multiple Imputation (mice) | Konfirmatorische Analysen, MAR-Annahme | mice(df) |
Aufwändiger, aber methodisch korrekt |
Listenweiser Ausschluss – wann er vertretbar ist
Der listenweise Ausschluss (complete case analysis) entfernt alle Beobachtungen mit mindestens einem fehlenden Wert. In R funktioniert das mit df_clean <- na.omit(df). Er ist nur dann unverzerrend, wenn MCAR gilt – also wenn die fehlenden Werte vollständig zufällig sind. Bei weniger als 5 % fehlenden Werten und keinem erkennbaren systematischen Muster ist der Ausschluss in Abschlussarbeiten häufig vertretbar, sollte aber begründet werden.
na.rm – der schnelle Weg für deskriptive Statistiken
Für einfache Berechnungen wie Mittelwert oder Standardabweichung können Sie fehlende Werte direkt in der Funktion übergehen:
# Mittelwert ohne NA-Werte berechnen
mean(df$alter, na.rm = TRUE)
# Standardabweichung ohne NA-Werte
sd(df$einkommen, na.rm = TRUE)
Das Argument na.rm = TRUE wird von den meisten Basisfunktionen in R unterstützt. Beachten Sie aber: Für Regressionsanalysen oder andere multivariate Verfahren löst dieses Argument das Problem nicht grundsätzlich – dort müssen Sie sich vorab für eine Strategie entscheiden.
Multiple Imputation mit dem mice-Paket
Die methodisch robusteste Lösung für fehlende Werte bei MAR-Annahme ist die Multiple Imputation by Chained Equations (MICE). Statt fehlende Werte einmalig zu ersetzen, erzeugt MICE mehrere vollständige Datensätze, analysiert diese getrennt und fasst die Ergebnisse durch Pooling zusammen – so bleibt die Unsicherheit durch die Imputation erhalten und fließt korrekt in die Inferenz ein.
Wie in der Fachliteratur zur R-Implementierung beschrieben, werden mehrere vollständige Datensätze erzeugt, getrennt analysiert und die Ergebnisse anschließend gepoolt – statt fehlende Werte einmalig zu ersetzen. Dieser Unterschied ist für die korrekte Quantifizierung von Unsicherheit entscheidend.
Installation und Grundprinzip
install.packages("mice")
library(mice)
Der Kernworkflow in mice besteht aus drei Schritten: Imputation → Analyse → Pooling.
Schritt 1: Imputation mit mice()
Die Funktion mice() erzeugt standardmäßig fünf imputierte Datensätze (m = 5) mit fünf Iterationen (maxit = 5). Laut der offiziellen Dokumentation werden dabei je nach Variablentyp automatisch passende Methoden gewählt: Predictive Mean Matching für kontinuierliche Variablen, logistische Regression für binäre, polytome Regression für nominale und proportionale Odds-Modelle für ordinale Variablen.
# Imputationsmodell erstellen
imp <- mice(df,
m = 5, # Anzahl der imputierten Datensätze
maxit = 5, # Anzahl der Iterationen
seed = 123, # Seed für Reproduzierbarkeit
printFlag = FALSE)
# Überblick über die verwendeten Methoden
imp$method
seed-Parameter sorgt dafür, dass Ihre Imputation reproduzierbar ist. Ohne festen Seed erhalten Sie bei jedem Durchlauf leicht andere Ergebnisse. Für wissenschaftliche Arbeiten ist ein dokumentierter Seed daher unbedingt empfehlenswert.Schritt 2: Analyse auf den imputierten Datensätzen
Mit der with()-Funktion führen Sie Ihre Analyse auf allen fünf Datensätzen gleichzeitig durch. Das folgende Beispiel zeigt eine lineare Regression:
# Lineare Regression auf allen imputierten Datensätzen
fit <- with(imp, lm(einkommen ~ alter + bildung + geschlecht))
# Überblick über die Modelle
summary(fit)
Schritt 3: Pooling der Ergebnisse
Im letzten Schritt fasst pool() die Ergebnisse aller fünf Analysen nach den Regeln von Rubin zusammen. Das Ergebnis ist ein einziger, korrekter Schätzer mit einem Standardfehler, der die Imputationsunsicherheit berücksichtigt:
# Ergebnisse poolen
pooled <- pool(fit)
summary(pooled)
Qualität der Imputation prüfen
Nach der Imputation sollten Sie prüfen, ob der Algorithmus konvergiert ist. Dafür eignet sich ein Trace-Plot:
# Konvergenz visuell prüfen
plot(imp)
# Stripplot: Vergleich imputierter vs. beobachteter Werte
stripplot(imp, pch = 20, cex = 1.2)
Im Trace-Plot sollten die Linien der verschiedenen Imputationsketten keine gerichteten Trends zeigen und wild durcheinander verlaufen – das ist ein Zeichen für gute Konvergenz. Systematische Muster oder Trends deuten auf Probleme hin und sollten in der Abschlussarbeit thematisiert werden.
Praktischer Workflow für Ihre Abschlussarbeit
Für eine Abschlussarbeit empfiehlt sich ein strukturierter, transparenter Umgang mit fehlenden Werten. Der folgende Ablauf hat sich in der Praxis bewährt:
Checkliste: Fehlende Werte in R – Schritt für Schritt
- Missingness quantifizieren:
colSums(is.na(df))und Anteil pro Variable bestimmen - Muster visualisieren: VIM-Paket und
aggr()-Plot einsetzen - Mechanismus beurteilen: MCAR, MAR oder MNAR – begründen und im Methodenteil dokumentieren
- Methode wählen: Bei < 5 % und MCAR: listenweiser Ausschluss vertretbar; bei MAR und konfirmatorischer Analyse: mice
- Seed setzen und dokumentieren:
set.seed()oderseed-Argument inmice() - Imputationsmethoden passend zum Variablentyp wählen (mice wählt automatisch)
- Konvergenz prüfen: Trace-Plot und Stripplot
- Ergebnisse poolen:
pool()statt auf einem einzelnen imputierten Datensatz auswerten - Vorgehen im Methodenteil berichten: Anzahl der Imputationen, Methode, Software-Version
Dieser Workflow gilt unabhängig davon, ob Sie anschließend eine t-Test-Analyse, eine Regressionsanalyse oder eine ANOVA durchführen – der Umgang mit fehlenden Werten sollte immer vor der eigentlichen Auswertung abgeschlossen und dokumentiert sein.
Beachten Sie außerdem: Wie die methodische Literatur betont, müssen beim MICE-Verfahren nicht nur technische Schritte korrekt ausgeführt, sondern auch Imputationsprozess, Modellwahl und diagnostische Prüfungen transparent berichtet werden. Prüfer und Gutachter erwarten, dass Sie zeigen, dass Sie den Mechanismus hinter Ihren Daten verstanden haben – nicht nur, dass Sie eine Funktion ausgeführt haben.
Wer sich bei der Umsetzung unsicher ist oder methodische Entscheidungen absichern möchte, findet bei unserer statistischen Beratung für R-Auswertungen individuelle Unterstützung – von der Diagnose fehlender Werte bis zur korrekten Ergebnisdarstellung in der Abschlussarbeit.
Welche weiteren R-Pakete für Ihre Auswertung relevant sind, erfahren Sie in unserem Beitrag zu den wichtigsten R-Paketen für die statistische Auswertung.