Niezbędne testy sprawdzające dane

93

W swojej roli zawodowej często pracuję z zestawami danych innych osób, nie-eksperci dostarczają mi dane kliniczne i pomagam im je podsumować i przeprowadzić testy statystyczne.

Problem, który mam, polega na tym, że zestawy danych, które przynoszę, są prawie zawsze pełne literówek, niespójności i wszelkiego rodzaju innych problemów. Interesuje mnie to, czy inne osoby mają standardowe testy, które robią, aby sprawdzić, czy nadchodzą zestawy danych.

Kiedyś rysowałem histogramy każdej zmiennej, żeby się przyjrzeć, ale teraz zdaję sobie sprawę, że istnieje wiele okropnych błędów, które mogą przetrwać ten test. Na przykład miałem zbiór danych z powtarzanymi pomiarami innego dnia, w którym dla niektórych osób powtarzana miara była identyczna w czasie 2, jak w czasie 1. Zostało to później udowodnione jako nieprawidłowe, jak można się spodziewać. Inny zestaw danych zawierał osobę, która przeszła od bardzo poważnego nieuporządkowania (reprezentowanego przez wysoki wynik) do bezproblemowej, reprezentowanej przez 0 na całej planszy. Jest to po prostu niemożliwe, chociaż nie mogłem tego ostatecznie udowodnić.

Jakie podstawowe testy mogę uruchomić dla każdego zestawu danych, aby upewnić się, że nie mają literówek i nie zawierają niemożliwych wartości?

Z góry dziękuję!

Chris Beeley
źródło
3
Świetne pytanie. Podejrzewam, że trudno będzie udzielić ogólnych odpowiedzi, ponieważ kontrole będą zależeć od specyfiki zbioru danych.
mark999
2
@ mark999 Zgadzam się. Będę zainteresowany przeczytaniem odpowiedzi na to pytanie. Istnieje kilka ogólnych strategii, ale uważam, że wiele sprawdzeń dotyczy budowania oczekiwań specyficznych dla domeny, zarówno tego, jak powinny wyglądać dane, jak i niektórych typowych błędów, które mogą się pojawić.
Jeromy Anglim
1
Czytelnicy tutaj będą również zainteresowani następującym wątkiem: Wytyczne dotyczące bazy danych dotyczące zapewnienia jakości i kontroli jakości (qa / qc) .
gung

Odpowiedzi:

77

Pomaga zrozumieć, w jaki sposób dane zostały zarejestrowane.

Pozwól, że podzielę się historią . Kiedyś, dawno temu, wiele zbiorów danych było przechowywanych tylko w postaci zanikających wydruków. W tych mrocznych dniach podpisałem umowę z organizacją (o wspaniałym rodowodzie i wielkości; wielu z was zapewne posiada zapasy), aby skomputeryzować około 10 ^ 5 danych monitorowania środowiska w jednym z jej zakładów produkcyjnych. Aby to zrobić, osobiście oznaczyłem półkę raportów laboratoryjnych (aby pokazać, gdzie były dane), utworzyłem formularze wprowadzania danych i podpisałem umowę z agencją pracy tymczasowej w zakresie umiejętności czytania i pisaniapracownicy, aby wpisać dane do formularzy. (Tak, trzeba było dodatkowo płacić za osoby, które potrafią czytać.) Ze względu na wartość i wrażliwość danych przeprowadziłem ten proces równolegle z dwoma pracownikami naraz (którzy zwykle zmieniali się z dnia na dzień). Zajęło to kilka tygodni. Napisałem oprogramowanie do porównania dwóch zestawów wpisów, systematycznie identyfikując i poprawiając wszystkie pojawiające się błędy.

