Aplicando la regla de Rubin para combinar conjuntos de datos imputados múltiples

8

Espero agrupar los resultados de un conjunto bastante básico de análisis realizado en datos imputados de forma múltiple (por ejemplo, regresión múltiple, ANOVA). La imputación múltiple y los análisis se han completado en SPSS, pero SPSS no proporciona resultados agrupados para algunas estadísticas que incluyen el valor F, la matriz de covarianza, R-Squared, etc.

He hecho algunos intentos para resolver este problema al aventurarme en R o probar las macros que están disponibles y no he resuelto el problema con éxito (por ejemplo, al encontrarme con problemas para agrupar las estadísticas de más de 5 imputaciones en ratones, por ejemplo).

En este punto, me gustaría intentar calcularlos a mano, aplicando la regla de Rubin, utilizando la salida que genera SPSS. Sin embargo, no estoy seguro de cómo puedo derivar la varianza dentro de la imputación ( ) según la salida que genera SPSS. U¯=1mj=1mUj

Realmente agradecería una instrucción detallada sobre esto.

usuario81715
fuente
¿Se pregunta qué significan los símbolos en esa fórmula? ¿Sabes qué significa en la salida de SPSS? U
gung - Restablece a Monica
Para el resultado ANOVA en particular (como parte de la regresión lineal), se informa el estadístico F junto con sumas de cuadrados, df y cuadrado medio. Estoy tratando específicamente de averiguar cómo calcular el componente de varianza dentro de la imputación para la estadística F.
user81715

Respuestas:

8

Las reglas de Rubin solo pueden aplicarse a parámetros que siguen una distribución normal. Para los parámetros con una distribución F o Chi Square se necesita un conjunto diferente de fórmulas:

  • Allison, PD (2002). Datos perdidos. Newbury Park, CA: Sabio.

Para realizar un ANOVA en múltiples conjuntos de datos imputados, puede usar el paquete R mouseadds ( pdf ; miceadds::mi.anova).

Actualización 1

Aquí hay un ejemplo completo:

  1. Exporte sus datos de SPSS a R. En Spss guarde su conjunto de datos como .csv

  2. Lea en su conjunto de datos:

    library(miceadds)   
    dat <– read.csv(file='your-dataset.csv')
    

    Supongamos que la es su variable dependiente y que tiene dos factoresreading

    • género , con hombre = 0 y mujer = 1
    • tratamiento , con control = 0 y 'tratamiento recibido' = 1

    Ahora vamos a convertirlos en factores:

    dat$gender    <- factor(dat$gender)
    dat$treatment <- factor(dat$treatment)
  3. Convierta su conjunto de datos en un objeto mids, donde suponemos, que la primera variable contiene el número de imputación (Imputation_ en SPSS):

    dat.mids <- as.mids(dat)
  4. Ahora puedes realizar un ANOVA:

    fit <- mi.anova(mi.res=dat.mids, formula="reading~gender*treatment", type=3)
    summary(fit)
    

Actualización 2 Esta es una respuesta a su segundo comentario:

Lo que usted describe aquí es un problema relacionado con la importación / exportación de datos entre SPSS y R. Se podría tratar de importar el .savarchivo directamente en R y hay un montón de paquetes dedicados para ello: foreign, rio, gdata, Hmisc, etc Yo prefiero el csv vías , pero eso es cuestión de gustos y / o depende de la naturaleza de su problema. Tal vez también debería consultar algunos tutoriales en youtube u otras fuentes en internet.

library(foreign)
dat <- read.spss(file='path-to-sav', use.value.labels=F, to.data.frame=T)

Actualización 3 Esta es una respuesta a su primer comentario:

Sí, puede hacer su análisis en SPSS y agrupar los valores de F en miceadds(tenga en cuenta que este ejemplo está tomado de la miceadds::micombine.Fpágina de ayuda):

library(miceadds)
Fvalues <- c(6.76 , 4.54 , 4.23 , 5.45 , 4.78, 6.76 , 4.54 , 4.23 , 5.45 , 4.78, 
             6.76 , 4.54 , 4.23 , 5.45 , 4.78, 6.76 , 4.54 , 4.23 , 5.45 , 4.78 )
