Pourquoi cette imputation multiple est-elle de mauvaise qualité?

9

Considérez le code R suivant:

> 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

Comme vous pouvez le voir, j'ai conçu les données de manière approximative c = 2*b = 4*a. En tant que tel, je m'attendrais à ce que les valeurs manquantes soient autour a=1, b=2, c=12. J'ai donc effectué l'analyse:

> 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 )

Et enfin observé l'ensemble de données terminé:

> 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

Comme vous pouvez le voir, les valeurs imputées ne sont pas ce que j'attendais. En fait, ils ressemblent au résultat d' une imputation unique, car les valeurs manquantes ont apparemment été tirées d'enregistrements adjacents.

Qu'est-ce que je rate?

Je dois noter que mes "connaissances" en statistiques se limitent principalement à ce dont je me souviens vaguement d'un cours d'introduction que j'ai suivi il y a environ 14 ans. Je cherche juste un moyen simple d'imputer les valeurs manquantes, il ne doit pas être le plus optimisé mais il doit avoir une sorte de sens (que je ne peux pas faire de ces résultats). C'est peut-être le cas qui min'est pas la bonne approche pour atteindre ce que je veux (peut-être prédire devrait être utilisé à la place), donc je suis ouvert aux suggestions.

J'ai également essayé une approche similaire avec mice, ce qui a conduit à des résultats similaires.

MISE À JOUR Amelia fonctionne très bien hors de la boîte. Ce serait quand même intéressant de savoir ce qui me manque avec mi / souris.

t0x1n
la source
1
Qu'essayez-vous de faire avec l'imputation multiple en général? Il m'est difficile de répondre à cette question sans un peu plus de contexte. [Je ne trouve pas non plus surprenant du tout que la qualité de votre imputation était faible étant donné que vous travaillez avec seulement trois variables et six enregistrements]
Patrick S. Forscher
@ PatrickS.Forscher vous aviez raison. Je viens d'essayer un test similaire avec 100 enregistrements et les résultats étaient comme je m'y attendais. Veuillez en faire une réponse afin que je puisse l'accepter, et si vous pouviez spécifier quelques minimums approximatifs pour une imputation réussie, ce serait formidable.
t0x1n
Que diriez-vous des résultats suivants? > 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.0Désolé pour le formatage, mais je suppose que c'est le mieux que je puisse faire dans un commentaire.
Aleksandr Blekh
Amelia II est expressément destinée à l'imputation multiple de séries chronologiques transversales (aka études de panel). MICE concerne les données de séries chronologiques non transversales (ou du moins, MICE produit de faibles imputations pour ces séries chronologiques, voir Honaker, J. et King, G. (2010). Que faire à propos des valeurs manquantes dans les séries chronologiques croisées -section data. American Journal of Political Science , 54 (2): 561–581.)
Alexis
@AleksandrBlekh Je ne les aime pas non plus, je m'attendais à quelque chose de plus proche de x/ 2x/4x
t0x1n

Réponses:

13

Étant donné que vous utilisez six cas [enregistrements] et trois variables, la qualité de votre imputation sera assez faible.

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

Ainsi, en général, l'augmentation du nombre de cas (ou, plus précisément, la diminution de la proportion de valeurs manquantes) augmentera la qualité de l'imputation.

B

B

qm

Ainsi, en général, l'augmentation du nombre de variables disponibles dans un ensemble de données augmentera la qualité de l'imputation, tant que ces variables supplémentaires renseignent sur les valeurs manquantes.

Références

Rubin, DB (1996). Imputation multiple après 18 ans et plus. Journal de l'American Statistical Association , 91, 473-489.

Schafer, JL (1999). Imputation multiple: une amorce. Méthodes statistiques en recherche médicale , 8, 3-15.

Patrick S. Forscher
la source