Contexto : Regressão hierárquica com alguns dados ausentes.
Pergunta : Como uso a estimativa de máxima verossimilhança de informações completas (FIML) para tratar dos dados ausentes no R? Existe um pacote que você recomendaria e quais são as etapas típicas? Recursos e exemplos online também seriam muito úteis.
PS : Sou um cientista social que recentemente começou a usar R. A imputação múltipla é uma opção, mas eu realmente gosto de como programas elegantes como o Mplus lidam com dados ausentes usando o FIML. Infelizmente, o Mplus parece não comparar modelos no contexto de regressão hierárquica no momento (por favor, deixe-me saber se você sabe uma maneira de fazer isso!). Gostaria de saber se há algo semelhante em R? Muito Obrigado!
r
maximum-likelihood
missing-data
Sootica
fonte
fonte
Respostas:
O crédito desta resposta é para @ Josué, que deu uma resposta incrível quando eu postei essa pergunta na comunidade de estatísticas e estatísticas no Google+. Estou simplesmente colando sua resposta abaixo.
Para executar a regressão (sem modelagem de variável latente), leia minhas anotações digitadas após o texto citado.
Isso significa que, se todas as variáveis com falta são contínuas, lavaan , um pacote de modelagem de equações estruturais (SEM) é bom para usar para FIML em R.
Agora voltando à minha pergunta inicial. Minha intenção era ter uma correção mágica para falta ao executar a regressão linear. Todas as minhas variáveis com falta eram boas e contínuas. Então, comecei a executar minhas análises em dois estilos:
Eu estava perdendo muitas coisas fazendo regressão no estilo SEM. Ambos os estilos deram coeficientes e quadrados R semelhantes, mas no estilo SEM eu não fiz o teste de significância da regressão (os valores típicos de F com df); em vez disso, obtive índices de ajuste que não foram úteis, pois havia usado todos os meus graus da liberdade. Além disso, quando um modelo tinha um R2 maior que o outro, não consegui encontrar uma maneira de comparar se a diferença era significativa. Além disso, fazer a regressão da maneira usual dá acesso a vários testes de suposições de regressão inestimáveis. Para uma resposta mais detalhada sobre esse problema, veja minha outra pergunta que foi bem respondida pelo @StasK .
Portanto, parece que a lavaan é um pacote decente para o FIML em R, mas o uso do FIML depende de suposições estatísticas e do tipo de análise que estamos realizando. No que diz respeito à regressão (sem modelagem de variável latente), mantê-la fora dos programas SEM e usar várias imputações é provavelmente uma decisão sensata.
fonte
No que diz respeito à sua pergunta FIML, pensei em compartilhar este maravilhoso artigo do SAS de Paul Allison http://www.statisticalhorizons.com/wp-content/uploads/MissingDataByML.pdf
Dado os comentários de Paul Allison, é possível implementar facilmente o mesmo procedimento no R usando lme ou nlmer.
fonte
existem 2 maneiras principais de lidar com dados / registros ausentes. Você exclui toda a linha de observação que possui um valor ausente ou você encontra uma maneira de gerar esse valor ausente. Se você adotar a primeira abordagem, poderá acabar perdendo muitos dados. Na segunda abordagem, é necessário encontrar uma maneira "inteligente" de gerar esses dados ausentes, de modo que as estimativas dos parâmetros do novo conjunto de dados não sejam muito diferentes das estimativas dos parâmetros do conjunto de dados observado.
Essa segunda abordagem é chamada imputação de dados e há vários pacotes R que fazem isso. Um deles é chamado mclust, e a função que você precisa é chamada imputeData. Esta função utiliza o algoritmo EM (maximização de expectativa) para estimar os parâmetros da parte não observada do conjunto de dados, dada a parte observada. Depois que os parâmetros são encontrados, o novo ponto de dados é gerado. A suposição de distribuição dos dados ausentes, os dados observados e todo o conjunto de dados é assumida como gaussiana.
Espero que esta explicação o ajude a alcançar o que você está tentando fazer
fonte