Wenn Sie Cluster wie in "Mixed-Effects" -Modellen denken, sollten Sie die von mice
bereitgestellten Methoden verwenden, die für Clustered-Daten vorgesehen sind. Diese Verfahren können in der manual gefunden werden und werden üblicherweise wie 2l.something
vorangestellt.
Die Vielzahl von Verfahren zum gruppierten Datum ist etwas in mice
beschränkt, sondern kann unter Verwendung von I 2l.pan
für fehlende Daten, die in untergeordneten Einheiten und 2l.only.norm
auf Clusterebene empfehlen.
Als Alternative zu Mixed-Effects-Modellen können Sie Dummy-Indikatoren verwenden, um die Clusterstruktur darzustellen (d. H. Eine Dummy-Variable für jeden Cluster). Diese Methode ist nicht ideal, wenn Sie die Cluster aus der Perspektive von Mixed-Effects-Modellen betrachten. Wenn Sie also Mixed-Effects-Analysen durchführen möchten, sollten Sie bei Mixed-Effects-Modellen bleiben.
Im Folgenden zeige ich ein Beispiel für beide Strategien.
Zubereitung:
library(mice)
data(nhanes)
set.seed(123)
nhanes <- within(nhanes,{
country <- factor(sample(LETTERS[1:10], size=nrow(nhanes), replace=TRUE))
countryID <- as.numeric(country)
})
Fall 1: Imputation Mixed-Effekte mit Hilfe von Modellen
Dieser Abschnitt verwendet 2l.pan
die drei Variablen mit fehlenden Daten zurechnen.Beachten Sie, dass ich clusterID
als Clustervariable verwenden, indem Sie in der Prädiktormatrix eine -2
angeben. Zu allen anderen Variablen weise ich nur feste Effekte zu (1
).
# "empty" imputation as a template
imp0 <- mice(nhanes, maxit=0)
pred1 <- imp0$predictorMatrix
meth1 <- imp0$method
# set imputation procedures
meth1[c("bmi","hyp","chl")] <- "2l.pan"
# set predictor Matrix (mixed-effects models with random intercept
# for countryID and fixed effects otherwise)
pred1[,"country"] <- 0 # don't use country factor
pred1[,"countryID"] <- -2 # use countryID as cluster variable
pred1["bmi", c("age","hyp","chl")] <- c(1,1,1) # fixed effects (bmi)
pred1["hyp", c("age","bmi","chl")] <- c(1,1,1) # fixed effects (hyp)
pred1["chl", c("age","bmi","hyp")] <- c(1,1,1) # fixed effects (chl)
# impute
imp1 <- mice(nhanes, maxit=20, m=10, predictorMatrix=pred1, method=meth1)
Fall 2: Imputation dummy Indikatoren (dis) für Cluster
In diesem Abschnitt verwendet pmm
für imputation und die gruppierten Struktur wird in einer "ad hoc" Art und Weise dargestellt. Das heißt, die Cluster werden nicht durch zufällige Effekte dargestellt, sondern durch feste Effekte. Dies kann die Variabilität der Variablen auf Clusterniveau mit fehlenden Daten überbewerten, also stellen Sie sicher, dass Sie wissen, was Sie tun, wenn Sie es verwenden.
# create dummy indicator variables
DIs <- with(nhanes, contrasts(country)[country,])
colnames(DIs) <- paste0("country",colnames(DIs))
nhanes <- cbind(nhanes,DIs)
# "empty" imputation as a template
imp0 <- mice(nhanes, maxit=0)
pred2 <- imp0$predictorMatrix
meth2 <- imp0$method
# set imputation procedures
meth2[c("bmi","hyp","chl")] <- "pmm"
# for countryID and fixed effects otherwise)
pred2[,"country"] <- 0 # don't use country factor
pred2[,"countryID"] <- 0 # don't use countryID
pred2[,colnames(DIs)] <- 1 # use dummy indicators
pred2["bmi", c("age","hyp","chl")] <- c(1,1,1) # fixed effects (bmi)
pred2["hyp", c("age","bmi","chl")] <- c(1,1,1) # fixed effects (hyp)
pred2["chl", c("age","bmi","hyp")] <- c(1,1,1) # fixed effects (chl)
# impute
imp2 <- mice(nhanes, maxit=20, m=10, predictorMatrix=pred2, method=meth2)
Wenn Sie lesen wollen, was diese Methoden zu denken, haben einen Blick auf one oder two von these Papieren.
Wäre das Ausführen von 'Mäusen' auf jeder Faktorebene ein guter Workaround? Zum Beispiel, 'Mäuse (nhanes [welche (nhans $ country == 'A'),], m = 10)' und dann Schleife über die Faktoren oder verwenden Sie Ihre Lieblings-R's groupby Operation? Dies setzt natürlich voraus, dass man für das Land "A" keine anderen Länder benötigt, dh sie sind unabhängig. –
Nun ja, ich habe es versucht - und es gibt eine Funktion, um die Datensätze 'rbind.mids (') zu kombinieren - aber ich habe festgestellt, dass dieser Functino mir viele Warnungen und Fehler liefert, die ich nicht herausfinden konnte Die Erkennung der Datenstruktur wäre besser Danke für den Vorschlag – user2498193