Probabilité maximale d'informations complètes pour les données manquantes dans R


18

Contexte : régression hiérarchique avec quelques données manquantes.

Question : Comment utiliser l'estimation du maximum de vraisemblance (FIML) pour traiter les données manquantes dans R? Y a-t-il un package que vous recommanderiez et quelles sont les étapes typiques? Des ressources et des exemples en ligne seraient également très utiles.

PS : Je suis un spécialiste des sciences sociales qui a récemment commencé à utiliser R. L'imputation multiple est une option, mais j'aime vraiment la façon élégante dont des programmes comme Mplus traitent les données manquantes à l'aide de FIML. Malheureusement, Mplus ne semble pas comparer les modèles dans le contexte de la régression hiérarchique pour le moment (veuillez me faire savoir si vous connaissez un moyen de le faire!). Je me demandais s'il y avait quelque chose de similaire dans R? Merci beaucoup!


1
Avez-vous pensé à WinBugs ? Il gère les données manquantes d'une manière magnifiquement naturelle.
Mike Dunlavey

Une alternative à WinBUGS est OpenBUGS ou STAN. Ceux-ci devraient être plus compatibles avec Mac.
Maxim.K

Réponses:


15

Le mérite de cette réponse revient à @Joshua qui a donné une réponse impressionnante lorsque j'ai posté cette question à la communauté R et Statistics sur Google+. Je colle simplement sa réponse ci-dessous.

Pour exécuter la régression (sans modélisation de variable latente), veuillez lire mes notes tapées après le texte cité.

La gestion des données manquantes avec un maximum de vraisemblance sur toutes les données disponibles (appelées FIML) est une technique très utile. Cependant, il existe un certain nombre de complications qui rendent difficile la mise en œuvre de manière générale. Prenons un modèle de régression linéaire simple, prédisant des résultats continus, par exemple, l'âge, le sexe et le type de profession. Dans OLS, vous ne vous souciez pas de la répartition de l'âge, du sexe et de la profession, mais uniquement du résultat. Généralement, pour les prédicteurs catégoriels, ils sont codés de manière fictive (0/1). Pour utiliser le ML, des hypothèses de distribution sont requises pour toutes les variables manquantes. L'approche de loin la plus simple est la normale multivariée (MVN). C'est ce que fera par exemple Mplus par défaut si vous ne cherchez pas à déclarer le type de variable (par exemple, catégorique). Dans l'exemple simple que j'ai donné, vous voudrez probablement supposer, normal pour l'âge, Bernoulli pour le sexe et multinomal pour le type d'emploi. Ce dernier est délicat car vous disposez en fait de plusieurs variables binaires, mais vous ne voulez pas les traiter comme Bernoulli. Cela signifie que vous ne voulez pas travailler avec les variables codées factices, vous devez travailler avec la variable catégorielle réelle pour que les estimateurs ML puissent utiliser correctement un multinomial, mais cela signifie à son tour que le processus de codage factice doit être intégré dans le modèle , pas les données. Encore une fois compliquant la vie. De plus, la distribution conjointe de variables continues et catégorielles n'est pas triviale à calculer (lorsque je rencontre des problèmes comme celui-ci dans Mplus, elle commence assez rapidement à se décomposer et à lutter). Enfin, vous spécifiez vraiment idéalement le mécanisme de données manquantes. En style SEM, FIML, toutes les variables sont essentiellement conditionnées à toutes les autres, mais ce n'est pas nécessairement correct. Par exemple, l'âge manque peut-être en fonction non pas du sexe et du type de profession, mais de leur interaction. L'interaction peut ne pas être importante pour le résultat focal, mais si elle est importante pour le manque sur l'âge, alors elle doit également être dans le modèle, pas nécessairement le modèle substantif d'intérêt mais le modèle de données manquantes.

