Por que essa imputação múltipla é de baixa qualidade?

9

Considere o seguinte 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 você pode ver, eu projetei os dados para que aproximadamente c = 2*b = 4*a. Como tal, eu esperaria que os valores ausentes estivessem por perto a=1, b=2, c=12. Então eu realizei a análise:

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

E, finalmente, observou o conjunto de dados 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 você pode ver, os valores imputados não são o que eu esperava. Na verdade, eles parecem o resultado de uma imputação única, pois os valores ausentes foram aparentemente retirados de registros adjacentes.

o que estou perdendo?

Devo observar que meu "conhecimento" em estatística se limita principalmente ao que me lembro vagamente de um curso introdutório que fiz ~ 14 anos atrás. Estou apenas procurando uma maneira simples de imputar valores ausentes, não precisa ser o mais otimizado, mas precisa fazer algum tipo de sentido (o que não posso fazer com esses resultados). Pode ser que minão seja a abordagem correta para alcançar o que eu quero (talvez preveja que deve ser usado em vez disso), por isso estou aberto a sugestões.

Eu também tentei uma abordagem semelhante com mice, o que levou a resultados semelhantes.

ATUALIZAÇÃO Amelia funciona muito bem fora da caixa. Ainda seria interessante saber o que estou perdendo com mi / ratos.

t0x1n
fonte
11
O que você está tentando fazer com a imputação múltipla em geral? É difícil para mim responder a essa pergunta sem um pouco mais de contexto. [Eu também não achar que é surpreendente em tudo que a qualidade da sua imputação foi baixo, uma vez que você está trabalhando com apenas três variáveis e seis fichas]
Patrick S. Forscher
@ PatrickS.Forscher você estava certo. Eu apenas tentei um teste semelhante com 100 registros e os resultados foram como eu esperava. Por favor, faça uma resposta para que eu possa aceitá-la, e se você pudesse especificar alguns valores mínimos mínimos para uma imputação bem-sucedida, seria ótimo.
t0x1n 9/01/15
O que você diria sobre os seguintes resultados? > 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.0Desculpe a formatação, mas acho que é o melhor que posso fazer em um comentário.
Aleksandr Blekh
Amelia II é expressamente para imputação múltipla de séries temporais transversais (também conhecidas como estudos de painel). O MICE é para dados de séries temporais não transversais (ou pelo menos, o MICE produz imputações ruins para essas séries temporais, consulte Honaker, J. e King, G. (2010) .O que fazer com os valores ausentes nos cruzamentos de séries temporais -section dados. American Journal of Political Science , 54 (2): 561-581).
Alexis
@AleksandrBlekh Eu também não gosto deles, eu esperaria algo mais próximo de x/ 2x/4x
t0x1n

Respostas:

13

Como você está usando seis casos [registros] e três variáveis, a qualidade da sua imputação será bastante baixa.

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

Assim, em geral, aumentar o número de casos (ou, mais precisamente, diminuir a proporção de valores ausentes) aumentará a qualidade da imputação.

B

B

qm

Portanto, em geral, aumentar o número de variáveis ​​disponíveis em um conjunto de dados aumentará a qualidade da imputação, desde que essas variáveis ​​extras sejam informativas sobre os valores ausentes.

Referências

Rubin, DB (1996). Imputação múltipla após mais de 18 anos. Jornal da Associação Estatística Americana , 91, 473-489.

Schafer, JL (1999). Imputação múltipla: uma cartilha. Métodos Estatísticos em Pesquisa Médica , 8, 3-15.

Patrick S. Forscher
fonte