Tengo un marco de datos en Python donde necesito encontrar todas las variables categóricas. Comprobar el tipo de columna no siempre funciona porque el int
tipo también puede ser categórico.
Así que busco ayuda para encontrar el método de prueba de hipótesis correcto para identificar si una columna es categórica o no.
Intenté por debajo de la prueba de chi-cuadrado pero no estoy seguro de si esto es lo suficientemente bueno
import numpy as np
data = np.random.randint(0,5,100)
import scipy.stats as ss
ss.chisquare(data)
Por favor avise.
Respuestas:
Respuesta corta: no puedes.
No existe una prueba estadística que le diga si un predictor que contiene los enteros entre 1 y 10 es un predictor numérico (por ejemplo, número de hijos) o codifica diez categorías diferentes. (Si el predictor contiene números negativos, o el número más pequeño es mayor que uno, o se salta números enteros, esto podría argumentar en contra de que sea una codificación categórica, o simplemente puede significar que el analista utilizó una codificación no estándar).
La única forma de estar seguro es aprovechar la experiencia en el dominio o el libro de códigos del conjunto de datos (que siempre debe existir).
fuente
Cualquier criterio, o regla general, que funcione para su conjunto de datos es bienvenido, pero no podemos ver sus datos. En cualquier caso, el problema se presenta mejor en general, y sin referencia a ningún software en particular tampoco.
Es peor de lo que piensas, incluso si crees que es peor de lo que piensas.
La respuesta de @Stephan Kolassa ya hace un punto clave. Los enteros pequeños pueden significar recuentos en lugar de categorías: 3, que significa 3 autos o gatos, no es lo mismo que 3, que significa "la persona posee un automóvil" o "la persona es propiedad de un gato".
Los puntos decimales podrían acechar dentro de variables categóricas, como parte de clasificaciones codificadas, por ejemplo, de industrias o enfermedades.
Las mediciones de sentido estricto podrían ser enteros por convención, por ejemplo, las alturas de las personas pueden ser reportadas como enteras cm o pulgadas, la presión sanguínea como enteros mm Hg.
El número de valores distintos (un término mejor que "único", que todavía tiene el significado principal de ocurrir una sola vez) tampoco es una buena guía. El número de diferentes alturas de personas posibles en muestras moderadas es probablemente mucho menor que el número de diferentes afiliaciones religiosas u orígenes étnicos.
fuente
Bueno, creo que es aún peor de lo que sugieren las otras respuestas: los datos no son subespecies categóricas o numéricas æternatis : el "nivel de medición" es algo estipulado por el analista para responder una pregunta en particular en una ocasión particular. Vea la respuesta de Glen_b aquí .
Es de importancia práctica entender eso. Por ejemplo, con un árbol de clasificación, la distinción entre predictores de razón, intervalo y nivel ordinal no tiene ninguna consecuencia: la única distinción que importa es la que existe entre predictores ordinales y nominales. Restringir el algoritmo para dividir el predictor en un punto a lo largo de una línea, separando los valores más altos de los más bajos, puede tener un efecto significativo en su rendimiento predictivo, para bien o para mal, dependiendo de la suavidad de la relación del predictor (supuestamente ordinal) con la respuesta & el tamaño del conjunto de datos. No hay una manera sensata de tomar una decisión basada únicamente en reflexionar sobre cómo la variable predictora representa la realidad, independientemente del análisis que esté a punto de realizar, y mucho menos sobre qué valores ha encontrado que toma en una muestra.
fuente
Esta es una pregunta de investigación abierta. Ver, por ejemplo, el trabajo de Valera et al. ( papel ) o extensiones (por ejemplo, una de Dhir et al. - papel ).
Editar:
(Del artículo de Valera).
Entonces, cuando decimos que esta es una "pregunta abierta" (curiosamente citando a mí mismo), queremos decir que actualmente no hay buenos métodos automáticos para inferir el tipo de datos dada una muestra finita. Si tuviera una muestra infinita, esto sería fácil, pero como eso no es posible, tenemos que volver a otros medios.
fuente