lavaan utilisera ML pour MVN, mais actuellement, je pense que les options de données catégoriques sont limitées (venant encore du champ SEM, c'est standard). L'imputation multiple semble moins élégante au début, car elle rend explicites de nombreuses hypothèses cachées derrière le FIML (comme les hypothèses de distribution pour chaque variable et le modèle prédictif supposé pour le manque sur chaque variable). Cependant, cela vous donne beaucoup de contrôle et une réflexion explicite sur la distribution de chaque variable, et le mécanisme optimal de données manquantes pour chacune est précieux.

Je suis de plus en plus convaincu que les modèles bayésiens sont le moyen de gérer les données manquantes. La raison en est qu'ils sont très flexibles pour inclure des distributions pour chaque variable, permettant de nombreux types de distributions différents, et peuvent facilement intégrer la variabilité introduite par les données manquantes sur les prédicteurs, dans les estimations globales du modèle (ce qui est l'astuce avec l'imputation multiple où vous doivent ensuite en quelque sorte combiner les résultats). Bien sûr, ces méthodes ne sont pas les plus faciles et peuvent prendre beaucoup de temps et de formation à utiliser.

Cela ne répond donc pas vraiment à votre question, mais explique un peu pourquoi les cadres complètement généraux pour faire face au manque sont difficiles. Dans mon paquet semutils pour les matrices de covariance, j'utilise lavaan dessous pour utiliser ML. Je le fais parce que je suppose pour une matrice de covariance de variance que vous utilisez de toute façon des variables continues, de sorte que je suppose que mes utilisateurs supposent déjà MVN pour leurs données.

Cela signifie que si toutes les variables manquantes sont continues, lave , un package de modélisation par équation structurelle (SEM) est une bonne option à utiliser pour FIML dans R.

Revenons maintenant à ma question initiale. Mon intention était d'avoir un correctif magique pour le manque lors de l'exécution d'une régression linéaire. Toutes mes variables manquantes étaient agréables et continues. J'ai donc procédé à l'exécution de mes analyses dans deux styles:

  • La voie habituelle avec imputation multiple
  • En style SEM avec lave en utilisant FIML.

Je manquais beaucoup de choses en faisant une régression dans le style SEM. Les deux styles ont donné des coefficients et des carrés R similaires, mais dans le style SEM, je n'ai pas obtenu le test de signification de la régression (les valeurs F typiques avec df), j'ai plutôt obtenu des indices d'ajustement qui n'étaient pas utiles car j'avais utilisé tous mes degrés de liberté. De plus, lorsqu'un modèle avait un R2 plus grand qu'un autre, je ne pouvais pas trouver un moyen de comparer si la différence était significative. De plus, faire la régression de la manière habituelle donne accès à un tas de tests pour les hypothèses de régression qui sont inestimables. Pour une réponse plus détaillée sur ce problème, consultez mon autre question à laquelle a répondu gentiment @StasK .

La conclusion semble donc être que la lave est un package décent pour le FIML dans R, mais l'utilisation du FIML dépend d'hypothèses statistiques et du type d'analyse que l'on mène. En ce qui concerne la régression (sans modélisation de variable latente), le garder hors des programmes SEM et utiliser l'imputation multiple est probablement une sage décision.



-3

il existe 2 façons principales de gérer les données / enregistrements manquants. Soit vous supprimez toute la ligne d'observation qui a une valeur manquante, soit vous trouvez un moyen de générer cette valeur manquante. Si vous adoptez la première approche, vous risquez de perdre beaucoup de données. Dans la deuxième approche, vous devez trouver un moyen "intelligent" de générer ces données manquantes, de telle sorte que les estimations des paramètres du nouvel ensemble de données ne diffèrent pas beaucoup des estimations des paramètres de l'ensemble de données observé.

Cette deuxième approche est appelée imputation de données, et plusieurs packages R le font. L'un d'eux s'appelle mclust et la fonction dont vous avez besoin s'appelle imputeData. Cette fonction utilise l'algorithme EM (maximisation des attentes) pour estimer les paramètres de la partie non observée de l'ensemble de données, compte tenu de la partie observée. Une fois les paramètres trouvés, le nouveau point de données est généré. L'hypothèse de distribution des données manquantes, des données observées et de l'ensemble des données est supposée être gaussienne.

J'espère que cette explication vous aidera à réaliser ce que vous essayez de faire


Merci. Je connais les packages d'imputation multiple, mais j'aimerais voir s'il existe un moyen relativement simple d'estimer le maximum de vraisemblance.
Sootica

La fonction de vraisemblance n'est pas définie lorsque l'échantillon, x, est manquant. Donc je pense que vous cherchez peut-être quelque chose qui n'existe pas.
Lalas

2
Voir cet article pour une explication de l'utilisation des approches de probabilité maximale pour les données manquantes ( Allison, 2012 ). Ce que l'OP décrit existe.
Andy W

2
Et voici quelque chose de SAS à ce sujet. support.sas.com/documentation/cdl/en/statug/63347/HTML/default/… Je n'ai jamais rien vu dans R.
Jeremy Miles

Merci @JeremyMiles, je viens de poster ce qui m'a aidé à répondre à cette question, pensant que d'autres pourraient également le trouver utile. PS. Le livre R que vous avez écrit avec Andy Field est génial !! : D
Sootica
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.