Warum ist diese Mehrfachzuschreibung von geringer Qualität?

9

Betrachten Sie den folgenden R-Code:

> data <- data.frame(
            a=c(NA,2,3,4,5,6),b=c(2.2,NA,6.1,8.3,10.2,12.13),c=c(4.2,7.9,NA,16.1,19.9,23))
> data
   a     b    c
1 NA  2.20  4.2
2  2    NA  7.9
3  3  6.10   NA
4  4  8.30 16.1
5  5 10.20 19.9
6  6 12.13 23.0

Wie Sie sehen, habe ich die Daten so konstruiert, dass sie ungefähr so ​​sind c = 2*b = 4*a. Als solches würde ich erwarten, dass die fehlenden Werte vorhanden sind a=1, b=2, c=12. Also habe ich die Analyse durchgeführt:

> imp <- mi(data)
Beginning Multiple Imputation ( Sat Oct 18 03:02:41 2014 ):
Iteration 1 
 Chain 1 : a*  b*  c*  
 Chain 2 : a*  b*  c*  
 Chain 3 : a*  b*  c*  
Iteration 2 
 Chain 1 : a*  b   c   
 Chain 2 : a*  b*  c*  
 Chain 3 : a   b*  c   
Iteration 3 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a*  b*  c*  
Iteration 4 
 Chain 1 : a   b   c   
 Chain 2 : a   b*  c   
 Chain 3 : a*  b   c   
Iteration 5 
 Chain 1 : a   b   c*  
 Chain 2 : a   b*  c   
 Chain 3 : a   b*  c   
Iteration 6 
 Chain 1 : a*  b   c*  
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 7 
 Chain 1 : a   b   c   
 Chain 2 : a   b*  c   
 Chain 3 : a   b   c*  
Iteration 8 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b*  c*  
Iteration 9 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c*  
 Chain 3 : a   b   c   
Iteration 10 
 Chain 1 : a   b*  c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 11 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 12 
 Chain 1 : a   b   c   
 Chain 2 : a*  b   c   
 Chain 3 : a   b   c   
Iteration 13 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c*  
 Chain 3 : a   b   c*  
Iteration 14 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 15 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c*  
Iteration 16 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b*  c   
Iteration 17 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 18 
 Chain 1 : a   b   c*  
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 19 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c*  
Iteration 20 
 Chain 1 : a   b   c*  
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 21 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 22 
 Chain 1 : a   b   c*  
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 23 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 24 
 Chain 1 : a   b   c*  
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 25 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 26 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 27 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 28 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 29 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
mi converged ( Sat Oct 18 03:02:45 2014 )
Run 20 more iterations to mitigate the influence of the noise...
Beginning Multiple Imputation ( Sat Oct 18 03:02:45 2014 ):
Iteration 1 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 2 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 3 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 4 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 5 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 6 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 7 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 8 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 9 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 10 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 11 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 12 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 13 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 14 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 15 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 16 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 17 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 18 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 19 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 20 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Reached the maximum iteration, mi did not converge ( Sat Oct 18 03:02:48 2014 )

Und schließlich beobachtete der fertige Datensatz:

> mi.completed(imp)
[[1]]
  a     b    c
1 2  2.20  4.2
2 2  2.20  7.9
3 3  6.10 16.1
4 4  8.30 16.1
5 5 10.20 19.9
6 6 12.13 23.0

[[2]]
  a     b    c
1 2  2.20  4.2
2 2  6.10  7.9
3 3  6.10  7.9
4 4  8.30 16.1
5 5 10.20 19.9
6 6 12.13 23.0

[[3]]
  a     b    c
1 2  2.20  4.2
2 2  2.20  7.9
3 3  6.10  7.9
4 4  8.30 16.1
5 5 10.20 19.9
6 6 12.13 23.0

Wie Sie sehen können, entsprechen die unterstellten Werte nicht meinen Erwartungen. Tatsächlich sehen sie wie das Ergebnis einer einzelnen Imputation aus, da die fehlenden Werte scheinbar aus benachbarten Datensätzen stammen.

Was vermisse ich?