micombine(Fvalues, df1=4)
Thomas
fuente
Gracias por su sugerencia. De hecho, probé mouseadds, pero un problema que encontré fue agrupar el valor F para los 20 conjuntos de datos imputados y no solo los 5 que los ratones están programados para leer de forma predeterminada (creo). Intenté ingresar los 20 valores f que obtuve de la salida de SPSS y usé ratones para agrupar estas estimaciones. ¿Sería aceptable este método (es decir, la imputación en SPSS, agrupa estas estimaciones en ratones)? Si hay una manera en la que pueda leer las 20 imputaciones en MICE, lo agradecería. ¡Gracias de nuevo!
user81715
He actualizado mi respuesta con un ejemplo completo de spss a mouseadds.
Thomas
Gracias de nuevo. ¡Intentaré ejecutar esto y espero seguir con los resultados!
user81715
Por cierto: los ratones no están restringidos a ninguna cantidad de imputaciones. A menudo uso ratones con m> 20 imputaciones. Sacar las estimaciones de SPSS y agruparlas en ratones es difícil y tedioso, porque los ratones asumen por defecto que todos los pasos se realizan dentro del alcance del paquete. Si mi respuesta te ha ayudado, ¡etiquétala como correcta o positiva!
Thomas
> dat IV1) Error en ( , "IV1", valor = entero (0)): el reemplazo tiene 0 filas, los datos tienen 10> dat.mids = as.mids (dat) Error en ratones (datos [ data [, .imp] == 0, -c (.imp, .id)], m = max (as.numeric (data [,: Los datos deben contener al menos dos columnas> fit = mi.anova (mi.res = dat.mids, fórmula = "DV ~ IV1 * IV2 * INT", tipo = 3) resumen (ajuste) Error: símbolo inesperado en "fit = mi.anova (mi.res = dat.mids, fórmula =" DV ~ IV1 * IV2 * INT ", type = 3) summary">IV1=factor(dat$<-.data.frame*tmp*
user81715
7

Usted anotó correctamente el estimador agrupado:

U¯=1mi=1mUi

Donde representa los resultados analíticos del -ésimo conjunto de datos imputado. Normalmente, los resultados analíticos tienen una distribución aproximada normal de la cual sacamos inferencia o creamos límites de confianza. Esto se realiza principalmente utilizando el valor medio ( ) y su error estándar. Las pruebas T, las regresiones lineales, las regresiones logísticas y, básicamente, la mayoría de los análisis se pueden resumir adecuadamente en términos de ese valor y su error estándar .UiiUiUise(Ui)

Las Reglas de Rubin usan la ley de la varianza total para escribir la varianza como la suma de una varianza de imputación entre y dentro de:

var(U¯)=E[var(U¯|Ui)]+var(E[U¯|Ui])

El primer término es la varianza interna de tal manera que donde es la varianza del resultado del análisis del -ésimo conjunto de datos completo o imputado. El último término es la varianza entre imputaciones: . Nunca he entendido bien la corrección del DF aquí, pero este es básicamente el enfoque aceptado.E[var(U¯|Ui)=1mi=1mViViivar(E[U¯|Ui])=M+1M1i=1m(UiU¯)2

De todos modos, dado que el número recomendado de imputaciones es pequeño (Rubin sugiere tan solo 5), generalmente es posible calcular este número ajustando a mano cada análisis. Un ejemplo a mano se enumera a continuación:

require(mice)
set.seed(123)
nhimp <- mice(nhanes)
sapply(1:5, function(i) {
  fit <- lm(chl ~ bmi, data=complete(nhimp, i))
  print(c('coef'=coef(fit)[2], 'var'=vcov(fit)[2, 2]))
})

Da el siguiente resultado:

coef.bmi      var 
2.123417 4.542842 
3.295818 3.801829 
2.866338 3.034773 
1.994418 4.124130 
3.153911 3.531536

Entonces, la varianza interna es el promedio de las variaciones de estimación puntual específica de imputación: 3.8 (promedio de la segunda columna). La varianza intermedia es 0.35 varianza de la primera columna). Usando la corrección DF obtenemos la varianza 4.23. Esto concuerda con el poolcomando dado en el micepaquete.

> fit <- with(data=nhimp,exp=lm(chl~bmi))
> summary(pool(fit))
                  est        se        t       df   Pr(>|t|)     lo 95      hi 95 nmis       fmi     lambda
(Intercept) 119.03466 54.716451 2.175482 19.12944 0.04233303  4.564233 233.505080   NA 0.1580941 0.07444487
bmi           2.68678  2.057294 1.305978 18.21792 0.20781073 -1.631731   7.005291    9 0.1853028 0.10051760

que muestra el SE = 2.057 para el coeficiente del modelo, (Varianza = SE ** 2 = 4.23).

No veo cómo aumentar el número de conjuntos de datos imputados crea un problema en particular. Si no puede proporcionar un ejemplo del error, no sé cómo ser más útil. Pero la combinación manual es segura para acomodar una variedad de estrategias de modelado.

Este artículo analiza otras formas en que la ley de la varianza total puede derivar otras estimaciones de la varianza de la estimación agrupada. En particular, los autores señalan (correctamente) que la suposición necesaria para las Reglas de Rubin no es la normalidad de las estimaciones puntuales sino algo llamado simpatía. Normalidad WRT, la mayoría de las estimaciones puntuales que provienen de los modelos de regresión tienen una convergencia rápida bajo el teorema del límite central, y el bootstrap puede mostrarle esto.

AdamO
fuente
¿puede explicar cómo llegó a 4.23 desde 3.8 (media de las estimaciones de varianza para cada conjunto de datos imputado) y 0.35 (varianza de las estimaciones de coeficientes para cada uno de los cinco conjuntos de datos)? Me estoy perdiendo un paso.
llewmills
1
@llewmills hmm la corrección DF debe haber sido y no . (1+1/m)(m1)/(m+1)
AdamO
gracias @AdamO. Supongo que quiso decir , (en lugar de ) porque eso arrojó el resultado exacto como . m+1m1+1mpool(fit)
llewmills
¿Supongo que no conoce la fórmula para agrupar el valor p @AdamO?
llewmills
1
@llewmills ¿por qué calcularías 5 valores p? Tiene una gran media y una gran SE, ahora combínelas y calcule un valor p para el análisis de imputación múltiple.
AdamO