J'ai couru PCA sur 25 variables et j'ai sélectionné les 7 premiers PC utilisant prcomp. J'ai alors fait varimax rotation sur ces composants. Et maintenant je souhaite varimax faire pivoter les données tournées PCA (car il ne fait pas partie de l'objet varimax - seulement la matrice de chargement et la matrice de rotation). J'ai lu que pour ce faire, vous multipliez la transposition de la matrice de rotation par la transposition des données de sorte que je l'aurais fait: Mais cela n'a pas de sens que les dimensions de la matrice transposes ci-dessus sont 7x7 et 7 fois 16933 respectivement et ainsi Je vais être laissé avec une matrice de seulement 7 lignes, plutôt que 16933 lignes. Est-ce que quelqu'un sait ce que je fais mal ici ou ce que ma ligne finale devrait être Je n'ai besoin de transposer retour après demandé 16 mai à 14h32 Rotations est une approche développée dans l'analyse factorielle là rotations (tels que par exemple varimax) sont appliquées Aux chargements. Non pas aux vecteurs propres de la matrice de covariance. Les charges sont des vecteurs propres mis à l'échelle par les racines carrées des valeurs propres respectives. Après la rotation varimax, les vecteurs de chargement ne sont plus orthogonaux (même si la rotation est appelée orthogonale), ainsi on ne peut pas simplement calculer des projections orthogonales des données sur les directions de chargement tournées. La réponse de FTusells suppose que la rotation varimax est appliquée aux vecteurs propres (et non aux chargements). Ce serait très peu conventionnel. S'il vous plaît voir mon compte détaillé de PCAvarimax pour plus de détails: PCA est suivi par une rotation (tel que varimax) encore PCA Bref, si nous regardons le SVD de la matrice de données XUSVtop, puis à la rotation des charges signifie l'insertion de RRtop pour une rotation de la matrice R Comme suit: X (UR) (Rtop SVtop). Si la rotation est appliquée aux chargements (comme c'est habituellement le cas), il existe au moins trois façons simples de calculer les PC tournant varimax dans R: Ils sont facilement disponibles via la fonction psych :: principal (démontrant que c'est effectivement l'approche standard) . Notez qu'il renvoie des scores normalisés. À-dire que tous les PC ont une variance unitaire. On peut utiliser manuellement la fonction varimax pour faire tourner les charges, puis utiliser les nouvelles charges tournées pour obtenir les scores dont on a besoin pour multiplier les données avec la pseudo-inverse transposée des charges tournées (voir les formules de cette réponse par ttnphns). Cela donnera également des scores normalisés. On peut utiliser la fonction varimax pour faire tourner les charges, puis utiliser la matrice de rotation rotmat pour faire tourner les scores normalisés obtenus avec prcomp. Toutes les trois méthodes donnent le même résultat: Cela donne trois sorties identiques: Je ne suis pas un utilisateur de R, donc n'importe qui qui est plus familier avec R est bienvenu pour modifier mon extrait de code ci-dessus, si nécessaire. Remarque: La fonction varimax de R utilise normalement les paramètres TRUE, eps 1e-5 par défaut (voir documentation). On pourrait vouloir changer ces paramètres (diminuer la tolérance eps et prendre soin de la normalisation Kaiser) lors de la comparaison des résultats à d'autres logiciels tels que SPSS. Je remercie GottfriedHelms d'avoir porté cela à mon attention. Remarque: ces paramètres fonctionnent lorsqu'ils sont passés à la fonction varimax, mais ne fonctionnent pas lorsqu'ils sont transmis à la fonction psych :: principal. Cela semble être un bug qui sera corrigé. A répondu Feb 9 15 à 22:59 amoeba Merci beaucoup pour l'explication. Je perdais mon esprit parce que je pensais que la prcomprotation étaient les charges. C'est pourquoi nous avons besoin de le multiplier pour l'écart-type. Maintenant, pouvez-vous m'expliquer les étapes après la rotation varimax Toutes les inversions et la transposition de la matrice Merci à l'avance. Ndash JMarcelino Oct 3 15 at 11:26 Vous devez utiliser les charges de matrice. Non rotmat: La matrice rotmat est la matrice orthogonale qui produit les nouvelles charges à partir de celles non dévissées. EDIT à partir de Février 12, 2015: Comme bien indiqué ci-dessous par l'amibe (voir aussi son poste précédent ainsi qu'un autre poste de ttnphns) cette réponse n'est pas correcte. Considérons une matrice de données n x m X. La décomposition en valeur singulière est X USVT où V a pour colonnes les vecteurs propres (normalisés) de XX. Maintenant, une rotation est un changement de coordonnées et les montants à écrire l'égalité ci-dessus comme: X (UST) (TTVT) UV avec T étant une matrice orthogonale choisie pour obtenir un V proche de clairsemé (contraste maximum entre les entrées, vaguement parlant). Maintenant, si c'était tout. Ce qui n'est pas le cas, on pourrait post-multiplier l'égalité ci-dessus par V pour obtenir des scores U comme X (V) T, mais bien sûr nous ne tournons jamais tous les PC. On considère plutôt un sous-ensemble de kltm qui fournit encore une approximation de rang k décente de X, X approx (UkSk) (VkT) de sorte que la solution tournée est maintenant X approx (UkSkTk) (TkTVkT) UkVk où maintenant Vk est un ktimes n matrice. Nous ne pouvons plus simplement multiplier X par la transposition de Vk, mais nous devons plutôt recourir à l'une des solutions décrites par l'amibe. En d'autres termes, la solution que je propose est juste dans le cas particulier où elle serait inutile et absurde. Je remercie cordialement amie pour avoir clarifié cette question pour moi J'ai vécu avec cette idée fausse depuis des années. Un point où la note ci-dessus s'écarte du post des amibes est que shehe semble associer S à V dans L. Je pense que dans PCA il est plus courant d'avoir des colonnes Vs de norme 1 et d'absorber S dans les valeurs des composantes principales. En fait, ils sont généralement présentés sous forme de combinaisons linéaires viTX (i1, ldots, m) des variables originales (centrées, peut-être échelonnées) soumises à vi1. L'une ou l'autre manière est acceptable je pense, et tout entre les deux (comme dans l'analyse biplot). Comme indiqué par l'amibe, bien que Vk soit rectangulaire, la solution que j'ai proposée pourrait être acceptable: Vk (Vk) T donnerait une matrice unitaire et X (Vk) T approximativement Uk. Donc, tout semble dépendre de la définition des scores que l'on préfère. A répondu le 17 mai à 7:44 -1. Je crois que cette réponse n'est pas correcte et j'ai posté ma propre réponse pour le démontrer. On ne peut obtenir des scores tournés par projection orthogonale sur les charges tournées (car elles ne sont plus orthogonales). La façon la plus simple d'obtenir les scores corrects est d'utiliser psych :: principal. En dehors de cela, j'ai édité votre réponse pour insérer la mise à l'échelle, comme discuté dans les commentaires ci-dessus. Ndash amibe Feb 9 15 at 23: 01Factor Analysis Varimax Rotation Varimax rotation est le plus commun des rotations qui sont disponibles. Cela implique d'abord l'échelonnage des charges. Nous escaladerons les charges en les divisant par la communauté correspondante comme montré ci-dessous: Ici le chargement de la ième variable sur le jième facteur après rotation, où est la communauté pour la variable i. Ce que nous voulons faire est de trouver la rotation qui maximise cette quantité. La procédure Varimax, telle que définie ci-dessous, sélectionne la rotation pour trouver cette quantité maximale: Il s'agit des variances d'échantillonnage des charges standardisées pour chaque facteur, sommées sur les m facteurs. Notre objectif est de trouver une rotation de facteurs qui maximise cette variance. Revenons aux options de la procédure de facteur (marquée en bleu): rotate demande la rotation des facteurs, et ici nous avons spécifié la rotation de Varimax de nos charges factorielles. Parcelle demande le même type de parcelle que nous étions juste à la recherche de la rotation des facteurs. Le résultat de notre rotation est un nouveau modèle de facteur qui est donné ci-dessous (page 11 de la sortie SAS): Le résultat de notre rotation est un nouveau modèle de facteur qui est donné ci-dessous: Voici une copie de la page 10 de la sortie SAS ici. Au sommet de la page 10 de la sortie, ci-dessus, nous avons notre matrice orthogonale T. Les valeurs de ces charges de facteurs tournées dans la sortie SAS nous avons copié ici: La quantité totale de variation expliquée par les 3 facteurs reste la même. Le montant total de la variation expliqué par les deux modèles est identique. Les rotations, parmi un nombre fixe de facteurs, ne changent pas la proportion de la variation qui est expliquée par le modèle. Nous obtenons un ajustement aussi bon quelle que soit la rotation utilisée. Cependant, notez ce qui est arrivé au premier facteur. Ici, vous voyez une diminution assez importante de la quantité de variation expliquée par le premier facteur. Cela montre ce qui se passe ici. Nous avons obtenu une interprétation plus propre des données, mais vous ne pouvez pas le faire sans qu'il nous coûte quelque chose quelque part. Ce qu'il a fait ici, c'est de prendre la variation expliquée par le premier facteur et de le répartir entre ces deux derniers facteurs, dans ce cas principalement au deuxième facteur. Le montant total de variation expliqué par le modèle de facteur tourné est le même, mais les contributions ne sont pas les mêmes des facteurs individuels. Nous obtenons une interprétation plus propre, mais le premier facteur ne va pas expliquer autant de la variation. Toutefois, cela ne serait pas considéré comme un coût particulièrement élevé si nous voulons toujours être intéressés par ces trois facteurs. Ce que nous essayons de faire ici est de nettoyer notre interprétation. Idéalement, si cela fonctionne bien, ce que nous devrions trouver est que les nombres dans chaque colonne de sera soit loin de zéro ou proche de zéro. Si nous avons beaucoup de chiffres proches d'un ou négatif ou nul dans chaque colonne, ce serait l'interprétation idéale ou la plus propre que l'on pourrait obtenir et c'est ce que nous essayons de trouver dans une des rotations des données. Cependant, les données sont rarement cette coopérative Rappel: notre objectif ici n'est pas le test d'hypothèses, mais l'interprétation des données. Le succès de l'analyse peut être jugé par la façon dont il vous aide à faire votre interprétation. Si cela ne vous aide pas alors l'analyse est un échec. Si vous donne un aperçu de la structure de la variabilité des données, alors nous avons une analyse réussie. Cliquez sur Suivant pour continuer cette leçon. Copie 2004 L'Université d'État de Pennsylvanie. Tous les droits sont réservés.
No comments:
Post a Comment