Impossible d'enregistrer un nombre variable de tables Eigenvector dans une seule table de données après une analyse PCABonjour,
J'ai essayé de créer un script pour exécuter une analyse PCA et enregistrer les vecteurs propres résultants.
L'ACP comprend un «by» qui donne lieu à plusieurs analyses indépendantes de l'ACP. Le nombre dépend du nombre de catégories dans la colonne (specimen_material_type) utilisées pour remplir l'option 'by'
Le script fonctionne très bien à une exception près: seule la table des vecteurs propres de la première catégorie est enregistrée dans une table de données malgré l'utilisation de la fonction "créer une table de données combinée".
Je voudrais modifier le script afin qu'il puisse accueillir n'importe quel nombre de catégories fournies par le 'by: specimen_material-type' car il variera de l'analyse.
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;Toutes les suggestions seraient grandement appréciées.
Merci beaucoup
Sébastien
Re: Impossible d'enregistrer un nombre variable de tables de vecteur propre dans une seule table de données après une analyse PCAOn dirait que tu es très proche. Le code ci-dessous vous convient-il?
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");
Comme vous le savez déjà, «MakeCombinedDataTable» ne devrait pas se soucier du nombre de niveaux dans le groupe «By» (dans le cas ci-dessus, seulement deux).
Re: Impossible d'enregistrer un nombre variable de tables de vecteur propre dans une seule table de données après une analyse PCASalut Ian,
Merci beaucoup pour les conseils. Votre code fonctionne bien, mais pour une raison quelconque, ne fonctionne qu'avec un petit nombre de variables affectées à Y. Si j'augmente le nombre de variables, il devient à un moment donné incapable de regrouper les différentes tables de vecteurs propres.
Je soupçonne que la raison pourrait être que le nombre de vecteurs propres signalés pour chaque catégorie `` By '' varie légèrement lorsque je commence à augmenter le nombre de variables avec 65 vs 64 vecteurs (je n'ai que 2 catégories dans ma table de preuve de concept). Lorsque le nombre de variables diminue progressivement, il y a un point où le nombre de vecteurs devient le même à quel point, les tables de vecteurs propres se combinent comme prévu.
Existe-t-il un moyen de contrôler le nombre de vecteurs signalés? Je n'ai pas besoin de signaler tous les vecteurs propres, juste jusqu'à 3 ou 4.
Alternativement, trouver un moyen d'enregistrer chaque table de vecteurs propres séparément et les concaténer ensuite fonctionnerait également. Cependant, je ne suis pas sûr de savoir comment parcourir chaque catégorie `` By '' car elles varieront en nom et en nombre.
Toute suggestion serait appréciée.
Sébastien