So beweisen Sie statistisch, ob eine Spalte kategoriale Daten enthält oder Python nicht verwendet

10

Ich habe einen Datenrahmen in Python, in dem ich alle kategorialen Variablen finden muss. Das Überprüfen des Spaltentyps funktioniert nicht immer, da der intTyp auch kategorisch sein kann.

Daher suche ich Hilfe bei der Suche nach der richtigen Hypothesentestmethode, um festzustellen, ob eine Spalte kategorisch ist oder nicht.

Ich habe es unter dem Chi-Quadrat-Test versucht, bin mir aber nicht sicher, ob dies gut genug ist

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

Bitte beraten.

Amit
quelle
1
Könnten Sie klarstellen, ob ich richtig verstanden habe, dass Sie zwischen int als Ordnungsvariable und als willkürliche kategoriale Codierung unterscheiden möchten? Ich habe keine Antwort, aber es könnte anderen Lesungen helfen, klar zu machen, was Sie wollen. Intuitiv glaube ich nicht, dass Chi2 den Job zuverlässig machen kann.
ReneBt
Ja, du hast recht. Außer dass ich mich nicht auf den Typ der Variablen konzentriere, sondern auf die Daten, die sie enthält. In dem Beispielcode, den ich geteilt habe, sollte das Ergebnis sein, dass es eine kategoriale Variable ist, weil es nur 5 eindeutige Werte hat.
Amit
1
Woher kommt die Regel "Das Ergebnis sollte sein, dass es sich um eine kategoriale Variable handelt, da sie nur 5 eindeutige Werte hat." komme aus?
Dennis Soemers
Oh, das ist keine Regel. Intuitiv weiß ich, dass alle meine Spaltendaten nur diese 5 Werte sind.
Amit
Obwohl andere richtig darauf hingewiesen haben, dass dies nicht möglich ist, würde dies dennoch zu einem interessanten Problem des maschinellen Lernens führen. Zweifellos gibt es Problembereiche, in denen einigermaßen genaue Vorhersagen getroffen werden können.
John Coleman

Antworten:

34

Kurze Antwort: Sie können nicht.

Es gibt keinen statistischen Test, der Ihnen sagt, ob ein Prädiktor, der die ganzen Zahlen zwischen 1 und 10 enthält, ein numerischer Prädiktor ist (z. B. Anzahl der Kinder) oder zehn verschiedene Kategorien codiert. (Wenn der Prädiktor negative Zahlen enthält oder die kleinste Zahl größer als eins ist oder Ganzzahlen übersprungen werden, könnte dies gegen eine kategoriale Codierung sprechen - oder nur bedeuten, dass der Analyst eine nicht standardmäßige Codierung verwendet hat.)

Die einzige Möglichkeit, sicher zu sein, besteht darin, das Fachwissen der Domäne oder das Codebuch des Datasets (das immer vorhanden sein sollte) zu nutzen.

Stephan Kolassa
quelle
14
"Das Codebuch des Datensatzes (das immer existieren sollte)" - Ha, gut.
Kodiologe
12

Unabhängig davon, welche Kriterien - oder Faustregeln - für Ihren Datensatz gelten, sind Sie willkommen, aber wir können Ihre Daten nicht sehen. In jedem Fall ist das Problem im Allgemeinen besser und auch ohne Bezugnahme auf eine bestimmte Software.

Es ist schlimmer als du denkst, auch wenn du denkst, es ist schlimmer als du denkst.

  1. Die Antwort von @Stephan Kolassa macht bereits einen wichtigen Punkt. Kleine ganze Zahlen können eher Zählungen als Kategorien bedeuten: 3, was 3 Autos oder Katzen bedeutet, ist nicht dasselbe wie 3, was bedeutet, dass "Person ein Auto besitzt" oder "Person gehört einer Katze".

  2. Dezimalstellen können innerhalb kategorialer Variablen als Teil codierter Klassifikationen lauern, z. B. von Branchen oder Krankheiten.

  3. Messungen mit strengem Sinn können konventionell nur ganze Zahlen sein, z. B. können Körpergrößen nur als ganze Zahlen cm oder Zoll, Blutdruck als ganze Zahlen mm Hg angegeben werden.

  4. Die Anzahl der unterschiedlichen Werte (ein besserer Begriff als "eindeutig", der immer noch die primäre Bedeutung hat, nur einmal vorzukommen) ist ebenfalls kein guter Anhaltspunkt. Die Anzahl unterschiedlicher Personengrößen, die in moderaten Stichproben möglich sind, ist wahrscheinlich viel geringer als die Anzahl unterschiedlicher religiöser Zugehörigkeiten oder ethnischer Herkunft.

Nick Cox
quelle
+1. Dies ist eine gute Liste von Dingen, die zu beachten sind. Sie sollten dies mit Ihrem Domänenwissen über das Dataset (und alle Dokumentationen) kombinieren, um die Erkennung kategorialer Variablen zu automatisieren.
Anna
@Anna Ich würde sagen, dass eine automatische Erkennung nicht durchgeführt werden sollte und genau das ist, was Sie in Schwierigkeiten bringen kann, wie in diesem Thread beschrieben. Das Domänenwissen und die Dokumentation sollten polytome Variablen unter den anderen Variablen leicht identifizieren können, damit Sie nicht raten müssen.
prince_of_pears
7

