<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />L'MSA di Kaiser (chiamato anche KMO) è una metrica che viene spesso utilizzata insieme alla matrice di correlazione anti-immagine per giudicare l'idoneità di un insieme di variabili per l'analisi fattoriale. Posso ottenerli facilmente utilizzando SAS (fattore proc). Qualcuno sa come ottenerli in JMP (sto usando JMP Pro versione 9)?Vedo che all'inizio del 2010 c'era un post su KMO e la risposta era calcolarli letteralmente esportando la matrice di correlazione parziale/inversa in Excel. Spero che ormai JMP o alcuni utenti abbiano escogitato uno script o alcune opzioni che lo facciano automaticamente. Grazie.
Non importa! Ho fatto un errore: funziona bene.
Sto usando lo stesso script MSA pubblicato nel 2012. Funzionava bene con le versioni precedenti di JMP. Ma su JMP Pro 15.1.0 i calcoli MSA sembrano essere disattivati. Per favore, puoi aiutare?
Il codice ha funzionato a meraviglia!!! L'ho verificato su diversi set di dati e i risultati sono identici a ciò che ottengo dall'esecuzione di SAS. Grazie mille.
Gente di JMP (se state ascoltando) - vi preghiamo di incorporare questo codice/jsl nella prossima versione di JMP come opzione del triangolo rosso dalla piattaforma di correlazione multivariata.
Vedi se questo codice è utile. Sono stato in grado di confrontarlo solo con i dati del campione socioeconomico e i risultati erano gli stessi dei risultati SAS mostrati nei documenti SAS online. Utilizzare a proprio rischio e sicuramente testare su tutti i set di dati per i quali si dispone dei risultati 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) ) )
)
);