Bonjour:
J'aimerais savoir comment saisir une matrice de corrélation (ou matrice de covariance) dans JMP pour effectuer une analyse factorielle commune (ou analyse en composantes principales). Je ne trouve aucun exemple dans la documentation ou ailleurs.
Je suis sûr que quelqu'un l'a déjà fait dans JMP.
Pouvez-vous poster votre solution?
Merci
Narayanan
Je ne vois aucune réponse à votre question d'il y a près de 20 mois. Quelqu'un a-t-il répondu, car j'ai la même question. Je souhaite saisir mes propres matrices de corrélation et de covariance dans une analyse en composantes principales simple, mais je ne trouve pas comment le faire.
Merci.
Michel
Salut @MaxiumumFactors et @AN1 ,
J'ai consulté l'index des scripts JMP pour voir s'il était possible de saisir ses propres matrices, mais je pense que JMP ne le permet pas et travaille uniquement à partir de la matrice qu'il génère. Si cela vous intéresse, pensez à ajouter un article à la liste de souhaits .
Merci,
Ben
Je suis Yusuke Ono, testeur senior chez JMP Japon. Veuillez m'excuser par avance pour mon anglais médiocre.
Si vous disposez de JMP Pro, la plateforme Modèle d'équation structurelle prend en charge les matrices de covariance (ou matrices de corrélation) et les vecteurs moyens en entrée, et vous pouvez ajuster l'analyse factorielle confirmatoire (CFA) et d'autres SEM.
La fonction propre du langage de script JMP (JSL) permet de décomposer les valeurs propres des matrices symétriques. L'analyse en composantes principales (ACP) peut être réalisée par décomposition des valeurs propres ; vous pouvez donc utiliser la fonction propre pour l'ACP.
L'analyse factorielle par estimation du maximum de vraisemblance est plus complexe. Il est difficile de programmer l'algorithme du maximum de likefood. Je recommande donc la méthode suivante, bien qu'elle reste complexe.
Si vous utilisez la fonction de Cholesky , vous pouvez simuler des données fictives dont la matrice de conariance et le vecteur de moyennes sont identiques aux vôtres (si votre matrice de convariance est semi-définie positive). Si votre matrice de covariance est ceux et votre vecteur de moyennes est signifier , vous pouvez générer les données comme indiqué ci-dessous.
z = J(n, NCol(cov), Random Normal());
For(i = 1, i <= NCol(z), i++,
z[0,i] = (z[0,i] - Mean(z[0,i]))
);
c = Covariance(z);
invrc = Inv(Cholesky(c))`;
rcov = Cholesky(cov);
z = J(n,1,1)*mean` + z * invrc * rcov`;
Notez que certains résultats obtenus avec ces données fictives sont dénués de sens. Par exemple, les tracés de score en ACP dépendent de valeurs aléatoires. Seuls les résultats relatifs à la matrice de covariance et au vecteur moyen sont significatifs. Par exemple, les maximums, les minimums et les corrélations de Spearman/Kendall sont dénués de sens, car ils dépendent d'informations autres que les moyennes et les covariances.
Le code suivant est un exemple. Comprendre et programmer cette méthode de données fictives doit être difficile si vous n'êtes pas familier avec JSL. De plus, mon explication en anglais n'est pas facile à comprendre. Je passe également l'explication mathématique expliquant pourquoi ce calcul peut générer des données fictives avec le vecteur moyen et la matrice de covariance souhaités. N'hésitez pas à me contacter si vous avez des questions.
Names Default To Here(1);
/////////// This is a sample data //////////////////////////////////////
New Table( "Test",
New Column( "Mean", Values( [100, 50, 30, 20] )),
New Column( "Stddev", Values( [3, 4, 2.5, 1.8] )),
New Column( "X1", Values( [1, 0.8, 0.6, 0.4])),
New Column( "X2", Values( [0.8, 1, 0.5, 0.2] )),
New Column( "X3", Values( [0.6, 0.5, 1, 0.2] )),
New Column( "X4", Values( [0.4, 0.2, 0.2, 1] ))
);
///////////////////////////// From Here ///////////////////////////////
mean colname = "Mean"; /* column name for means */
stddev colname = "Stddev"; /* column name for standard deviations */
corr colnames = {"X1", "X2", "X3", "X4"};
n = 100; /* Specify the sample size */
dt = Current Data Table();
mean = Column(dt, mean colname) << Get As Matrix; /* Read your mean vector */
sd = Column(dt, stddev colname) << Get As Matrix; /* Read your standard deviations */
r = dt <
<GET as="" matrix=""></GET>
<DIV>L'un des points forts de JMP est son interactivité. Par exemple, vous pouvez détecter des valeurs aberrantes dans le graphique des scores sur la plateforme ACP. Si vous partez de données résumées (comme les moyennes, les écarts-types et les corrélations), vous perdez certaines informations sur vos données. Je ressens moi-même un certain désagrément lorsque je tente certaines analyses dans des manuels. Mais récemment, je pense que de plus en plus de manuels proposent des exemples de données brutes, plutôt que des données résumées. Si vous souhaitez que nous prenions en charge la saisie de données résumées (comme la plateforme SEM de JMP Pro) également pour les plateformes ACP et Analyse Factorielle, veuillez en faire la demande dans la liste de souhaits (comme l'a indiqué <A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/51054" target="_blank">@Ben_BarrIngh</A> ).</DIV>