Considere el siguiente código R:
> 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
Como se puede ver he diseñado los datos de forma que, aproximadamente, c = 2*b = 4*a
. Como tal, yo esperaría que la falta de valores en torno a=1, b=2, c=12
. Para realizar el análisis:
> 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 )
Y, finalmente, observó el completo conjunto de datos:
> 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
Como se puede ver los valores imputados no son lo que yo esperaba. En realidad, se ven como el resultado de la sola imputación como los valores que faltan han sido aparentemente tomadas de otros registros.
Lo que me estoy perdiendo?
Debo señalar que mi "conocimiento" en las estadísticas se limita principalmente a lo que yo recuerdo vagamente de un curso introductorio tomé ~14 años. Estoy buscando una manera simple para imputar los valores perdidos, no tiene que ser el más optimizado pero es necesario hacer algún tipo de sentido (que yo no puedo hacer de estos resultados). Bien puede darse el caso de que mi
no es el enfoque correcto para lograr lo que quiero (tal vez predecir debe utilizarse en su lugar), así que estoy abierto a sugerencias.
También probé con un enfoque similar con mice
, lo que condujo a resultados similares.
ACTUALIZACIÓN de Amelia funciona muy bien fuera de la caja. Todavía sería interesante saber lo que me falta con mi / ratones sin embargo.