Chłopcze były błędy! Co może pójść źle? Dobrym sposobem na opisanie i pomiar błędów jest poziom podstawowego zapisu, który w tej sytuacji był opisem pojedynczego wyniku analitycznego (często stężenia niektórych chemikaliów) dla konkretnej próbki uzyskanego w danym punkcie monitorowania na podana data. Porównując dwa zestawy danych, znalazłem:

  • Błędy pominięcia : jeden zestaw danych zawierałby rekord, inny nie. Zwykle działo się tak, ponieważ albo (a) wiersz lub dwa byłyby przeoczane u dołu strony lub (b) cała strona byłaby pomijana.

  • Widoczne błędy pominięcia, które były tak naprawdę błędami wprowadzania danych. Rekord jest identyfikowany przez nazwę punktu monitorowania, datę i „analit” (zwykle nazwę chemiczną). Jeśli którykolwiek z nich zawiera błąd typograficzny, nie zostanie dopasowany do innych rekordów, z którymi jest powiązany. W efekcie poprawny zapis znika i pojawia się niepoprawny zapis.

  • Fałszywe powielanie . Te same wyniki mogą pojawiać się w wielu źródłach, być wielokrotnie przepisywane i wydawać się prawdziwymi powtarzanymi pomiarami, gdy nie są. Duplikaty są łatwe do wykrycia, ale decyzja, czy są błędne, zależy od tego, czy duplikaty powinny pojawić się nawet w zbiorze danych. Czasami po prostu nie możesz wiedzieć.

  • Frank błędy wprowadzania danych . „Dobre” są łatwe do złapania, ponieważ zmieniają typ układu odniesienia: użycie litery „O” dla cyfry „0”, na przykład, zamienia liczbę na nieliczbową. Inne dobre błędy zmieniają wartość tak bardzo, że można ją łatwo wykryć za pomocą testów statystycznych. (W jednym przypadku cyfra wiodąca w „1 000,010 mg / kg” została odcięta, pozostawiając wartość 10. To ogromna zmiana, gdy mówisz o stężeniu pestycydu!) Złe błędy są trudne do uchwycenia, ponieważ się zmieniają wartość w taką, która pasuje (niejako) do reszty danych, na przykład wpisując „80” dla „50”. (Ten rodzaj błędu zdarza się cały czas w oprogramowaniu OCR.)

  • Transpozycje . Można wprowadzić prawidłowe wartości, ale skojarzone z niewłaściwymi kluczami zapisu. Jest to podstępne, ponieważ globalna charakterystyka statystyczna zestawu danych może pozostać niezmieniona, ale między grupami można tworzyć fałszywe różnice. Prawdopodobnie tylko mechanizm taki jak podwójne wejście jest w stanie wykryć te błędy.

Gdy zdasz sobie sprawę z tych błędów i wiesz, lub masz teorię, w jaki sposób one występują, możesz pisać skrypty trollujące zestawy danych pod kątem ewentualnej obecności takich błędów i oflagować je do dalszej uwagi. Nie zawsze można je rozwiązać, ale przynajmniej można dołączyć pole „komentarz” lub „flaga jakości”, aby towarzyszyć danym podczas ich późniejszej analizy.

