Mam duży zestaw wektorów cech, których użyję do zaatakowania problemu z klasyfikacją binarną (za pomocą scikit learn w Pythonie). Zanim zacznę myśleć o imputacji, jestem zainteresowany próbą ustalenia na podstawie pozostałych części danych, czy brakujące dane są „losowo brakujące”, czy nie losowe.
Jak rozsądnie podejść do tego pytania?
Okazuje się, że lepszym pytaniem jest pytanie, czy dane „całkowicie przypadkowo brakuje”, czy nie. Jaki jest rozsądny sposób to zrobić?
missing-data
randomness
Lembik
źródło
źródło
Odpowiedzi:
Informacje, o których mówiłem, znalazłem w moim komentarzu.
Z książki van Buurensa , strona 31, pisze
„Zaproponowano kilka testów do testowania MCAR w porównaniu z MAR. Testy te nie są szeroko stosowane, a ich praktyczna wartość jest niejasna. Zobacz Enders (2010, s. 17–21), aby uzyskać ocenę dwóch procedur. Nie można przetestować MAR a MNAR, ponieważ brakuje informacji potrzebnych do takiego testu. ”
źródło
Nie jest to możliwe, chyba że udało się odzyskać brakujące dane. Na podstawie zaobserwowanych danych nie można ustalić, czy brakujące dane są losowe (MAR), czy nie losowe (MNAR). Możesz jedynie stwierdzić, czy dane nie są całkowicie przypadkowe (MCAR). Poza tym tylko odwołanie do wiarygodności MCAR lub MAR w przeciwieństwie do MNAR w oparciu o to, co wiesz (np. Zgłoszone powody braku danych). Alternatywnie możesz być w stanie argumentować, że nie ma to większego znaczenia, ponieważ odsetek brakujących danych jest niewielki i według MNAR musiałyby wystąpić bardzo ekstremalne scenariusze, aby twoje wyniki zostały obalone (patrz „analiza punktu krytycznego”).
źródło
Brzmi to całkiem wykonalne z punktu widzenia klasyfikacji.
Chcesz klasyfikować brakujące dane w stosunku do brakujących danych przy użyciu wszystkich innych funkcji. Jeśli uzyskasz znacznie lepsze wyniki niż losowe, dane nie zostaną przypadkowo pominięte.
źródło
Chcesz wiedzieć, czy istnieje pewna korelacja wartości pominiętej w elemencie i wartości jakiejkolwiek innej cechy.
Dla każdej z funkcji utwórz nową funkcję wskazującą, czy wartości brakuje, czy nie (nazwijmy ją funkcją „is_missing”). Oblicz swoją ulubioną miarę korelacji (sugeruję użycie tutaj wzajemnej informacji) funkcji is_missing i pozostałych funkcji.
Zwróć uwagę, że jeśli nie znajdziesz żadnej korelacji między dwiema cechami, nadal istnieje możliwość korelacji z powodu grupy cech (brakuje wartości jako funkcji XOR dziesięciu innych cech).
Jeśli masz duży zestaw funkcji i dużą liczbę wartości, otrzymasz fałszywe korelacje z powodu losowości. Inne niż standardowe sposoby radzenia sobie z tym (zestaw walidacyjny, wystarczająco wysoki próg) Możesz sprawdzić, czy korelacje są symetryczne i przechodnie. Jeśli tak, prawdopodobnie są prawdziwe i powinieneś je dalej sprawdzić.
źródło
Metodą, której używam, jest macierz cienia, w której zestaw danych składa się ze zmiennych wskaźnikowych, gdzie 1 jest podana, jeśli wartość jest obecna, i 0, jeśli nie jest. Korelowanie ich ze sobą i oryginalnymi danymi może pomóc w określeniu, czy zmienne często brakuje razem (MAR), czy nie (MCAR). Stosując
R
na przykład (zaciąganie z książki „R w działaniu” Roberta Kabacoff):źródło