2016-05-08 12 views
0

Nach Imputation in R mit dem MICE Paket, möchte ich Kontingenztabellen erzeugen. Die Anpassung zeigt die Tabellen in einer Liste, aber wenn ich sie pool(), wird der folgende Fehler ausgelöst: Error in pool(fit) : Object has no coef() method. Was mache ich falsch?Kontingenztabellen nach mehrfachimplizierten Daten mit MICE in R

Dieses Grund Beispiel gibt den Fehler:

library("mice") 

imp <- mice(nhanes) 
fit <- with(imp, table(bmi, hyp)) 
est <- pool(fit) 

Antwort

1

Die Funktion mice::pool(object) einfach berechnet Schätzungen und Standardfehler für skalare estimands „Rubin-Regeln“ können, für die sie beruht auf der Tatsache, dass die Schätzungen häufig extrahiert werden unter Verwendung coef(object), und die Standardfehler dieser Schätzungen sind in der Regel in der Diagonalen vcov(object) verfügbar. Es soll mit Objekten der Klassen lm verwendet werden, die coef und vcov Methoden genau definiert haben.

In Ihrem Beispiel gelten Rubins Regeln nicht. Was sind die "Schätzungen" und "Standardfehler" der Einträge in einer Kontingenztabelle? Aus diesem Grund beklagt sich pool, dass es keine Methode gibt, um die Koeffizienten von Ihrem fit zu extrahieren.

Also, wenn Ihr „schätzen“ einfach die „durchschnittliche“ soll Kontingenztafel sein, versuchen Sie dies:

library("mice") 

imp <- mice(nhanes) 
fit <- with(imp, table(bmi, hyp)) 
est <- pool(fit) 

# dimensions 
nl <- length(fit$analyses) 
nr <- nrow(fit$analyses[[1]]) 
nc <- ncol(fit$analyses[[1]]) 

# names 
rnames <- rownames(fit$analyses[[1]]) 
cnames <- colnames(fit$analyses[[1]]) 

# cast list to array 
fit.arr <- array(unlist(fit$analyses), dim=c(nr,nc,nl), 
       dimnames=list(rnames,cnames)) 

# get "mean" contingency table 
apply(fit.arr, 1:2, mean) 

#  1 2 
# 20.4 1.8 0.0 
# 21.7 1.4 0.0 
# 22 1.4 0.2 
# 22.5 1.8 0.4 
# 22.7 1.2 0.4 
# 24.9 1.2 0.0 
# 25.5 1.0 1.6 
# 26.3 0.0 1.0 
# 27.2 0.4 1.0 
# 27.4 1.4 0.4 
# 27.5 1.6 0.2 
# 28.7 0.0 1.0 
# 29.6 1.0 0.2 
# 30.1 1.8 0.2 
# 33.2 1.0 0.0 
# 35.3 1.2 0.2 

Unabhängig davon, ob die „durchschnittliche“ Tabelle irgendwelcher ist, ist jedoch wahrscheinlich fraglich .

+0

Vielen Dank für die Erklärung. Ist es auch umstritten, einen Mittelwert aus einer imputierten Spalte zu berechnen, und wenn ja, warum? – Roger

+0

Für die kalkulatorischen Daten, nein. Der Mittelwert einer kontinuierlichen Variablen hat eine ungefähr normale Stichprobenverteilung. Als Ergebnis wird Rubins Regeln vernünftig sein. Für die "Spalten" in der Kontingenztabelle ist die Geschichte jedoch etwas anders. Für "Eventualitäten" nahe Null würde ich Rubins Regeln für ungeeignet halten, aber für Werte, die weit von Null entfernt sind, könnten sie gute Eigenschaften haben (siehe [die Beziehung zwischen Binomial- und Normalverteilung] (https://en.wikipedia.org/wiki)/Binomialverteilung # Normale_Approximation)). – SimonG