你好,
我一直在嘗試編寫一個腳本來運行PCA分析並保存生成的特徵向量。
PCA包含一個“ by”,可以進行幾個獨立的PCA分析。其數量取決於用於填充“ by”選項的列(specimen_material_type)中的類別數量
該腳本可以很好地運行,但有一個主要例外:儘管使用了“合併組合數據表”功能,但只有第一類的特徵向量表才保存到數據表中。
我想對腳本進行調整,以使其可以容納“ by:sample_material-type”提供的任意數量的類別,因為它與分析有所不同。
dt = Data Table( "split by symbol" );
colList = dt << Get Column Names( numeric );
obj = dt << Principal Components(
Y( Eval( colList ) ),
Estimation Method( "Wide" ),
"on Correlations",
by( :specimen_material_type ),
Summary Plots( Label variables( 0 ) ),
Eigenvectors( 1 ),
Arrow Lines( 0 ),
SendToReport(
Dispatch(
{"Summary Plots"},
"PCA Summary Plots",
FrameBox,
{Row Legend(
test_article,
Color( 1 ),
Color Theme( "JMP Default" ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
);
obj << Save Principal Components( 3 );
Report( obj[1] )[Outline Box( "Eigenvectors" )][Table Box( 1 )] << Make Combined Data Table;任何建議將不勝感激。
非常感謝
塞巴斯蒂安
看起來你很親近。以下代碼對您有用嗎?
NamesDefaultToHere(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
pca = dt << Principal Components(Y( :height, :weight ), Eigenvectors( 1 ), By(:sex));
dtev = Report(pca[1])[OutlineBox("Eigenvectors")][TableBox(1)] << makeCombinedDataTable;
dtev << setName("Eigenvexctors with By Group");
如您所知,“ MakeCombinedDataTable”不必關心“ By”組中的級別數(在上述情況下,僅為兩個)。
嗨,伊恩,
非常感謝您的指導。您的代碼運行良好,但是由於某種原因,如果僅將分配給Y的少量變量使用,則由於某些原因。如果我增加變量的數量,則有時無法將各種特徵向量表分組。
我懷疑原因可能是當我開始使用65 vs 64矢量增加變量的數量時,每個“按”類別報告的特徵向量的數量略有不同(概念證明表中只有2個類別)。隨著變量數量的逐漸減少,在某個點上向量的數量變得相同,在這一點上,特徵向量表將按預期進行合併。
有沒有辦法控制正在報告的載體數量?我不需要報告所有特徵向量,最多只需報告3或4。
或者,找到一種方法來分別保存每個特徵向量表,然後再將它們串聯起來。但是,我不確定如何遍歷每個“按”類別,因為它們的名稱和數量會有所不同。
任何建議,將不勝感激。
塞巴斯蒂安