Aplicando a regra de Rubin para combinar conjuntos de dados multiplicados imputados

8

Espero reunir os resultados de um conjunto bastante básico de análises realizadas em dados multiplicados por imputação (por exemplo, regressão múltipla, ANOVA). A imputação múltipla e as análises foram concluídas no SPSS, mas o SPSS não fornece resultados agrupados para algumas estatísticas, incluindo o valor F, matriz de covariância, R-quadrado etc.

Fiz algumas tentativas para resolver esse problema, aventurando-me no R ou testando macros disponíveis e não resolvi o problema com êxito (por exemplo, com problemas ao agrupar as estatísticas para mais de 5 imputações no Rato, por exemplo).

Neste ponto, eu gostaria de tentar computá-las manualmente, aplicando a regra de Rubin, usando a saída que o SPSS gera. No entanto, não tenho certeza de como derivar a variação dentro da imputação ( ) com base na saída gerada pelo SPSS. U¯=1mj=1mUj

Eu realmente aprecio uma instrução detalhada sobre isso.

user81715
fonte
Você está apenas se perguntando o que significam os símbolos nessa fórmula? Você sabe o que representa na saída do SPSS? U
gung - Restabelece Monica
Para a saída da ANOVA em particular (como parte da regressão linear), a estatística F é relatada junto com somas de quadrados, df e média ao quadrado. Estou especificamente tentando descobrir como calcular o componente de variação dentro da imputação para a estatística-F.
User81715

Respostas:

8

As regras de Rubin podem ser aplicadas apenas aos parâmetros após uma distribuição normal. Para parâmetros com uma distribuição F ou Chi Square, é necessário um conjunto diferente de fórmulas:

  • Allison, PD (2002). Dados ausentes. Newbury Park, CA: Sábio.

Para executar uma ANOVA em vários conjuntos de dados imputados, você pode usar os miceadds do pacote R ( pdf ; miceadds::mi.anova).

Atualização 1

Aqui está um exemplo completo:

  1. Exporte seus dados do SPSS para R. No Spss, salve seu conjunto de dados como .csv

  2. Leia no seu conjunto de dados:

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

    Vamos supor que a é sua variável dependente e que você tem dois fatoresreading

    • sexo , com masculino = 0 e feminino = 1
    • tratamento , com controle = 0 e 'tratamento recebido' = 1

    Agora vamos convertê-los em fatores:

    dat$gender    <- factor(dat$gender)
    dat$treatment <- factor(dat$treatment)
  3. Converta seu conjunto de dados em um objeto mids, onde assumimos que a primeira variável contém o número de imputação (Imputation_ no SPSS):

    dat.mids <- as.mids(dat)
  4. Agora você pode executar uma ANOVA:

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

Atualização 2 Esta é uma resposta ao seu segundo comentário:

O que você descreve aqui é um problema relacionado com a importação / exportação de dados entre SPSS e R. Você poderia tentar importar o .savarquivo diretamente para R e há um monte de pacotes dedicados para isso: foreign, rio, gdata, Hmisc, etc. Eu prefiro o csv-way , mas isso é uma questão de gosto e / ou depende da natureza do seu problema. Talvez você também deva verificar alguns tutoriais no youtube ou outras fontes na internet.

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

Atualização 3 Esta é uma resposta ao seu primeiro comentário:

