Eu tenho um grande conjunto de vetores de recursos que utilizarei para atacar um problema de classificação binária (usando o scikit learn em Python). Antes de começar a pensar em imputação, estou interessado em tentar determinar a partir das partes restantes dos dados se os dados ausentes estão "ausentes aleatoriamente" ou ausentes não aleatoriamente.
Qual é uma maneira sensata de abordar essa questão?
Acontece que uma pergunta melhor é perguntar se os dados estão "faltando completamente ao acaso" ou não. Qual é uma maneira sensata de fazer isso?
missing-data
randomness
Lembik
fonte
fonte
Respostas:
Eu encontrei a informação que eu estava falando no meu comentário.
Do livro de van Buurens , página 31, ele escreve
"Vários testes foram propostos para testar MCAR versus MAR. Esses testes não são amplamente utilizados e seu valor prático não é claro. Veja Enders (2010, pp. 17–21) para uma avaliação de dois procedimentos. Não é possível testar MAR versus MNAR, pois faltam as informações necessárias para esse teste ".
fonte
Isso não é possível, a menos que você tenha recuperado dados ausentes. Você não pode determinar a partir dos dados observados se os dados ausentes estão ausentes aleatoriamente (MAR) ou não aleatoriamente (MNAR). Você pode apenas saber se os dados claramente não estão faltando completamente aleatoriamente (MCAR). Além disso, apenas apele à plausibilidade do MCAR ou MAR em oposição ao MNAR com base no que você sabe (por exemplo, razões relatadas para a falta de dados). Como alternativa, você pode argumentar que isso não importa muito, porque a proporção de dados ausentes é pequena e, no MNAR, cenários muito extremos teriam que acontecer para que seus resultados fossem revertidos (consulte "análise do ponto de inflexão").
fonte
Isso parece bastante factível do ponto de vista da classificação.
Você deseja classificar dados ausentes versus não ausentes usando todos os outros recursos. Se você obtiver um resultado significativamente melhor que o aleatório, seus dados não estarão ausentes aleatoriamente.
fonte
Você deseja saber se há alguma correlação entre um valor que está sendo perdido no recurso e o valor de qualquer outro recurso.
Para cada um dos recursos, crie um novo recurso indicando se o valor está ausente ou não (vamos chamá-los de "is_missing"). Calcule sua medida de correlação favorita (sugiro usar aqui informações mútuas) dos recursos is_missing e do restante dos recursos.
Observe que, se você não encontrar nenhuma correlação entre dois recursos, ainda é possível ter uma correlação devido ao grupo de recursos (um valor está ausente como uma função do XOR de dez outros recursos).
Se você possui um grande conjunto de recursos e um grande número de valores, obterá correlações falsas devido à aleatoriedade. Além das formas regulares de lidar com isso (conjunto de validação, limite alto o suficiente) Você pode verificar se as correlações são simétricas e transitivas. Se forem, é provável que sejam verdadeiras e você deve verificá-las ainda mais.
fonte
Um método que eu uso é uma matriz de sombra, na qual o conjunto de dados consiste em variáveis indicadoras onde 1 é dado se um valor estiver presente e 0 se não estiver. Correlacionar esses dados entre si e com os dados originais pode ajudar a determinar se as variáveis tendem a estar ausentes juntas (MAR) ou não (MCAR). Usando
R
como exemplo (emprestado do livro "R em ação" de Robert Kabacoff):fonte