Od tego czasu zwracałem uwagę na problemy z jakością danych i miałem znacznie więcej okazji do kompleksowej kontroli dużych zbiorów danych statystycznych. Żadne nie jest idealne; wszyscy korzystają z kontroli jakości. Niektóre zasady, które opracowałem przez lata, aby to zrobić, obejmują

  1. O ile to możliwe, nadmiarowość w procedurach wprowadzania i transkrypcji danych: sumy kontrolne, sumy, powtarzane wpisy: wszystko, co wspiera automatyczne wewnętrzne kontrole spójności.

  2. Jeśli to możliwe, utwórz i wykorzystaj inną bazę danych, która opisuje, jak powinny wyglądać dane: tzn . Metadane czytelne dla komputera. Na przykład w eksperymencie z narkotykami możesz z góry wiedzieć, że każdy pacjent będzie widziany trzy razy. Umożliwia to utworzenie bazy danych ze wszystkimi poprawnymi rekordami i ich identyfikatorami z wartościami, które tylko czekają na wypełnienie. Wypełnij je danymi, które ci podałeś, a następnie sprawdź, czy nie ma duplikatów, pominięć i nieoczekiwanych danych.

  3. Zawsze normalizuj swoje dane (w szczególności ustaw je w co najmniej czwartą normalną formę ), niezależnie od tego, jak planujesz sformatować zestaw danych do analizy. Zmusza to do utworzenia tabel dla każdego odrębnego koncepcyjnie bytu, który modelujesz. (W przypadku środowiska obejmują to tabele lokalizacji monitorowania, próbek, chemikaliów (właściwości, typowe zakresy itp.), Testy tych próbek (badanie zwykle obejmuje zestaw chemikaliów) oraz indywidualne wyniki tych badań. W ten sposób tworzysz wiele skutecznych kontroli jakości i spójności danych oraz identyfikujesz wiele potencjalnie brakujących, zduplikowanych lub niespójnych wartości.

    Ten wysiłek (który wymaga dobrych umiejętności przetwarzania danych, ale jest prosty) jest zadziwiająco skuteczny. Jeśli chcesz przeanalizować duże lub złożone zbiory danych i nie masz dobrej praktycznej wiedzy na temat relacyjnych baz danych i ich teorii, dodaj to do swojej listy rzeczy do nauczenia się jak najszybciej. Będzie wypłacać dywidendy przez całą karierę.

  4. Zawsze wykonuj jak najwięcej „głupich” kontroli . Są to automatyczna weryfikacja oczywistych rzeczy, takich jak daty mieszczą się w oczekiwanych okresach, liczba pacjentów (lub chemikaliów itp.) Zawsze sumuje się poprawnie, czy wartości są zawsze rozsądne (np. PH musi wynosić od 0 do 14, a może znacznie węższy zakres, powiedzmy, odczytów pH krwi) itp. W tym miejscu najbardziej pomocna może być wiedza specjalistyczna w dziedzinie: statystyki mogą nieustannie zadawać głupie pytania ekspertom i wykorzystywać odpowiedzi w celu sprawdzenia danych.

Oczywiście można powiedzieć o wiele więcej - temat jest wart książki - ale powinno to wystarczyć do pobudzenia pomysłów.

Whuber
źródło
2
Jedno kolejne pytanie - temat jest wart książki - czy jest książka?
Chris Beeley,
5
+1 - cudowna odpowiedź. Chciałbym, żebyś miał blog :) (Chciałbym dodać twoje pismo do r-bloggers.com)
Tal Galili
2
Powinieneś napisać książkę wartą tego tematu!
Zach.
1
Jest to tak skomplikowane, że wiele firm doradczych specjalizuje się w „wyszukiwaniu / czyszczeniu / przechowywaniu danych”.
Lucas Reis,
25

@ Whuber robi świetne sugestie; Dodałbym tylko: działki, działki, działki, działki. Wykresy rozrzutu, histogramy, wykresy pudełkowe, wykresy liniowe, mapy cieplne i wszystko inne, co możesz wymyślić. Oczywiście, jak zauważyłeś, są błędy, które nie będą widoczne na żadnych działkach, ale są dobrym miejscem do rozpoczęcia. Upewnij się, że wiesz, jak twoje oprogramowanie radzi sobie z brakującymi danymi itp.

W zależności od kontekstu możesz stać się kreatywny. Jedną rzeczą, którą lubię robić z danymi wielowymiarowymi jest dopasowanie pewnego rodzaju modelu czynnikowego / probabilistycznego PCA (coś, co spowoduje wielokrotne przypisanie brakujących danych) i sprawdzenie wyników dla jak największej liczby składników. Punkty danych, które zdobywają wysokie noty w mniej ważnych komponentach / czynnikach, są często wartościami odstającymi, których inaczej byś nie widział.

JMS
źródło
5
Fabuła +1 jest dla statystyk czym jest głosowanie w Chicago: coś, co wszyscy robią wcześnie i często. ;-)
whuber
15

