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)
psy
oupsych
nos 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.Respostas:
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.)
fonte
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.
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:
fonte
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.
fonte