Eigenvektortabellen mit variabler Anzahl können nach einer PCA-Analyse nicht in einer einzelnen Datentabelle gespeichert werdenHallo,
Ich habe versucht, ein Skript zusammenzustellen, um eine PCA-Analyse auszuführen und die resultierenden Eigenvektoren zu speichern.
Die PCA enthält ein "by", das zu mehreren unabhängigen PCA-Analysen führt. Die Anzahl hängt von der Anzahl der Kategorien in der Spalte (specimen_material_type) ab, die zum Auffüllen der Option 'by' verwendet werden
Das Skript funktioniert mit einer großen Ausnahme hervorragend: Trotz Verwendung der Funktion "Kombinierte Datentabelle erstellen" wird nur die Eigenvektortabelle aus der ersten Kategorie in einer Datentabelle gespeichert.
Ich möchte das Skript so optimieren, dass es eine beliebige Anzahl von Kategorien aufnehmen kann, die vom Typ 'by: specimen_material' bereitgestellt werden, da es von der Analyse abweicht.
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;Anregungen wäre sehr dankbar.
Vielen Dank
Sebastien
Betreff: Eine Eigenvektortabelle mit variabler Anzahl kann nach einer PCA-Analyse nicht in einer einzelnen Datentabelle gespeichert werdenSieht aus wie Sie sehr nah sind. Funktioniert der folgende Code für Sie?
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");
Wie Sie bereits wissen, sollte sich 'MakeCombinedDataTable' nicht um die Anzahl der Ebenen in der Gruppe 'By' kümmern (im obigen Fall nur um zwei).
Betreff: Eine Eigenvektortabelle mit variabler Anzahl kann nach einer PCA-Analyse nicht in einer einzelnen Datentabelle gespeichert werdenHallo Ian,
Vielen Dank für die Anleitung. Ihr Code funktioniert gut, aber aus irgendeinem Grund funktioniert er nur mit einer kleinen Anzahl von Variablen, die Y zugewiesen sind. Wenn ich die Anzahl der Variablen erhöhe, kann er die verschiedenen Eigenvektortabellen irgendwann nicht mehr gruppieren.
Ich vermute, der Grund könnte sein, dass die Anzahl der Eigenvektoren, die für jede 'By'-Kategorie gemeldet werden, geringfügig variiert, wenn ich anfange, die Anzahl der Variablen mit 65 gegenüber 64 Vektoren zu erhöhen (ich habe nur 2 Kategorien in meiner Proof-of-Concept-Tabelle). Wenn die Anzahl der Variablen schrittweise verringert wird, gibt es einen Punkt, an dem die Anzahl der Vektoren gleich wird. An diesem Punkt werden die Eigenvektortabellen wie erwartet kombiniert.
Gibt es eine Möglichkeit, die Anzahl der gemeldeten Vektoren zu steuern? Ich muss nicht alle Eigenvektoren angeben, nur bis zu 3 oder 4.
Alternativ würde es auch funktionieren, einen Weg zu finden, um jede Eigenvektortabelle separat zu speichern und sie anschließend zu verketten. Ich bin mir jedoch nicht sicher, wie ich die einzelnen 'By'-Kategorien durchlaufen soll, da sie sich in Name und Nummer unterscheiden.
Anregungen wäre dankbar.
Sebastien