Escolha do número de componentes principais a serem retidos

10

Um método que me foi sugerido é examinar um gráfico de seixos e verificar "cotovelo" para determinar o número correto de PCs a serem usados. Mas se o gráfico não estiver claro, R tem um cálculo para determinar o número?

fit <- princomp(mydata, cor=TRUE)
marca
fonte
3
Não que eu saiba. Primeiro, se você se referir ao "autovalor acima de 1 regra geral" ou à chamada regra de Kayser, provavelmente encontrará o número de PCs que satisfazem isso (lembre-se de que geralmente superestima o número de dimensões) olhando mais precisamente em seu scree plot. Segundo, a análise paralela é a melhor maneira de determinar o número de componentes; consulte o pacote psyou psychnos programas R e SPSS, SAS e MATLAB para determinar o número de componentes e fatores. Usando a Análise Paralela e o Teste MAP do Velicer de maneira mais geral.
chl

Respostas:

10

O artigo a seguir: A retenção de componentes na análise de componentes principais com aplicação em dados de microarranjo de cDNA por Cangelosi e Goriely fornece uma visão geral bastante agradável da regra padrão para detectar o número de componentes em um estudo. (Gráfico de scree, Proporção da variância total explicada, Regra do valor próprio médio, diagrama Log-eigenvalue, etc.) A maioria deles é bastante simples de implementar em R.

Em geral, se o seu scree plot for muito inconclusivo, você só precisará "escolher seu veneno". Não há absolutamente certo ou errado para quaisquer dados, pois, na realidade, o número de PCs a serem utilizados depende realmente da sua compreensão do problema. O único conjunto de dados que você pode "realmente" conhecer a dimensionalidade é aquele que você construiu. :-) Os principais componentes no final do dia fornecem a decomposição ideal dos dados em uma métrica RSS (onde como subproduto, você faz com que cada componente represente um modo de variação principal) e inclua ou exclua um determinado número de componentes dita sua percepção sobre a dimensionalidade do seu problema.

Como questão de preferência pessoal, gosto da abordagem de Minka sobre essa escolha automática de dimensionalidade para PCA, que se baseia em uma interpretação probabilística do PCA, mas, novamente, você começa a tentar modelar a probabilidade de seus dados para uma dada dimensionalidade. (O link fornece o código Matlab se você deseja seguir essa lógica.)

Tente entender mais seus dados. por exemplo. Você realmente acredita que 99,99% da variação do seu conjunto de dados se deve às covariáveis ​​do seu modelo? Caso contrário, você provavelmente não precisará incluir dimensões que exibam uma proporção tão pequena da variação total. Você acha que, na realidade, um componente reflete variação abaixo de um limiar de diferenças apenas perceptíveis? Isso, novamente, provavelmente significa que há pouca relevância em incluir esse componente em sua análise.

De qualquer forma, boa sorte e verifique seus dados com cuidado. (Traçá-los também faz maravilhas.)

usεr11852
fonte
Você pode apontar para o código do Matlab, não consigo encontrá-lo.
Mrgloom
Yeap! Esse foi o link que eu estava me referindo.
precisa saber é o seguinte
Gostaria de saber se a abordagem de Minka já está aplicada em R? Digamos que os PCs mais importantes tenham sido determinados em um estudo por métodos diferentes, sabemos que esses devem ser a parte do sinal dos dados. Você sabe por acaso se existe alguma limitação na variação percentual que esses PCs explicam, abaixo do qual é considerado um Não-Go para uma análise mais aprofundada? qualquer referência será muito apreciada.
doctorado
6

Houve um trabalho subseqüente muito bom sobre esse problema nos últimos anos desde que essa pergunta foi originalmente feita e respondida. Recomendo vivamente o seguinte artigo de Gavish e Donoho: O limite máximo ideal para valores singulares é 4 / sqrt (3)

O resultado deles é baseado em análise assintótica (ou seja, existe uma solução ótima bem definida à medida que sua matriz de dados se torna infinitamente grande), mas eles mostram resultados numéricos impressionantes que mostram que o procedimento assintoticamente ideal funciona para conjuntos de dados pequenos e de tamanho realista, mesmo sob ruído diferente modelos.

σn×n

λ=4σn3

Eles também explicam o caso não quadrado no jornal. Eles têm um ótimo complemento de código (no MATLAB) aqui, mas os algoritmos seriam fáceis de implementar no R ou em qualquer outro lugar: https://purl.stanford.edu/vg705qn9070

Ressalvas:

  • Se você tiver dados ausentes, não tenho certeza se isso funcionará
  • Se cada recurso do seu conjunto de dados tiver diferentes magnitudes de ruído, não tenho certeza se isso funcionará (embora o clareamento possa contornar isso sob certas suposições)
  • Seria interessante ver se resultados semelhantes são válidos para outras fatorações matriciais de baixo escalão (por exemplo, fatoração matricial não negativa).
Alex Williams
fonte
+1, uau, este artigo parece extremamente interessante. Muito obrigado por mencionar.
ameba
4

O problema com o critério de Kaiser (todos os autovalores maiores que um) é que o número de fatores extraídos é geralmente cerca de um terço do número de itens ou escalas na bateria, independentemente de muitos dos fatores adicionais serem ruídos. A análise paralela e o critério scree são geralmente procedimentos mais precisos para determinar o número de fatores a serem extraídos (de acordo com textos clássicos de Harmon e Ledyard Tucker, bem como com trabalhos mais recentes de Wayne Velicer.

EstatísticasDoc Consulting
fonte