No se puede guardar un número variable de tablas de vectores propios en una sola tabla de datos después de un análisis de PCAHola,
He estado tratando de armar un script para ejecutar un análisis de PCA y guardar los vectores propios resultantes.
El PCA incluye un 'por' que da como resultado varios análisis de PCA independientes. El número de los cuales depende del número de categorías en la columna (specimen_material_type) que se usa para completar la opción 'por'
El script funciona muy bien con una excepción importante: solo la tabla de vectores propios de la primera categoría se guarda en una tabla de datos a pesar de usar la función "crear tabla de datos combinada".
Me gustaría ajustar el script para que pueda acomodar cualquier número de categorías proporcionadas por 'by: specimen_material-type' ya que variará del análisis.
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;Cualquier sugerencia sería muy apreciada.
Muchas gracias
Sebastien
Re: No se puede guardar un número variable de tablas de vectores propios en una sola tabla de datos después de un análisis de PCAParece que estás muy cerca. ¿El siguiente código funciona para usted?
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");
Como ya sabe, 'MakeCombinedDataTable' no debería preocuparse por el número de niveles en el grupo 'Por' (en el caso anterior, solo dos).
Re: No se puede guardar un número variable de tablas de vectores propios en una sola tabla de datos después de un análisis de PCAHola, Ian,
Muchas gracias por la orientación. Su código funciona bien, pero por alguna razón si solo funciona con un número pequeño de variables asignadas a Y. Si aumento el número de variables, en algún momento se vuelve incapaz de agrupar las diferentes tablas de vectores propios.
Sospecho que la razón podría ser que el número de vectores propios reportados para cada categoría 'By' varía ligeramente cuando comienzo a aumentar el número de variables con 65 vs 64 vectores (solo tengo 2 categorías en mi tabla de prueba de concepto). A medida que disminuye progresivamente el número de variables, hay un punto en el que el número de vectores se convierte en el mismo punto en el que las tablas de vectores propios se combinan como se esperaba.
¿Hay alguna forma de controlar el número de vectores que se informan? No necesito informar todos los vectores propios, solo hasta 3 o 4.
Alternativamente, encontrar una manera de guardar cada tabla de vectores propios por separado y concatenarlas después también funcionaría. Sin embargo, no estoy seguro de cómo recorrer cada categoría 'Por' ya que variarán en nombre y número.
Cualquier sugerencia sera apreciada.
Sebastien