Nun, ich denke, es ist noch schlimmer als die anderen Antworten vermuten lassen: Daten sind keine kategorialen oder numerischen Unterarten æternatis - "Messniveau" ist etwas, das vom Analysten festgelegt wurde, um eine bestimmte Frage bei einer bestimmten Gelegenheit zu beantworten. Siehe Glen_bs Antwort hier .

Es ist von praktischer Bedeutung, das zu verstehen. Beispielsweise ist bei einem Klassifizierungsbaum die Unterscheidung zwischen Verhältnis-, Intervall- und Ordnungsprädiktoren ohne Bedeutung: Die einzige Unterscheidung, die zählt, ist die zwischen Ordnungs- und Nominalprädiktoren. Die Einschränkung des Algorithmus zur Aufteilung des Prädiktors an einem Punkt entlang einer Linie, wobei höhere von niedrigeren Werten getrennt werden, kann sich erheblich auf seine Vorhersageleistung auswirken - für gut oder schlecht, abhängig von der Glätte der Beziehung des (mutmaßlich ordinalen) Prädiktors zur Antwort & die Größe des Datensatzes. Es gibt keinen vernünftigen Weg, die Entscheidung zu treffen, indem Sie nur darüber nachdenken, wie die Prädiktorvariable die Realität darstellt, unabhängig von der Analyse, die Sie durchführen möchten, geschweige denn, welche Werte Sie in einer Stichprobe gefunden haben.

Scortchi - Monica wieder einsetzen
quelle
0

Dies ist eine offene Forschungsfrage. Siehe zum Beispiel die Arbeit von Valera et al. ( Papier ) oder Erweiterungen (zB eine von Dhir et al. - Papier ).

Bearbeiten:

In der Statistik und beim maschinellen Lernen ist es üblich anzunehmen, dass die statistischen Datentypen (z. B. ordinale, kategoriale oder reelle Werte) von Variablen und normalerweise auch das Wahrscheinlichkeitsmodell bekannt sind. Mit zunehmender Verfügbarkeit realer Daten wird diese Annahme jedoch zu restriktiv. Daten sind häufig heterogen, komplex und nicht ordnungsgemäß oder unvollständig dokumentiert. Überraschenderweise fehlt es trotz ihrer praktischen Bedeutung immer noch an Werkzeugen, um automatisch die statistischen Typen sowie geeignete Wahrscheinlichkeitsmodelle (Rauschmodelle) für die Variablen in einem Datensatz zu ermitteln.

(Aus dem Valera-Papier.)

Wenn wir also sagen, dass dies eine "offene Frage" ist (seltsamerweise zitiere ich mich selbst), meinen wir damit, dass es derzeit keine guten automatischen Methoden gibt, um auf die Art der Daten bei einer endlichen Stichprobe zu schließen. Wenn Sie eine unendliche Stichprobe hätten, wäre dies einfach, aber da dies nicht möglich ist, müssen wir auf andere Mittel zurückgreifen.

Astrid
quelle
Können Sie uns sagen, worauf Sie sich mit "offener Forschungsfrage" beziehen? Bitte erläutern Sie auch, wie Ihre Antwort anderen Antworten in diesem Thread nicht widerspricht (oder widerspricht!).
whuber
Klar, lass mich meine Antwort bearbeiten.
Astrid
Vielen Dank. Bei Durchsicht des Valera-Papiers schien es mir, dass es eine viel stärkere Behauptung aufstellt: Es soll nämlich eine Methode geben, um Variablentypen zu erraten und insbesondere zwischen kategorialen und ordinalen Daten zu unterscheiden. Ich habe die Methode nicht untersucht, gehe aber davon aus, dass sie (zumindest teilweise) auf der Untersuchung der Beziehungen zwischen solchen Variablen und anderen Variablen beruhen muss, von denen angenommen wird, dass sie in Beziehung stehen. Ich kann nicht verstehen, wie eine "unendliche Stichprobe" (was auch immer das sein mag) von zusätzlichem Nutzen wäre: Können Sie erklären, wie dies das Problem "einfach" machen würde?
whuber
Es ist eigentlich eine sehr robuste Methode, und ich habe sie selbst im Detail studiert (was mich wohlgemerkt etwas voreingenommen macht); aber die Idee ist sehr klug. Wir nehmen an, dass jeder Spaltentyp als eine Mischung von Typen beschrieben werden kann (ähnlich wie ein Mischungsmodell), und dann versuchen wir, den Typ mit dem höchsten Gewicht zu finden, und nennen dann den entsprechenden 'Typ' den realen Typ der Variablen. Was die Typinferenz betrifft, ist sie sehr clever und die beste automatische Methode (die ich kenne). Wenn andere von anderen wissen, teilen Sie bitte!
Astrid