Jak statystycznie udowodnić, czy kolumna zawiera dane kategoryczne, czy też nie używa Pythona


10

Mam ramkę danych w pythonie, w której muszę znaleźć wszystkie zmienne jakościowe. Sprawdzanie typu kolumny nie zawsze działa, ponieważ inttyp może być również kategoryczny.

Dlatego szukam pomocy w znalezieniu właściwej metody testowania hipotez, aby ustalić, czy kolumna jest kategoryczna, czy nie.

Próbowałem poniżej testu chi-kwadrat, ale nie jestem pewien, czy to wystarczy

import numpy as np
data = np.random.randint(0,5,100)
import scipy.stats as ss
ss.chisquare(data)

Proszę doradź.


1
Czy możesz wyjaśnić, czy poprawnie zrozumiałem, że chcesz rozróżnić int użyte jako zmienna porządkowa i użyte jako arbitralne kodowanie kategoryczne? Nie mam odpowiedzi, ale może pomóc innym czytelnikom w zrozumieniu, czego chcesz. Intuicyjnie nie sądzę, aby Chi2 mógł niezawodnie wykonać to zadanie.
ReneBt

Tak masz rację. Tyle że nie skupiam się na typie zmiennej, lecz na danych, które ona przenosi. Tak więc w przykładowym kodzie, który udostępniłem, wynik powinien być taki, że jest to zmienna kategoryczna, ponieważ ma tylko 5 unikalnych wartości.
Amit

1
Gdzie jest reguła „wynik powinien być taki, że jest to zmienna kategoryczna, ponieważ ma tylko 5 unikalnych wartości”. pochodzić z?
Dennis Soemers

Och, to nie reguła. Intuicyjnie wiem, że wszystkie moje dane kolumnowe to tylko te 5 wartości.
Amit

Chociaż inni słusznie zauważyli, że nie da się tego zrobić, stanowiłoby to interesujący problem w uczeniu maszynowym. Niewątpliwie istnieją domeny problemowe, w których można dokonać dość dokładnych prognoz.
John Coleman

Odpowiedzi:


34

Krótka odpowiedź: nie możesz.

Nie ma testu statystycznego, który powiedziałby, czy predyktor zawierający liczby całkowite od 1 do 10 jest predyktorem numerycznym (np. Liczba dzieci) lub koduje dziesięć różnych kategorii. (Jeśli predyktor zawiera liczby ujemne lub najmniejsza liczba jest większa niż jedna lub pomija liczby całkowite, może to argumentować przeciwko kodowaniu kategorycznemu - lub może to po prostu oznaczać, że analityk zastosował niestandardowe kodowanie).

Jedynym sposobem, aby się upewnić, jest wykorzystanie wiedzy specjalistycznej w dziedzinie lub słownika kodów zestawu danych (który zawsze powinien istnieć).


14
„słownik kodów zestawu danych (który zawsze powinien istnieć)” - Ha, dobry.
Kodiolog

12

Jakiekolwiek kryteria - lub podstawowe zasady - działają dla twojego zestawu danych, są mile widziane, ale nie widzimy twoich danych. W każdym razie problem jest ogólnie lepszy i bez odniesienia do żadnego konkretnego oprogramowania.

Jest gorzej niż myślisz, nawet jeśli uważasz, że jest gorzej niż myślisz.

  1. Odpowiedź Stephana Kolassy już wskazuje na jeden kluczowy punkt. Małe liczby całkowite mogą oznaczać liczby, a nie kategorie: 3, co oznacza 3 samochody lub koty, to nie to samo co 3, co oznacza „osoba jest właścicielem samochodu” lub „osoba jest własnością kota”.

  2. Kropki dziesiętne mogą czaić się w obrębie zmiennych kategorialnych, jako część zakodowanych klasyfikacji, np. Branż lub chorób.

  3. Pomiary ściśle rozumiane mogą być zwyczajnie liczbami całkowitymi zgodnie z konwencją, np. Wysokości ludzi mogą być po prostu podawane jako liczba całkowita cm lub cale, ciśnienie krwi jako liczba całkowita mm Hg.

  4. Liczba odrębnych (lepszy termin niż „unikalny”, który nadal ma podstawowe znaczenie występowania tylko raz), również nie jest dobrym przewodnikiem. Liczba osób o różnej wysokości możliwych w umiarkowanych próbach jest prawdopodobnie znacznie mniejsza niż liczba różnych przynależności religijnych lub pochodzenia etnicznego.


+1. To jest dobra lista rzeczy do rozważenia. Powinieneś połączyć to ze swoją wiedzą domenową na temat zbioru danych (i wszelkiej dokumentacji), aby zautomatyzować wykrywanie zmiennych jakościowych.
Anna

