J'ai un grand ensemble de vecteurs de fonctionnalités que j'utiliserai pour attaquer un problème de classification binaire (en utilisant scikit learn en Python). Avant de commencer à penser à l'imputation, je voudrais essayer de déterminer à partir des parties restantes des données si les données manquantes sont «manquantes au hasard» ou manquantes pas au hasard.
Quelle est la meilleure façon d'aborder cette question?
Il s'avère que la meilleure question est de demander si les données «manquent complètement au hasard» ou non. Quelle est la meilleure façon de procéder?
missing-data
randomness
Lembik
la source
la source
Réponses:
J'ai trouvé les informations dont je parlais dans mon commentaire.
Du livre de Van Buurens , page 31, il écrit
"Plusieurs tests ont été proposés pour tester MCAR par rapport à MAR. Ces tests ne sont pas largement utilisés et leur valeur pratique n'est pas claire. Voir Enders (2010, pp. 17-21) pour une évaluation de deux procédures. Il n'est pas possible de tester MAR contre MNAR, car les informations nécessaires à un tel test sont manquantes. "
la source
Ce n'est pas possible, sauf si vous avez réussi à récupérer les données manquantes. Vous ne pouvez pas déterminer à partir des données observées si les données manquantes sont manquantes au hasard (MAR) ou non au hasard (MNAR). Vous pouvez seulement dire si les données ne sont clairement pas manquantes au hasard (MCAR). Au-delà de cela, ne faites appel qu'à la plausibilité de MCAR ou MAR par opposition à MNAR sur la base de ce que vous savez (par exemple, les raisons signalées pour lesquelles les données sont manquantes). Alternativement, vous pourriez être en mesure d'affirmer que cela n'a pas trop d'importance, car la proportion de données manquantes est faible et dans le cadre du MNAR, des scénarios très extrêmes devraient se produire pour que vos résultats soient renversés (voir "Analyse du point de basculement").
la source
Cela semble tout à fait faisable du point de vue de la classification.
Vous souhaitez classer les données manquantes par rapport aux données non manquantes à l'aide de toutes les autres fonctionnalités. Si vous obtenez de bien meilleurs résultats que les résultats aléatoires, alors vos données ne manquent pas au hasard.
la source
Vous voulez savoir s'il existe une corrélation entre une valeur manquée dans la fonction et la valeur de toute autre fonction.
Pour chacune des fonctionnalités, créez une nouvelle fonctionnalité indiquant si la valeur est manquante ou non (appelons-les fonctionnalité "is_missing"). Calculez votre mesure de corrélation préférée (je suggère d'utiliser ici des informations mutuelles) des fonctionnalités is_missing et du reste des fonctionnalités.
Notez que si vous ne trouvez pas de corrélation entre deux entités, il est toujours possible d'avoir une corrélation en raison d'un groupe d'entités (une valeur est manquante en fonction de XOR de dix autres entités).
Si vous disposez d'un grand nombre de fonctionnalités et d'un grand nombre de valeurs, vous obtiendrez de fausses corrélations en raison du caractère aléatoire. Autre que les moyens habituels de faire face à cela (ensemble de validation, seuil suffisamment élevé) Vous pouvez vérifier si les corrélations sont symétriques et transitives. S'ils le sont, il est probable qu'ils soient vrais et vous devriez les vérifier davantage.
la source
Une méthode que j'utilise est une matrice fantôme, dans laquelle l'ensemble de données se compose de variables indicatrices où un 1 est donné si une valeur est présente et 0 si elle ne l'est pas. Les corréler entre eux et les données originales peuvent aider à déterminer si les variables ont tendance à manquer ensemble (MAR) ou non (MCAR). En utilisant
R
un exemple (emprunt du livre « R en action » par Robert Kabacoff):la source