<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />カイザーの MSA (KMO とも呼ばれます) は、因子分析のための一連の変数の適合性を判断するために、反イメージ相関行列と共に頻繁に使用されるメトリックです。 これらは、SAS (proc factor) を使用して簡単に取得できます。 これらを JMP で取得する方法を知っている人はいますか (私は JMP Pro バージョン 9 を使用しています)。2010 年初頭に KMO に関する投稿があり、その答えは、部分/逆相関行列を Excel にエクスポートして文字通りこれらを計算することでした。 JMP や soem のユーザーが、自動的に実行するスクリプトやいくつかのオプションを思いついたことを願っています。 ありがとう。
どうでも! 間違えました - 正常に動作しています。
2012 年に投稿されたものと同じ MSA スクリプトを使用しています。 以前のバージョンの JMP では問題なく動作しました。 しかし、JMP Pro 15.1.0 では、MSA 計算がオフになっているようです。 助けていただけますか?
コードは魅力のように機能しました!!! 私はいくつかのデータセットでそれをチェックしましたが、結果はSASの実行から得たものと同一です。 どうもありがとう。
JMP 関係者 (聞いている場合) - このコード/jsl を次のバージョンの JMP に、多変量相関プラットフォームからの赤い三角形のオプションとして組み込んでください。
このコードが役立つかどうかを確認してください。 私はそれを社会経済的なサンプルデータと照合することしかできず、結果はオンラインのSASドキュメントに示されているSASの結果と同じでした. ご自身の責任で使用し、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) ) )
)
);