Eu tenho um quadro de dados em python, onde eu preciso encontrar todas as variáveis categóricas. A verificação do tipo da coluna nem sempre funciona porque o int
tipo também pode ser categórico.
Portanto, busco ajuda para encontrar o método de teste de hipótese correto para identificar se uma coluna é categórica ou não.
Eu estava tentando abaixo do teste do qui-quadrado, mas não tenho certeza se isso é bom o suficiente
import numpy as np
data = np.random.randint(0,5,100)
import scipy.stats as ss
ss.chisquare(data)
Por favor informar.
Respostas:
Resposta curta: você não pode.
Não existe um teste estatístico que indique se um preditor que contém os números inteiros entre 1 e 10 é um preditor numérico (por exemplo, número de filhos) ou codifica dez categorias diferentes. (Se o preditor contiver números negativos, ou o menor número for maior que um, ou pular números inteiros, isso poderá ser contrário à codificação categórica - ou pode significar apenas que o analista usou codificação fora do padrão.)
A única maneira de ter certeza é aproveitar o conhecimento do domínio ou o livro de códigos do conjunto de dados (que sempre deve existir).
fonte
Quaisquer que sejam os critérios - ou regras práticas - que funcionam para o seu conjunto de dados são bem-vindos, mas não podemos ver seus dados. De qualquer forma, o problema é melhor resolvido em geral e também sem referência a nenhum software específico.
É pior do que você pensa, mesmo que você pense que é pior do que você pensa.
A resposta de @Stephan Kolassa já faz um ponto-chave. Pequenos números inteiros podem significar contagens em vez de categorias: 3, significando 3 carros ou gatos, não é o mesmo que 3, significando "a pessoa possui um carro" ou "a pessoa pertence a um gato".
Pontos decimais podem estar escondidos em variáveis categóricas, como parte de classificações codificadas, por exemplo, de indústrias ou doenças.
As medições em sentido estrito podem ser apenas números inteiros por convenção, por exemplo, alturas de pessoas podem ser relatadas como cm inteiro ou polegadas, pressão sanguínea como mm inteiro Hg.
O número de valores distintos (um termo melhor que "único", que ainda tem o significado principal de ocorrer apenas uma vez) também não é um bom guia. O número de diferentes alturas de pessoas possíveis em amostras moderadas é provavelmente muito menor que o número de diferentes afiliações religiosas ou origens étnicas.
fonte
Bem, acho que é ainda pior do que as outras respostas sugerem: os dados não são subespécies categóricas ou numéricas - "nível de medida" é algo estipulado pelo analista para responder a uma pergunta específica em uma ocasião específica. Veja a resposta de Glen_b aqui .
É de importância prática entender isso. Por exemplo, com uma árvore de classificação, a distinção entre preditores de razão, intervalo e nível ordinal não tem importância: a única distinção que importa é aquela entre preditores ordinais e nominais. Restringir o algoritmo a dividir o preditor em um ponto ao longo de uma linha, separando valores mais altos e mais baixos, pode ter um efeito significativo em seu desempenho preditivo - para o bem ou para o mal, dependendo da suavidade da relação do preditor (putativamente ordinal) com a resposta e o tamanho do conjunto de dados. Não há uma maneira sensata de tomar a decisão baseada apenas em refletir sobre como a variável preditora representa a realidade, independentemente da análise que você está prestes a realizar, sem falar nos valores que você encontrou em uma amostra.
fonte
Esta é uma questão de pesquisa aberta. Veja, por exemplo, o trabalho de Valera et al. ( papel ) ou extensões (por exemplo, uma de Dhir et al. - papel ).
Editar:
(Do artigo de Valera.)
Portanto, quando dizemos que essa é uma "questão em aberto" (por incrível que pareça me citar), queremos dizer que atualmente não há bons métodos automáticos para inferir o tipo de dados, dada uma amostra finita. Se você tivesse uma amostra infinita, isso seria fácil, mas como isso não é possível, precisamos reverter para outros meios.
fonte