Sim, você pode fazer sua análise no SPSS e agrupar os valores F miceadds(observe que este exemplo é retirado da miceadds::micombine.Fpágina de ajuda):

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
fonte
Obrigado pela sua sugestão. Na verdade, eu tentei miceadds, mas um problema que encontrei foi agrupar o valor F para todos os 20 conjuntos de dados imputados e não apenas os 5 que os ratos estão programados para ler por padrão (eu acredito). Tentei inserir todos os 20 valores-f obtidos na saída do SPSS e usei ratos para agrupar essas estimativas. Esse método seria aceitável (ou seja, a imputação no SPSS, agrupa essas estimativas em camundongos)? Se existe uma maneira pela qual eu possa ler todas as 20 imputações no MICE, eu apreciaria. Obrigado novamente!
User81715 07/07/2015
Atualizei minha resposta com um exemplo completo de spss para miceadds.
Thomas
Mais uma vez obrigado. Vou tentar executar isso e espero acompanhar os resultados!
User81715
A propósito: os ratos não se restringem a qualquer número de imputações. Costumo usar ratos com m> 20 imputações. Obter as estimativas do SPSS e agrupá-las em ratos é difícil e entediante, porque os ratos assumem por padrão que todas as etapas são executadas dentro do escopo do pacote. Se minha resposta o ajudou, marque-a como correta ou com voto positivo!
Thomas
> dat IV1) Erro em ( , "IV1", valor = número inteiro (0)): a substituição tem 0 linhas, os dados têm 10> dat.mids = as.mids (dat) Erro em ratos (dados [ data [, .imp] == 0, -c (.imp, .id)], m = max (as.numeric (data [,: Os dados devem conter pelo menos duas colunas> fit = mi.anova (mi.res = dat.mids, fórmula = "DV ~ IV1 * IV2 * INT", tipo = 3) resumo (ajuste) Erro: símbolo inesperado em "fit = mi.anova (mi.res = dat.mids, fórmula =" DV ~ IV1 * IV2 * INT ", tipo = 3) sumário">IV1=factor(dat$<-.data.frame*tmp*
user81715 08/07/2015
7

Você anotou corretamente o estimador agrupado:

U¯=1mi=1mUi

Onde representa os resultados analíticos do ésimo conjunto de dados imputados. Normalmente, os resultados analíticos têm uma distribuição aproximada normal da qual extraímos inferência ou criamos limites de confiança. Isso é feito principalmente usando o valor médio ( ) e seu erro padrão. Testes-T, regressões lineares, regressões logísticas e basicamente a maioria das análises podem ser adequadamente resumidos em termos desse valor e seu erro padrão .UiiUiUise(Ui)

As Regras de Rubin usam a lei da variação total para anotar a variação como a soma de uma variação entre e dentro da imputação:

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

O primeiro termo é a variação interna tal que que é a variação do resultado da análise do ésimo conjunto de dados completo ou imputado. O último termo é a variação entre imputações: . Eu nunca compreendi bem a correção de DF aqui, mas essa é basicamente a abordagem aceita.E[var(U¯|Ui)=1mi=1mViViivar(E[U¯|Ui])=M+1M1i=1m(UiU¯)2

De qualquer forma, como o número recomendado de imputações é pequeno (Rubin sugere apenas 5), normalmente é possível calcular esse número manualmente, ajustando cada análise. Um exemplo manual está listado abaixo:

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

Fornece a seguinte saída:

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

Portanto, a variação interna é a média das variações da estimativa pontual específica da imputação: 3,8 (média da segunda coluna). A variação entre é a variação de 0,35 da primeira coluna). Usando a correção DF obtemos a variação 4.23. Isso concorda com o poolcomando dado no micepacote.

> 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 mostra o SE = 2,057 para o coeficiente do modelo (Variância = SE ** 2 = 4,23).

Não vejo como o aumento do número de conjuntos de dados imputados cria um problema específico. Se você não pode fornecer um exemplo do erro, não sei como ser mais útil. Mas a combinação manual certamente acomodará uma variedade de estratégias de modelagem.

Este artigo discute outras maneiras pelas quais a lei da variação total pode derivar outras estimativas da variação da estimativa combinada. Em particular, os autores apontam (corretamente) que a suposição necessária para as Regras de Rubin não é a normalidade das estimativas pontuais, mas algo chamado de simpatia. Na normalidade do WRT, a maioria das estimativas pontuais provenientes de modelos de regressão tem convergência rápida sob o teorema do limite central, e o bootstrap pode mostrar isso.

AdamO
fonte
você pode explicar como chegou a 4,23 de 3,8 (estimativas de média de variação para cada conjunto de dados imputado) e 0,35 (variação das estimativas de coeficiente para cada um dos cinco conjuntos de dados)? Estou faltando um passo.
Llewmills #
1
@llewmills hmm, a correção do DF deve ter sido e não . ( m - 1 ) / ( m + 1 )(1+1/m)(m1)/(m+1)
21420 AdamOf:
obrigado @AdamO. Suponho que você quis dizer , (em vez de ), porque esse resultado foi o exato . 1+1m+1m1+1mpool(fit)
Llewmills
Suponho que você não saiba a fórmula para agrupar o valor- p @AdamO?
Llewmills
1
@llewmills Por que você calcula 5 valores p? Você tem uma grande média e um grande SE, agora combine-os e calcule um valor-p para a análise multiplicada imputada.
7308 AdamO