<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Le MSA de Kaiser (également appelé KMO) est une métrique fréquemment utilisée avec la matrice de corrélation anti-image pour juger de la pertinence d'un ensemble de variables pour l'analyse factorielle. Je peux les obtenir facilement en utilisant SAS (facteur proc). Quelqu'un sait-il comment les obtenir dans JMP (j'utilise JMP Pro version 9) ?Je vois qu'il y avait un article au début de 2010 sur KMO et la réponse était de les calculer littéralement en exportant la matrice de corrélation partielle/inverse vers Excel. J'espère que maintenant, JMP ou certains utilisateurs ont mis au point un script ou des options qui le font automatiquement. Merci.
Peu importe! J'ai fait une erreur - ça marche bien.
J'utilise le même script MSA publié en 2012. Cela fonctionnait bien sur les versions antérieures de JMP. Mais, sur JMP Pro 15.1.0, les calculs MSA semblent être erronés. Peux-tu aider s'il te plait?
Le code a fonctionné comme un charme !!! Je l'ai vérifié sur plusieurs ensembles de données et les résultats sont identiques à ce que j'obtiens de l'exécution de SAS. Merci beaucoup.
Les gens de JMP (si vous écoutez) - veuillez incorporer ce code/jsl dans la prochaine version de JMP en tant qu'option de triangle rouge sous forme de plate-forme de corrélation multivariée.
Voir si ce code est utile. J'ai seulement pu le vérifier par rapport aux données de l'échantillon socio-économique et les résultats étaient les mêmes que les résultats SAS présentés dans les documents SAS en ligne. Utilisez à vos risques et périls et testez certainement sur autant d'ensembles de données que pour lesquels vous avez des résultats MSA.
/* Next line if want to open a specific JMP table */
//dt = Open( "$SAMPLE_DATA/Socioeconomic.jmp" );
/* Next line if want to have user pick a JMP data table */
//dt = Open();
/* No Open statement if want to run against the current data table */
cd = Column Dialog( Col ID = ColList( "Select Columns" ) );
names = cd["Col ID"];
nsel = N Items( names );
mv = Multivariate(
Y( Eval( names ) ),
Estimation Method( "Row-wise" ),
Scatterplot Matrix( Density Ellipses( 1 ), Shaded Ellipses( 0 ), Ellipse Color( 3 ) ),
Partial Correlations( 1 )
);
rmv = Report( mv );
dtcorr = rmv["Correlations"][Matrix Box( 1 )] << make into data table;
dtpart = rmv["Partial Corr"][Matrix Box( 1 )] << make into data table;
stkcorr = dtcorr << Stack(
columns( Eval( names ) ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);
stkpart = dtpart << Stack(
columns( Eval( names ) ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);
Close( dtcorr, nosave );
Close( dtpart, nosave );
stkcorr << New Column( "DataSqr", formula( Data ^ 2 ) );
stkpart << New Column( "DataSqr", formula( Data ^ 2 ) );
sumsqrcorr = Col Sum( (stkcorr:"DataSqr") ) - nsel;
sumsqrpart = Col Sum( (stkpart:"DataSqr") );
MSA = sumsqrcorr / (sumsqrcorr + sumsqrpart);
//Show( MSA );
Summarize( bycorr = by( stkcorr:"Row" ), sumsqrcorrby = Sum( stkcorr:"DataSqr" ) );
Summarize( bypart = by( stkpart:"Row" ), sumsqrpartby = Sum( stkpart:"DataSqr" ) );
Close( stkcorr, nosave );
Close( stkpart, nosave );
//show(sumsqrcorrby, sumsqrpartby);
//show(bycorr, bypart);
sumsqrcorrby = sumsqrcorrby - 1;
//show(sumsqrcorrby);
MSAvar = {};
For( i = 1, i <= nsel, i++,
MSAvar = sumsqrcorrby / (sumsqrcorrby + sumsqrpartby);
//Show( bycorr, MSAvar );
);
sr = New Window( "Summary Results",
V List Box(
Table Box( String Col Box( "Variable", bycorr ), Number Col Box( "MSA", MSAvar ) ),
Text Box( "Overall MSA = " || Char( round(MSA, 5) ) )
)
);