Quelles variables expliquent quels composants de l'ACP et vice versa?

14

En utilisant ces données:

head(USArrests)
nrow(USArrests)

Je peux faire un PCA ainsi:

plot(USArrests)
otherPCA <- princomp(USArrests)

Je peux intégrer les nouveaux composants

otherPCA$scores

et la proportion de variance expliquée par les composantes avec

summary(otherPCA)

Mais que faire si je veux savoir quelles variables sont principalement expliquées par quels composants principaux? Et vice versa: par exemple, PC1 ou PC2 est-il principalement expliqué par murder? Comment puis-je faire ceci?

Puis-je dire par exemple que PC1 est expliqué à 80% par murderou assault?

Je pense que les chargements m'aident ici, mais ils montrent la directionnalité et non la variance expliquée telle que je la comprends, par exemple

otherPCA$loadings

Loadings:
         Comp.1 Comp.2 Comp.3 Comp.4
Murder                         0.995
Assault  -0.995                     
UrbanPop        -0.977 -0.201       
Rape            -0.201  0.974   
user1320502
la source
2
Notez que les signes des chargements sont arbitraires. Les trois variables de criminalité sont toutes corrélées positivement les unes avec les autres, mais vous seriez intelligent de travailler cela à partir des signes des charges ci-dessus.
Nick Cox
Malheureusement, je pense que la réponse acceptée à cette question est incorrecte. J'ai posté ma propre réponse ci-dessous.
amibe dit Réintégrer Monica le

Réponses:

10

Vous avez raison, les chargements peuvent vous aider ici. Ils peuvent être utilisés pour calculer la corrélation entre les variables et les principaux composants. De plus, la somme des charges au carré d'une variable sur toutes les composantes principales est égale à 1. Par conséquent, les charges au carré vous indiquent la proportion de variance d'une variable expliquée par une composante principale.

Le problème avec princomp est qu'il ne montre que les chargements "très élevés". Mais comme les chargements ne sont que les vecteurs propres de la matrice de covariance, on peut obtenir tous les chargements en utilisant la eigencommande dans R:

 loadings <- eigen(cov(USArrests))$vectors
 explvar <- loadings^2

Maintenant, vous avez les informations souhaitées dans la matrice explvar.

type au hasard
la source
merci au hasard, pourriez-vous me montrer par exemple assaultou urban popnous pourrions le faire? partiellement confus car il n'y a qu'une seule corrélation présente dans la matrice pourassault
user1320502
1
Désolé, j'ai amélioré ma réponse et je n'ai pas remarqué que vous avez déjà commenté mon message. charges d'assaut avec -0,995 sur PC1. Ainsi, on peut conclure après avoir mis au carré cette valeur PC1 explique 99% de la variance de l'assaut variable. Après avoir quadrillé les valeurs de la pop urbaine, vous pouvez conclure que PC3 explique 4% et PC2 95,5% de la variance de la pop urbaine.
random_guy
1
OP ne demande-t-il pas quelle part de l'ACP peut être attribuée à une variable? Votre réponse concerne la quantité de variable pouvant être expliquée par un CPA
Heisenberg
2
Pour en revenir à cette question, je pense que cette réponse est fausse. Considérons 10 variables qui sont fortement (99%) corrélées entre elles et sont toutes mises à l'échelle de la variance unitaire. Le premier PC sera essentiellement la moyenne entre eux. Ainsi , le premier vecteur propre va être de longueur 1 , et la première valeur propre est presque 10 , par exemple 9,9 . Maintenant, chaque variable est presque entièrement expliquée par le premier PC. Et le premier PC est presque entièrement expliqué par chaque variable. Mais comment allez-vous conclure l'un ou l'autre des éléments carrés dew=(0.3,0.3,...0.3)1109.9 qui sont tous 0,1 ? w0.1
amibe dit Réintégrer Monica
2
Désolé d'insister, mais pensez-vous que je me trompe dans mon commentaire ci-dessus? Sinon, vous pouvez modifier votre réponse pour supprimer la confusion potentielle, ce serait très utile pour les futurs lecteurs. Je viens de poster une réponse moi-même, en essayant d'expliquer ces problèmes plus en détail.
amibe dit Réintégrer Monica le
9

Je pense que la réponse acceptée peut être dangereusement trompeuse (-1). Il y a au moins quatre questions différentes mélangées dans le PO. Je les considérerai l'un après l'autre.


  • Q1. Quelle proportion de la variance d'un PC donné s'explique par une variable d'origine donnée? Quelle proportion de la variance d'une variable d'origine donnée est expliquée par un PC donné?

r2riVisiLiLi=(si)1/2Vi. Ses éléments sont des corrélations de ce PC avec les variables d'origine respectives.

ViLi

De plus, si l'ACP est effectuée sur des covariances (et non sur des corrélations), les chargements vous donneront également des covariances, pas des corrélations. Pour obtenir des corrélations, il faut les calculer manuellement, en suivant PCA. [La réponse actuellement acceptée n'est pas claire à ce sujet.]

  • 80%

r2R2

r2R2

  • 80%

r=0.9r=0.9r2R2=0.90.95>1R2

Comment sélectionner un sous-ensemble expliquant la quantité donnée de variance, a été suggéré par @FrankHarrell (+1).

amibe dit réintégrer Monica
la source
+1, cela devrait être la réponse acceptée.
gented
6

Les données sur les arrestations américaines regroupées avec R ne sont qu'un exemple ici, mais je note que les calculs de charges dans la question proviennent d'une ACP de la matrice de covariance . C'est quelque part entre arbitraire et absurde, car les variables sont mesurées à différentes échelles.

La population urbaine ressemble à un pourcentage. La Californie est de 91% et plus.

Les trois variables de la criminalité semblent être le nombre d'arrestations de délits exprimé par rapport à la taille de la population (vraisemblablement pour une certaine période). Vraisemblablement, il est documenté quelque part, que ce soit des arrestations pour 1000 ou 10000 ou autre chose.

La moyenne de la variable d'agression dans les unités données est d'environ 171 et le meurtre moyen est d'environ 8. Ainsi, l'explication de vos charges est qu'en grande partie le modèle est un artefact: il dépend de la variabilité très différente des variables.

Ainsi, bien qu'il y ait un sens dans les données en ce qu'il y a beaucoup plus d'arrestations pour voies de fait que pour meurtres, etc., ce fait connu (ou sans surprise) domine l'analyse.

Cela montre que, comme partout ailleurs dans les statistiques, vous devez penser à ce que vous faites dans une ACP.

Si vous allez plus loin:

  1. Je dirais que le pourcentage urbain est mieux exclu de l'analyse. Ce n'est pas un crime d'être urbain; il pourrait bien entendu servir de proxy pour les variables influençant la criminalité.

  2. Une ACP basée sur une matrice de corrélation aurait plus de sens à mon avis. Une autre possibilité est de travailler avec des logarithmes des taux d'arrestation et non des taux d'arrestation (toutes les valeurs sont positives; voir ci-dessous).

Remarque: la réponse de @ random_guy utilise délibérément la matrice de covariance.

Voici quelques statistiques sommaires. J'ai utilisé Stata, mais c'est assez immatériel.

    Variable |       Obs        Mean    Std. Dev.       Min        Max
-------------+--------------------------------------------------------
   urban_pop |        50       65.54    14.47476         32         91
      murder |        50       7.788     4.35551         .8       17.4
        rape |        50      21.232    9.366384        7.3         46
     assault |        50      170.76    83.33766         45        337
Nick Cox
la source