Ich sollte beachten, dass mein "Wissen" in Statistik größtenteils auf das beschränkt ist, woran ich mich vage aus einem Einführungskurs erinnere, den ich vor ~ 14 Jahren belegt habe. Ich suche nur nach einem einfachen Weg, um fehlende Werte zu unterstellen. Es muss nicht der optimierteste sein, aber es muss einen Sinn ergeben (den ich aus diesen Ergebnissen nicht machen kann). Es kann durchaus sein, dass dies minicht der richtige Ansatz ist, um das zu erreichen, was ich will (vielleicht sollte vorhergesagt werden, dass stattdessen verwendet werden sollte), daher bin ich offen für Vorschläge.

Ich habe auch einen ähnlichen Ansatz versucht mice, der zu ähnlichen Ergebnissen führte.

UPDATE Amelia funktioniert sofort. Wäre trotzdem interessant zu wissen, was mir bei mi / Mäusen fehlt.

t0x1n
quelle
1
Was versuchen Sie generell mit multipler Imputation zu tun? Es fällt mir schwer, diese Frage ohne etwas mehr Kontext zu beantworten. [Ich finde es auch überhaupt nicht überraschend, dass die Qualität Ihrer Imputation gering war, da Sie nur mit drei Variablen und sechs Datensätzen arbeiten]
Patrick S. Forscher
@ PatrickS.Forscher du hattest recht. Ich habe gerade einen ähnlichen Test mit 100 Datensätzen versucht und die Ergebnisse waren wie erwartet. Bitte machen Sie eine Antwort, damit ich sie akzeptieren kann, und wenn Sie einige Mindestanforderungen für eine erfolgreiche Imputation festlegen könnten, wäre dies großartig.
t0x1n
Was würden Sie zu den folgenden Ergebnissen sagen? > mi.completed(imp) [[1]] a b c 1 0.289 2.20 4.2 2 2.000 2.57 7.9 3 3.000 6.10 12.7 4 4.000 8.30 16.1 5 5.000 10.20 19.9 6 6.000 12.13 23.0 [[2]] a b c 1 0.603 2.20 4.2 2 2.000 5.82 7.9 3 3.000 6.10 13.4 4 4.000 8.30 16.1 5 5.000 10.20 19.9 6 6.000 12.13 23.0 [[3]] a b c 1 1.05 2.20 4.2 2 2.00 4.18 7.9 3 3.00 6.10 12.0 4 4.00 8.30 16.1 5 5.00 10.20 19.9 6 6.00 12.13 23.0Entschuldigung für die Formatierung, aber ich denke, das ist das Beste, was ich in einem Kommentar tun kann.
Aleksandr Blekh
Amelia II ist ausdrücklich für die mehrfache Imputation von Querschnittszeitreihen (auch bekannt als Panel-Studien) vorgesehen. MICE ist für Zeitreihendaten ohne Querschnitt vorgesehen (oder zumindest erzeugt MICE schlechte Imputationen für solche Zeitreihen, siehe Honaker, J. und King, G. (2010). Was tun bei fehlenden Werten im Zeitreihenquerschnitt? Abschnittsdaten. American Journal of Political Science , 54 (2): 561–581.)
Alexis
@AleksandrBlekh Ich mag sie auch nicht, ich würde etwas näher an x/ 2x/4x
t0x1n

Antworten:

13

Da Sie sechs Fälle [Datensätze] und drei Variablen verwenden, ist die Qualität Ihrer Imputation recht gering.

m

qmqmU¯qmB

BU¯

U¯Bγ

γ=r+2df+3r+1

rBU¯

r=(1+1m)BU¯

Brγγ

dfγBU¯df

df=(m1)(1+mU¯(m+1)B)2

Bdfγ

B

  1. B
  2. B

B

B

qmqmmq

Daher erhöht im Allgemeinen eine Erhöhung der Anzahl von Fällen (oder genauer gesagt eine Verringerung des Anteils fehlender Werte) die Imputationsqualität.

B

B

qm

Im Allgemeinen erhöht das Erhöhen der Anzahl der in einem Datensatz verfügbaren Variablen die Imputationsqualität, solange diese zusätzlichen Variablen über die fehlenden Werte informieren.

Verweise

Rubin, DB (1996). Multiple Imputation nach 18+ Jahren. Journal of the American Statistical Association , 91, 473-489.

Schafer, JL (1999). Multiple Imputation: Ein Primer. Statistische Methoden in der medizinischen Forschung , 8, 3-15.

Patrick S. Forscher
quelle