Mam zestaw danych. Brakuje wielu wartości. W przypadku niektórych kolumn brakującą wartość zastąpiono wartością -999, ale w innych kolumnach brakującą wartość oznaczono jako „NA”.
Dlaczego użyjemy -999, aby zastąpić brakującą wartość?
Mam zestaw danych. Brakuje wielu wartości. W przypadku niektórych kolumn brakującą wartość zastąpiono wartością -999, ale w innych kolumnach brakującą wartość oznaczono jako „NA”.
Dlaczego użyjemy -999, aby zastąpić brakującą wartość?
Odpowiedzi:
Jest to powstrzymanie od wcześniejszych czasów, kiedy oprogramowanie komputerowe zapisywało wektory numeryczne jako wektory numeryczne. Żadna liczba rzeczywista nie ma semantyki „brakuje mi”. Kiedy więc wczesne oprogramowanie statystyczne musiało rozróżniać „prawdziwe” liczby od brakujących wartości, wprowadzili coś, co „oczywiście” nie było prawidłową liczbą, na przykład -999 lub -9999.
Oczywiście, że -999 lub -9999 oznacza brakującą wartość, wcale nie jest „oczywiste”. Dość często może to być poprawna wartość. Chyba że wyraźnie sprawdzasz takie wartości, możesz mieć różnego rodzaju „interesujące” błędy w swoich analizach.
Obecnie wektory liczbowe, które mogą zawierać brakujące wartości, są wewnętrznie przedstawiane jako „wzbogacone” wektory liczbowe, tj. Wektory liczbowe z dodatkowymi informacjami na temat brakujących wartości. Jest to oczywiście o wiele lepsze, ponieważ wówczas brakujące wartości będą traktowane jako takie i nie będą błędnie traktowane jako prawidłowe.
Niestety niektóre programy nadal stosują taką konwencję, być może w celu zachowania zgodności. Niektórzy użytkownicy przyswoili tę konwencję poprzez nieformalną osmozę i wprowadzili -999 zamiast NA, nawet jeśli ich oprogramowanie obsługuje czyste wprowadzanie brakujących wartości.
Morał: nie koduj brakujących wartości jako -999.
Takie wartości dotyczą baz danych. Większość baz danych dawno temu, a wiele z nich dzisiaj, przypisało stałą liczbę cyfr do danych o wartościach całkowitych. Liczba taka jak -999 to najmniejsza, którą można zapisać w czterech znakach, -9999 w pięciu znakach i tak dalej.
(Nie trzeba dodawać, że - z definicji - pole numeryczne nie może przechowywać znaków alfanumerycznych, takich jak „NA”. Do przedstawienia brakujących lub niepoprawnych danych należy użyć jakiegoś kodu numerycznego.)
Po co używać najbardziej ujemnej liczby, jaką można zapisać, aby oznaczyć brakującą wartość? Ponieważ jeśli błędnie traktujesz go jako prawidłową liczbę, chcesz, aby wyniki były dramatycznie niepoprawne. Im bardziej twoje kody brakujących wartości stają się realistyczne, tym bezpieczniejszy jesteś, ponieważ bardzo złe wejście zwykle psuje wyjście. (Solidne metody statystyczne to godne uwagi wyjątki!)
Jak doszło do takiego błędu? Dzieje się tak przez cały czas wymiany danych między systemami. System, który zakłada, że -9999 reprezentuje brakującą wartość, beztrosko wyświetli tę wartość podczas zapisywania danych w większości formatów, takich jak CSV. System, który czyta ten plik CSV, może nie „wiedzieć” (lub nie być „informowany”), aby traktować takie wartości jako brakujące.
Innym powodem jest to, że dobre dane statystyczne i platformy obliczeniowe rozpoznają wiele różnych rodzajów brakujących wartości: NaN, naprawdę brakujące wartości, przepełnienia, niedopełnienia, brak odpowiedzi itp. Itd. Poprzez poświęcenie najbardziej negatywnych możliwych wartości (takich jak -9999, - 9998, -9997 itp.), Ułatwia wyszukiwanie wszystkich brakujących wartości z dowolnej tabeli lub tablicy.
Jeszcze inna jest to, że takie wartości zwykle pojawiają się na wyświetlaczach graficznych jako skrajne wartości odstające. Ze wszystkich wartości, które możesz wybrać, aby wyróżnić się na grafice, najbardziej negatywna z możliwych ma największą szansę na oddalenie się od twoich danych.
Istnieją przydatne implikacje i uogólnienia:
Zastosuj standardową regułę tego typu, aby ułatwić wymyślanie kodów NoData w nowych okolicznościach (podczas projektowania własnego oprogramowania bazy danych).
Zaprojektuj swoje oprogramowanie i systemy, aby drastycznie zawiodły, jeśli w ogóle ulegną awarii. Najgorsze błędy to te, które są sporadyczne, przypadkowe lub małe, ponieważ mogą pozostać niewykryte i trudne do wyśledzenia.
Możesz użyć wszystkiego, aby zakodować brakujące wartości. Niektóre programy, takie jak R, używają specjalnych wartości do kodowania brakujących danych, ale istnieją również pakiety oprogramowania, np. SPSS, które nie mają żadnych specjalnych kodów dla brakujących danych. W drugim przypadku musisz dokonać arbitralnego wyboru takich wartości. Możesz wybrać wszystko , ale ogólnie dobrym pomysłem jest wybranie wartości, która wyraźnie różni się od twoich danych (np. Twoje dane są procentami w zakresie 0-100, więc wybierasz 999 do zakodowania brakujących danych, lub twoja data to wiek człowieka i używasz wartości ujemnych dla brakujących obserwacji). Chodzi o to, że robiąc to, powinieneś być w stanie zauważyć, że coś poszło nie tak i liczby się nie sumują.
Problem z takim kodowaniem polega jednak na tym, że tak naprawdę nie można zauważyć specjalnego kodowania, co prowadzi do śmieci.
Czy w zbiorze danych są obliczone zmienne? A może jest to zestaw danych analitycznych pochodzących ze scalonych / posortowanych danych? Niektóre programy używają bardzo dużych wartości ujemnych do oznaczenia brakujących danych. Ale inne oprogramowanie tworzy brakujące wartości za pomocą NA lub .
. Kiedy są rozbieżne, zwykle pewne przetwarzanie końcowe prowadzi do nieporozumień.