Impossibile salvare un numero variabile di tabelle Eigenvector in una singola tabella di dati dopo un'analisi PCACiao,
Ho cercato di mettere insieme uno script per eseguire un'analisi PCA e salvare gli autovettori risultanti.
Il PCA include un 'by' che risulta in diverse analisi PCA indipendenti. Il numero dipende dal numero di categorie nella colonna (specimen_material_type) utilizzate per popolare l'opzione 'by'
Lo script funziona alla grande con una sola importante eccezione: solo la tabella degli autovettori della prima categoria viene salvata in una tabella di dati nonostante si usi la funzione "crea tabella di dati combinati".
Vorrei modificare lo script in modo che possa contenere un numero qualsiasi di categorie fornite da 'by: specimen_material-type' in quanto varierà dall'analisi.
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;Ogni suggerimento sarà molto apprezzato.
molte grazie
Sebastien
Ri: Impossibile salvare un numero variabile di tabelle Eigenvector in una singola tabella di dati dopo un'analisi PCASembra che tu sia molto vicino. Il codice qui sotto funziona per te?
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");
Come già sapete, "MakeCombinedDataTable" non dovrebbe preoccuparsi del numero di livelli nel gruppo "Per" (nel caso sopra, solo due).
Ri: Impossibile salvare un numero variabile di tabelle Eigenvector in una singola tabella di dati dopo un'analisi PCACiao Ian
Grazie mille per la guida. Il codice funziona bene, ma per qualche motivo funziona solo con un numero limitato di variabili assegnate a Y. Se aumento il numero di variabili, a un certo punto diventa incapace di raggruppare le varie tabelle degli autovettori.
Ho il sospetto che la ragione potrebbe essere che per il numero di vettori autoveni segnalati per ciascuna categoria "By" varia leggermente quando inizio ad aumentare il numero di variabili con 65 vs 64 vettori (ho solo 2 categorie nella mia tabella di prova del concetto). Man mano che diminuisce progressivamente il numero di variabili, c'è un punto in cui il numero di vettori diventa lo stesso in quel momento, le tabelle degli autovettori vengono combinate come previsto.
C'è un modo per controllare il numero di vettori segnalati? Non ho bisogno di segnalare tutti i vettori eigen, solo fino a 3 o 4.
In alternativa, anche trovare un modo per salvare ogni tabella di autovettori separatamente e concatenarli in seguito funzionerebbe. Tuttavia, non sono sicuro di come eseguire il ciclo tra le categorie "By" in quanto variano in nome e numero.
Tutti i suggerimenti sarebbero apprezzati.
Sebastien