Wielkie rzeczy, które zwykle sprawdzam:

  1. Typ zmiennej - aby zobaczyć, że liczba jest liczbą, a nie czynnikiem / znakiem (może wskazywać na problem z wprowadzonymi danymi)
  2. Spójne poziomy wartości - aby zobaczyć, że zmienna o nazwie „t1” nie znalazła się ponownie pod nazwą „t1” lub „t 1”
  3. Wartości odstające - zobacz, że przedziały wartości mają sens. (czy otrzymałeś wartość ciśnienia krwi 0? lub minus?). Tutaj czasami dowiadujemy się, że ktoś zakodował -5 jako brakującą wartość lub coś w tym rodzaju.
  4. Ograniczenia liniowe. Nie używam tego, ale niektórzy stwierdzają, że chcą mieć ograniczenia zależności między niektórymi kolumnami (kolumny A, B muszą dodać do C lub coś w tym rodzaju). W tym celu możesz spojrzeć na niepoprawny pakiet (spotkałem mówcę, Marka van der Loo, podczas ostatniej konferencji useR - i byłem pod wrażeniem jego pakietu)
  5. za mało losowości. Czasami wartości muszą być zaokrąglane do niektórych wartości lub w pewnym momencie obcinane. Tego rodzaju rzeczy są często bardziej wyraźne na wykresach rozrzutu.
  6. Brakujące wartości - upewnienie się, że brakujące dane nie są powiązane z żadną inną zmienną (brakującą losowo). Ale nie mam tutaj żadnej ogólnej zasady.
  7. Puste wiersze lub wiersze, w większości bez wartości. Powinny być (zwykle) znalezione i pominięte.

Świetne pytanie BTW - mam nadzieję przeczytać doświadczenia innych ludzi w tej sprawie.

Tal Galili
źródło
10

Gdy masz pomiary w czasie („ dane wzdłużne ”), często przydatne jest sprawdzenie gradientów, a także rozkładów krańcowych. Ten gradient można obliczyć w różnych skalach. Mówiąc bardziej ogólnie, możesz dokonywać znaczących transformacji danych (Fouriera, Wavelet) i sprawdzać rozkłady marginesów transformowanych danych.

Robin Girard
źródło
7

Kilka zawsze przechodzę:

  1. Czy istnieje liczba rekordów, które powinny być? Na przykład, jeśli wyciągnąłeś dane z innego źródła lub jest to podzbiór danych innych osób, czy twoje liczby wyglądają rozsądnie. Można by pomyśleć, że to zostanie pokryte, ale ... byłbyś zaskoczony.
  2. Czy są tam wszystkie twoje zmienne? Czy wartości tych zmiennych mają sens? Na przykład, jeśli zmienna Tak / Nie / Brak jest zakodowana jako „1,2,3” - co to oznacza?
  3. Gdzie są twoje brakujące wartości? Czy są jakieś zmienne, które wydają się przeciążone brakującymi informacjami? Czy istnieją pewne podmioty z ogromną liczbą brakujących wartości?

To są pierwsze kroki, które muszę wykonać, aby upewnić się, że zestaw danych jest nawet gotowy na coś w rodzaju eksploracyjnej analizy danych. Po prostu siadam, wędrując po danych i pytając: „Czy to… wydaje się słuszne?”

Fomite
źródło
1

Chciałbym użyć metody próbkowania akceptacji do każdej kolumny (daje to punkt odcięcia, w którym można narysować linię między wysoką jakością a niską jakością), jest na to kalkulator online.

Tareq Shahwan
źródło
3
pasowałoby to lepiej jako komentarz niż odpowiedź w obecnej formie. proszę opracować trochę, podać linki do zasobów lub referencji itp.
Antoine,
1
Trudno jest dostrzec wiele okoliczności, w których byłoby to skuteczne i łatwe do znalezienia wielu, dla których albo w ogóle nie działa (takich jak łańcuchy lub inne dane nominalne), albo jest okropny (ponieważ całkowicie ignoruje wszystkie relacje wielowymiarowe). Wydaje się to również arbitralne, ponieważ poza szeregami czasowymi (i niektórymi powiązanymi danymi) nie ma właściwej kolejności w rekordach tabeli danych, podczas gdy wiele (jeśli nie wszystkie) metod próbkowania akceptacji zależy od sekwencji.
whuber
Cóż, oto kalkulator, którego należy użyć: sqconline.com/... Tak długo, jak używasz randomizacji, można użyć próbkowania akceptacyjnego. Jeśli chcesz to skomplikować, możesz zastosować systematyczną technikę próbkowania, a następnie użyć próbkowania akceptacyjnego dla każdego segmentu
Tareq Shahwan