Choix du nombre de composants principaux à conserver

10

Une méthode qui m'a été suggérée est de regarder un tracé d'éboulis et de vérifier le «coude» pour déterminer le nombre correct de PC à utiliser. Mais si l'intrigue n'est pas claire, R a-t-il un calcul pour déterminer le nombre?

fit <- princomp(mydata, cor=TRUE)
marque
la source
3
Pas que je sache. Premièrement, si vous vous référez à la "valeur propre supérieure à 1 règle empirique" ou à la règle dite de Kayser, vous trouverez probablement le nombre de PC qui satisfont à cela (gardez à l'esprit que cela surestime généralement le nombre de dimensions) en regardant plus précisément à votre intrigue éboulis. Deuxièmement, l'analyse parallèle est un meilleur moyen de déterminer le nombre de composants; voir le package psyou psychdans les programmes R et SPSS, SAS et MATLAB pour déterminer le nombre de composants et de facteurs. Utilisation de l'analyse parallèle et du test MAP de Velicer plus généralement.
chl

Réponses:

10

L'article suivant: Rétention des composants dans l'analyse des composants principaux avec application aux données de puces à ADNc par Cangelosi et Goriely donne un assez bon aperçu de la règle empirique standard pour détecter le nombre de composants dans une étude. (Tracé d'éboulis, Proportion de la variance totale expliquée, Règle des valeurs propres moyennes, diagramme Log-valeurs propres, etc.) La plupart d'entre elles sont assez simples à mettre en œuvre dans R.

En général, si votre intrigue n'est pas concluante, il vous suffit de "choisir votre poison". Il n'y a pas de bien ou de mal absolu pour les données car, en réalité, le nombre de PC à utiliser dépend en fait de votre compréhension du problème. Le seul ensemble de données dont vous pouvez "vraiment" connaître la dimensionnalité est celui que vous avez construit vous-même. :-) Les composants principaux à la fin de la journée fournissent la décomposition optimale des données sous une métrique RSS (où en tant que sous-produit, vous obtenez que chaque composant représente un mode de variation principal) et en incluant ou en excluant un nombre donné de composants dicte votre perception de la dimensionnalité de votre problème.

Par préférence personnelle, j'aime l'approche de Minka sur ce choix automatique de dimensionnalité pour PCA qui basée sur une interprétation probabiliste de PCA mais là encore, vous vous lancez dans le jeu d'essayer de modéliser la probabilité de vos données pour une dimensionnalité donnée. (Le lien fournit le code Matlab si vous souhaitez suivre cette justification.)

Essayez de mieux comprendre vos données. par exemple. Croyez-vous vraiment que 99,99% de la variation de votre ensemble de données est due aux covariables de votre modèle? Sinon, vous n'avez probablement pas besoin d'inclure des dimensions qui présentent une si petite proportion de la variance totale. Pensez-vous qu'en réalité une composante reflète une variation inférieure à un seuil de différences tout simplement perceptibles? Encore une fois, cela signifie probablement qu'il est peu pertinent d'inclure cette composante dans votre analyse.

Dans tous les cas, bonne chance et vérifiez attentivement vos données. (Les tracer fait aussi des merveilles.)

usεr11852
la source
Pouvez-vous pointer du code matlab, je ne le trouve pas.
mrgloom
Je pense que je l'ai trouvé research.microsoft.com/en-us/um/people/minka/papers/pca
mrgloom
Oui! C'était le lien auquel je faisais référence.
usεr11852
Je me demande si l'approche de Minka est appliquée dans R maintenant? Supposons que les PC les plus importants ont été déterminés dans une étude par différentes méthodes, nous savons que ceux-ci devraient être la partie signal des données. Savez-vous par hasard s'il existe une limitation de la variance en% expliquée par ces PC, ci-dessous qui est considérée comme un non-aller à une analyse plus approfondie? toute référence sera très appréciée.
doctorat du
6

Il y a eu de très bons travaux ultérieurs sur ce problème au cours des dernières années depuis que cette question a été posée et répondue à l'origine. Je recommande fortement l'article suivant de Gavish et Donoho: Le seuil dur optimal pour les valeurs singulières est de 4 / sqrt (3)

Leur résultat est basé sur une analyse asymptotique (c'est-à-dire qu'il existe une solution optimale bien définie à mesure que votre matrice de données devient infiniment grande), mais ils montrent des résultats numériques impressionnants qui montrent que la procédure asymptotiquement optimale fonctionne pour les petits ensembles de données de taille réaliste, même sous différents bruits des modèles.

Essentiellement, la procédure optimale se résume à estimer le bruit, , ajouté à chaque élément de la matrice. Sur cette base, vous calculez un seuil et supprimez les composants principaux dont la valeur singulière tombe en dessous du seuil. Pour une matrice carrée , la constante de proportionnalité 4 / sqrt (3) apparaît comme suggéré dans le titre:n × nσn×n

λ=4σn3

Ils expliquent également le cas non carré dans le document. Ils ont un bon complément de code (dans MATLAB) ici, mais les algorithmes seraient faciles à implémenter dans R ou n'importe où ailleurs: https://purl.stanford.edu/vg705qn9070

Mises en garde:

  • Si vous avez des données manquantes, je ne suis pas sûr que cela fonctionnera
  • Si chaque entité de votre ensemble de données a des amplitudes de bruit différentes, je ne suis pas sûr que cela fonctionnera (bien que le blanchiment puisse probablement contourner cela sous certaines hypothèses)
  • Il serait intéressant de voir si des résultats similaires sont valables pour d'autres factorisations matricielles de bas rang (par exemple, factorisation matricielle non négative).
Alex Williams
la source
+1, wow ce document semble extrêmement intéressant. Merci beaucoup de l'avoir mentionné.
amoeba
4

Le problème avec le critère de Kaiser (toutes les valeurs propres supérieures à un) est que le nombre de facteurs extraits est généralement environ un tiers du nombre d'éléments ou d'échelles dans la batterie, indépendamment du fait que de nombreux facteurs supplémentaires soient du bruit. L'analyse parallèle et le critère éboulis sont généralement des procédures plus précises pour déterminer le nombre de facteurs à extraire (selon les textes classiques de Harmon et Ledyard Tucker ainsi que des travaux plus récents de Wayne Velicer.

StatisticsDoc Consulting
la source