<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />El MSA de Kaiser (también llamado KMO) es una métrica que se usa con frecuencia junto con la matriz de correlación anti-imagen para juzgar la idoneidad de un conjunto de variables para el análisis factorial. Puedo obtenerlos fácilmente usando SAS (factor de proceso). ¿Alguien sabe cómo obtenerlos en JMP (estoy usando JMP Pro versión 9)?Veo que hubo una publicación a principios de 2010 sobre KMO y la respuesta fue calcularlos literalmente exportando la matriz de correlación parcial/inversa a Excel. Espero que a estas alturas, los usuarios de JMP o soem hayan creado un script o algunas opciones que lo hagan automáticamente. Gracias.
¡No importa! Cometí un error: funciona bien.
Estoy usando el mismo script de MSA publicado en 2012. Funcionó bien en versiones anteriores de JMP. Pero, en JMP Pro 15.1.0, los cálculos de MSA parecen estar mal. ¿Puedes ayudarme?
¡El código funcionó a las mil maravillas! Ya lo verifiqué en varios conjuntos de datos y los resultados son idénticos a los que obtengo al ejecutar SAS. Muchas gracias.
Amigos de JMP (si están escuchando): incorporen este código/jsl en la próxima versión de JMP como una opción de triángulo rojo de la plataforma de correlación multivariante.
A ver si este código es útil. Solo pude compararlo con los datos de la muestra socioeconómica y los resultados fueron los mismos que los resultados de SAS que se muestran en los documentos de SAS en línea. Úselo bajo su propio riesgo y, sin duda, realice pruebas en tantos conjuntos de datos para los que tenga resultados de 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) ) )
)
);