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 puede ver, he diseñado los datos de manera aproximada c = 2*b = 4*a
. Como tal, esperaría que los valores faltantes estén alrededor a=1, b=2, c=12
. Entonces realicé 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 conjunto de datos completo:
> 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 puede ver, los valores imputados no son lo que esperaba. En realidad, parecen el resultado de una imputación única, ya que los valores faltantes aparentemente se han tomado de los registros adyacentes.
¿Qué me estoy perdiendo?
Debo señalar que mi "conocimiento" en estadística se limita principalmente a lo que recuerdo vagamente de un curso introductorio que tomé hace ~ 14 años. Solo estoy buscando una manera simple de imputar valores perdidos, no tiene que ser el más optimizado, pero sí tiene que tener algún tipo de sentido (que no puedo hacer con estos resultados). Bien puede ser el caso que mi
no sea el enfoque correcto para lograr lo que quiero (tal vez predecir debería usarse en su lugar), así que estoy abierto a sugerencias.
También probé un enfoque similar con mice
, que condujo a resultados similares.
ACTUALIZACIÓN Amelia funciona muy bien fuera de la caja. Sin embargo, aún sería interesante saber lo que me falta con mi / mouse.
> 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.0
Perdón por el formato, pero supongo que es lo mejor que puedo hacer en un comentario.x
/2x
/4x
Respuestas:
Dado que está utilizando seis casos [registros] y tres variables, la calidad de su imputación será bastante baja.
Para ver por qué este será el caso, recuerde que la imputación múltiple funciona al completar los valores faltantes con valores imputables plausibles. Estos valores imputados se calculan en conjuntos de datos separados (volveré sobre cómo se derivan estos valores imputados más adelante en esta respuesta). Los valores imputados variarán ligeramente de un conjunto de datos a otro.m
Por lo tanto, dada una cantidad estadística de interés (por ejemplo, una media, un coeficiente de regresión, etc.), uno puede usar los conjuntos de datos para estimar el error estándar promedio para dentro de los conjuntos de datos (una cantidad que llamaré el varianza de imputación, o ) y el grado en que varía entre los conjuntos de datos (una cantidad que llamaré varianza entre imputaciones, o ).q m q m U¯ q m B
La relación entre la calidad de imputación, yB U¯
Se puede usar la varianza dentro de la imputación y la varianza entre la imputación para derivar una estimación del grado en que una estimación imputada de una cantidad estadística ha sido influenciada por la información faltante. Por supuesto, cuanta más información se haya perdido, peor será la calidad de la imputación. La estimación de la información perdida por falta se etiqueta , y viene dada por la siguiente fórmula:U¯ B γ
Por lo tanto, los valores altos de dan como resultado valores altos de , lo que a su vez dará como resultado valores altos de . Un alto valor de , a su vez, indica que se perdió más información debido a datos faltantes y una imputación de peor calidad.B r γ γ
Por lo tanto, además de aumentar la relación entre la varianza entre imputación y la varianza dentro de la imputación, el aumento de también disminuye . Esto dará como resultado un valor más alto de , lo que indica más información perdida por falta y una imputación de peor calidad.d f γB df γ
En resumen, los valores más altos de la varianza entre imputaciones afectan la calidad de imputación de dos maneras:B
La relación entre el número de casos yB
Dados dos conjuntos de datos similares de otra forma, un conjunto de datos con un número menor de casos tendrá una mayor entre imputación varianza .B
Esto ocurrirá porque, como lo describo anteriormente, la varianza entre imputación se calcula mediante el cálculo de una cantidad estadística de interés dentro de cada uno de imputada conjuntos de datos y calcular el grado en que varía a través de cada uno de los conjuntos de datos. Si un conjunto de datos dado tiene una mayor cantidad de casos, pero una cantidad similar de los valores que faltan como otro, una proporción menor de los valores será libre para variar a través de cada uno de los imputada conjuntos de datos, lo que significa que habrá menor variación total en a través de la conjuntos de datos imputados.m q m m qq m q m m q
Por lo tanto, en general, aumentar el número de casos (o, más precisamente, disminuir la proporción de valores faltantes) aumentará la calidad de la imputación.
La relación entre el número de variables yB
Dados dos conjuntos de datos similares, un conjunto de datos con un mayor número de variables tendrá una varianza entre imputación más pequeña , siempre que esas variables adicionales sean informativas sobre los valores faltantes.B
Esto ocurrirá porque, en general, los valores faltantes para una variable dada se "completan" mediante el uso de información de otras variables para generar estimaciones plausibles de los valores faltantes (los detalles específicos de cómo se generan estas estimaciones variarán según la implementación del MI estás usando). Más información en forma de variables adicionales dará como resultado valores imputados más estables, lo que resultará en una menor variación en la cantidad estadística de interés en cada uno de los conjuntos de datos imputados .mq m
Por lo tanto, en general, aumentar el número de variables disponibles en un conjunto de datos aumentará la calidad de la imputación, siempre que esas variables adicionales sean informativas sobre los valores faltantes.
Referencias
Rubin, DB (1996). Imputación múltiple después de 18 años o más. Revista de la Asociación Americana de Estadística , 91, 473-489.
Schafer, JL (1999). Imputación múltiple: una cartilla. Métodos estadísticos en la investigación médica , 8, 3-15.
fuente