@Anna Powiedziałbym, że automatyczne wykrywanie nie powinno być wykonywane i jest dokładnie tym, co może wpędzić cię w kłopoty, jak opisano w tym wątku. Wiedza i dokumentacja domeny powinny łatwo identyfikować zmienne wielomianowe spośród innych zmiennych, abyś nie musiał zgadywać.
prince_of_pears

7

Cóż, myślę, że jest nawet gorzej niż sugerują inne odpowiedzi: dane nie są kategorycznymi ani liczbowymi sub specie æternatis - „poziom pomiaru” jest czymś określonym przez analityka, aby odpowiedzieć na dane pytanie przy konkretnej okazji. Zobacz odpowiedź Glen_b tutaj .

Zrozumienie tego ma praktyczne znaczenie. Na przykład w drzewie klasyfikacyjnym rozróżnienie między predyktorami stosunku, przedziału i poziomu porządkowego nie ma znaczenia: jedyne istotne znaczenie ma rozróżnienie między predyktorami porządkowymi i nominalnymi. Ograniczenie algorytmu do dzielenia predyktora w punkcie wzdłuż linii, oddzielenie wyższych od niższych wartości, może mieć znaczący wpływ na jego wydajność predykcyjną - na dobre lub złe, w zależności od gładkości relacji predyktora (przypuszczalnie porządkowego) do odpowiedzi i rozmiar zestawu danych. Nie ma rozsądnego sposobu, aby decyzja opierała się wyłącznie na zastanowieniu się, w jaki sposób zmienna predykcyjna reprezentuje rzeczywistość niezależnie od analizy, którą zamierzasz przeprowadzić, nie mówiąc już o tym, jakie wartości znajdziesz w próbce.


0

To otwarte pytanie badawcze. Patrz na przykład praca Valera i in. ( papier ) lub rozszerzenia (np. jeden autorstwa Dhir i wsp. - papier ).

Edytować:

Powszechną praktyką w statystyce i uczeniu maszynowym jest zakładanie, że typy danych statystycznych zmiennych (np. Porządkowe, kategorialne lub wartości rzeczywiste) zmiennych, i zwykle również znany jest model prawdopodobieństwa. Jednak wraz ze wzrostem dostępności rzeczywistych danych założenie to staje się zbyt restrykcyjne. Dane są często niejednorodne, złożone i niewłaściwie lub niekompletnie udokumentowane. Zaskakujące, pomimo ich praktycznego znaczenia, wciąż brakuje narzędzi do automatycznego odkrywania typów statystycznych oraz odpowiednich modeli prawdopodobieństwa (szumu) zmiennych w zbiorze danych.

(Z gazety Valera.)

Kiedy więc mówimy, że jest to „pytanie otwarte” (co dziwne, cytuję siebie), mamy na myśli, że obecnie nie ma dobrych automatycznych metod wnioskowania o typie danych na podstawie skończonej próbki. Gdybyś miał nieskończoną próbkę, byłoby to łatwe, ale ponieważ nie jest to możliwe, musimy powrócić do innych środków.


Czy możesz nam powiedzieć, do czego masz na myśli „otwarte pytanie badawcze”? Rozważ także wyjaśnienie, w jaki sposób twoja odpowiedź nie (lub nie!) Jest sprzeczna z innymi odpowiedziami w tym wątku.
whuber

Jasne, pozwól mi edytować moją odpowiedź.
Astrid,

Dziękuję Ci. Wydawało mi się, po zapoznaniu się z artykułem Valera, że ​​jest o wiele silniejsze twierdzenie: mianowicie, że ma on metodę odgadywania typów zmiennych, a w szczególności rozróżnienia między danymi kategorialnymi i porządkowymi. Nie studiowałem tej metody, ale zakładam, że musi ona opierać się (przynajmniej częściowo) na spojrzeniu na relacje między takimi zmiennymi a innymi zmiennymi, z którymi, jak się zakłada, są powiązane. Nie jestem w stanie zrozumieć, w jaki sposób „nieskończona próbka” (cokolwiek to może być) byłaby przydatna: czy możesz wyjaśnić, w jaki sposób problem byłby „łatwy”?
whuber

W rzeczywistości jest to bardzo solidna metoda i sam ją szczegółowo przestudiowałem (co sprawia, że ​​jestem nieco stronniczy w stosunku do ciebie); ale pomysł jest bardzo mądry. Zakładamy, że każdy typ kolumny można opisać jako mieszaninę typów (podobnie jak model mieszanki), a następnie staramy się znaleźć typ o największej wadze, a następnie nazwać odpowiadający „typ” prawdziwym typem zmiennej. Jeśli chodzi o wnioskowanie typu, jest to bardzo sprytna i najlepsza metoda automatyczna (o której wiem). Jeśli inni znają innych, proszę podziel się!
Astrid,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.