Probabilidade máxima de informações completas para a falta de dados em R

18

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!

Sootica
fonte
1
Você já considerou o WinBugs ? Ele lida com dados ausentes de uma maneira lindamente natural.
Mike Dunlavey
Uma alternativa ao WinBUGS é o OpenBUGS ou o STAN. Estes devem ser mais amigáveis ​​para Mac.
Maxim.K

Respostas:

15

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.

O tratamento de dados ausentes com máxima verossimilhança em todos os dados disponíveis (denominado FIML) é uma técnica muito útil. No entanto, existem várias complicações que tornam difícil a implementação de uma maneira geral. Considere um modelo de regressão linear simples, prevendo algum resultado contínuo do tipo, idade, sexo e profissão. No OLS, você não se preocupa com a distribuição de idade, sexo e ocupação, apenas o resultado. Normalmente, para preditores categóricos, eles são codificados fictícios (0/1). Para usar o ML, são necessárias premissas distributivas para todas as variáveis ​​com falta. De longe, a abordagem mais fácil é a multivariada normal (MVN). É o que, por exemplo, o Mplus fará por padrão se você não declarar o tipo de variável (por exemplo, categórico). No exemplo simples que dei, você provavelmente desejaria assumir, normal para a idade, Bernoulli para o sexo e multinomal para o tipo de trabalho. O último é complicado, porque o que você realmente tem são várias variáveis ​​binárias, mas você não deseja tratá-las como Bernoulli. Isso significa que você não deseja trabalhar com as variáveis ​​codificadas fictícias, precisa trabalhar com a variável categórica real para que os estimadores de ML possam usar corretamente um multinomial, mas isso, por sua vez, significa que o processo de codificação fictícia precisa ser incorporado ao modelo , não os dados. Mais uma vez complicando a vida. Além disso, a distribuição conjunta de variáveis ​​contínuas e categóricas não é trivial para computação (quando encontro problemas como este no Mplus, ela rapidamente começa a quebrar e se debater). Por fim, você realmente idealmente especifica o mecanismo de dados ausentes. No estilo SEM, FIML, todas as variáveis ​​são essencialmente condicionadas a todas as outras, mas isso não é necessariamente correto. Por exemplo, talvez a idade esteja faltando em função não do gênero e do tipo de ocupação, mas de sua interação. A interação pode não ser importante para o resultado focal, mas se for importante para a falta de idade, também deve estar no modelo, não necessariamente no modelo substantivo de interesse, mas no modelo de dados ausentes.

O lavaan usará o ML para MVN, mas atualmente acredito que as opções de dados categóricos são limitadas (novamente vindo do campo SEM, isso é padrão). A imputação múltipla parece menos elegante a princípio, porque explícita muitas suposições ocultas por trás do FIML (como suposições distributivas para cada variável e o modelo preditivo assumido por falta em todas as variáveis). No entanto, ele oferece muito controle e pensamento explícito sobre a distribuição de cada variável, e o mecanismo ideal de dados ausentes para cada um é valioso.

Estou cada vez mais convencido de que os modelos bayesianos são a maneira de lidar com os dados ausentes. O motivo é que eles são muito flexíveis ao incluir distribuições para cada variável, permitindo muitos tipos diferentes de distribuições e podem incorporar facilmente a variabilidade introduzida pela falta de dados nos preditores nas estimativas gerais do modelo (que é o truque com imputação múltipla em que você então tem que de alguma forma combinar resultados). Obviamente, esses métodos não são os mais fáceis e podem levar muito treinamento e tempo para serem utilizados.

Portanto, isso realmente não responde à sua pergunta, mas explica um pouco por que estruturas completamente gerais para lidar com a falta são complicadas. No meu pacote semutils para as matrizes de covariância, uso lavaan embaixo para usar ML. Faço isso porque suponho, para uma matriz de covariância de variância, que você esteja usando variáveis ​​contínuas de qualquer maneira, de modo que suponho que meus usuários já estejam assumindo MVN para seus dados.

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:

  • A maneira usual com imputação múltipla
  • No estilo SEM com lavaan usando FIML.

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.

Sootica
fonte
-3

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

Lalas
fonte
Obrigado. Estou ciente dos pacotes para imputação múltipla, mas gostaria de ver se existe uma maneira relativamente simples de fazer a estimativa de probabilidade máxima.
Sootica
A função de probabilidade não está definida para quando a amostra, x, está ausente. Então eu acho que você pode estar procurando por algo que não existe.
Lalas 28/02
2
Consulte este documento para obter uma explicação sobre a utilização de abordagens de máxima verossimilhança para dados ausentes ( Allison, 2012 ). O que o OP descreve existe.
Andy W
2
E aqui está algo do SAS sobre isso. support.sas.com/documentation/cdl/en/statug/63347/HTML/default/... eu nunca vi nada em R.
Jeremy Miles
Obrigado @ JeremyMiles, acabei de postar o que me ajudou a responder a essa pergunta, e achei que outras pessoas também poderiam achar útil. PS. OR livro que você escreveu com Andy Field é incrível! : D
Sootica 31/03