Eu tenho um conjunto de dados que possui dados contínuos e categóricos. Estou analisando usando o PCA e estou me perguntando se é bom incluir as variáveis categóricas como parte da análise. Meu entendimento é que o PCA só pode ser aplicado a variáveis contínuas. Isso está correto? Se não puder ser usado para dados categóricos, que alternativas existem para sua análise?
categorical-data
pca
correspondence-analysis
mixed-type-data
Nikolina Icitovic
fonte
fonte
Respostas:
Embora um PCA aplicado em dados binários produza resultados comparáveis aos obtidos em uma Análise de Correspondência Múltipla (as pontuações fatoriais e os valores próprios são linearmente relacionados), existem técnicas mais apropriadas para lidar com tipos de dados mistos, ou seja, Análise de Fatores Múltiplos para dados mistos disponíveis em o pacote FactoMineR R (
AFDM()
). Se suas variáveis puderem ser consideradas como subconjuntos estruturados de atributos descritivos, a Análise Fatorial Múltipla (MFA()
) também será uma opção.O desafio com variáveis categóricas é encontrar uma maneira adequada de representar distâncias entre categorias de variáveis e indivíduos no espaço fatorial. Para superar esse problema, você pode procurar uma transformação não linear de cada variável - seja nominal, ordinal, polinomial ou numérica - com escala ideal. Isso está bem explicado nos Métodos Gifi para Escalabilidade Ótima no R: Os homals do Pacote , e uma implementação está disponível nos homals do pacote R correspondentes .
fonte
Although a PCA applied on binary data would yield results comparable to those obtained from a Multiple Correspondence Analysis
:, não podemos converter uma variável categórica nominal (digamos com cardinalidade N) em uma coleção de binários fictícios (N-1) e executar o PCA nesses dados? (Eu compreendo que há técnicas mais apropriadas)Uma pesquisa no Google "pca para variáveis discretas" fornece uma boa visão geral de S. Kolenikov (@StasK) e G. Angeles. Para adicionar à resposta chl, a análise de PC é realmente uma análise de vetores próprios da matriz de covariância. Portanto, o problema é como calcular a matriz de covariância "correta". Uma das abordagens é usar correlação policórica .
fonte
hetcor()
o pacote polycor ). Desde que a matriz de VC seja SDP, ela deve fazer o trabalho - principalmente no espírito da Análise Fatorial. Variáveis nominais podem ser codificadas fictícias.Eu sugeriria dar uma olhada em Linting & Kooij, 2012 " Análise de componentes principais não lineares com CATPCA: um tutorial ", Journal of Personality Assessment ; 94 (1).
fonte
Ainda tenho o privilégio de comentar na postagem de alguém, por isso estou adicionando meu comentário como uma resposta separada. Por isso, tenha paciência comigo.
Continuando o que o @Martin F comentou, recentemente me deparei com os PCAs não lineares. Eu estava olhando para PCAs não lineares como uma alternativa possível quando uma variável contínua se aproxima da distribuição de uma variável ordinal à medida que os dados ficam mais escassos (isso acontece na genética muitas vezes quando a menor frequência de alelo da variável fica mais e mais baixa e você fica com um número muito baixo de contagens em que você realmente não pode justificar uma distribuição de uma variável contínua e precisa afrouxar as suposições distributivas, tornando-a uma variável ordinal ou uma variável categórica.) O PCA não linear pode lidar com essas duas condições, mas depois discutindo com maestros estatísticos na faculdade de genética, a chamada de consenso foi que os PCAs não-lineares não são usados com muita frequência e o comportamento desses PCAs ainda não foi testado extensivamente (podem estar se referindo apenas ao campo da genética, por favor, leve-o com grãos de sal). Na verdade, é uma opção fascinante. Espero ter adicionado 2 centavos (felizmente relevantes) à discussão.
fonte
Há uma abordagem recentemente desenvolvida para esses problemas: Modelos Generalizados de Classificação Baixa .
Um dos papéis que usa essa técnica é chamado PCA em um Data Frame .
O PCA pode ser colocado assim:
fonte
PCAmixdata
#Rstats package :Exemplo da vinheta mostra resultados para saída contínua e categórica
fonte