Multiple Imputation für die Regression bei fehlenden Werten in R
Arndt Regorz, Dipl. Kfm. & MSc. Psychologie, 26.04.2022
Dieses ist eine Begleitseite zum Video-Tutorial über die Regressionsanalyse mit multipler Imputation für fehlende Werte mit R (multiple imputation with chained equations).
(Hinweis: Mit Anklicken des Videos wird ein Angebot des Anbieters YouTube genutzt.)
Code aus dem Video-Tutorial:
Hier ist der gesamte Code aus dem Video-Tutorial zur multiplen Imputation bei der Regressionsanalyse mit missing values (MCAR, MAR):
# install.packages("mice")
library(mice)
# Verwendung des Datensatzes nhanes2 aus dem mice Package
?nhanes2
summary(nhanes2)
str(nhanes2)
md.pattern(nhanes2)
# Gewöhnliche Regression mit listweisem Fallauschluss
reg.fit <- lm(chl ~ bmi + hyp, data=nhanes2)
summary(reg.fit)
# Multiple Imputation mit dem mice Paket
#=========================================
# 1. Imputation
imp.data <- mice (data = nhanes2, m = 50, maxit = 10, seed = 12345, print=FALSE)
# Which Methoden wurden zum Imputieren genutzt?
imp.data
#=====================================================================
# (Wenn man sich die vervollständigten Datensätze ansehen möchte:
imp.datasets <- complete(imp.data, "long")
imp.datasets
#)
# (Wenn wir die Imputationmethoden ändern wollten
methods(mice)
my.method <- c("", "pmm", "logreg", "norm")
imp.data2 <- mice (data = nhanes2, m = 50, maxit = 10, seed = 12345,
method = my.method, print=FALSE)
imp.data2
# Aber wir werden für dieses Tutorial die Default-Methoden nehmen)
#=====================================================================
# Prüfen auf Konvergenz der Schätzung
plot(imp.data)
# Prüfen, ob Imputation gültige Werte ergibt
stripplot(imp.data)
#(für die veränderte Schätzmethode:)
stripplot(imp.data2)
# 2. Regression für jeden imputierten Datensatz
reg.fit.mi <- with(imp.data, lm(chl ~ bmi + hyp))
reg.fit.mi
# Regressionsergebnisse beispielhaft für die 3. Imputation
summary(reg.fit.mi$analyses[[3]])
# 3. Poolen der Ergebnisse
pool.fit <- pool(reg.fit.mi)
summary(pool.fit)
# technische Zusatzinfos:
pool.fit
?mipo
# R²
pool.r2 <- pool.r.squared(reg.fit.mi)
pool.r2
# Vergleich mit fallweisem Ausschluss (nochmals)
summary(reg.fit)