Desviación absoluta media -> Exportar a la tabla para obtener más tSNEQueridos todos,
Actualmente estoy trabajando en un proyecto con 57 muestras y> 800 000 variables (ver imagen adjunta). Ahora me gustaría reducir las variables utilizando solo las que tienen mayor desviación absoluta media (MAD). El objetivo sería seguir procesando los datos con PC Analysis, seguido de un t-SNE (estoy usando el complemento JMP agradable).
Hasta ahora estoy luchando con la identificación de las variables con mayor MAD y exporto directamente estas variables a una tabla de datos.
Gracias de antemano Saludos cordiales
Palmadita
Re: Media de desviación absoluta -> Exportar a tabla para obtener más tSNEAquí hay un ejemplo simple de generar el MAD. Le sugiero que lo convierta en una función y luego cree una nueva tabla de datos con una fila y sus> 800000 columnas.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
theMatrix = Column( dt, "height" ) << get as matrix;
MAD = Quantile( .5, Abs( theMatrix - Quantile( .5, theMatrix ) ) );
Re: Media de desviación absoluta -> Exportar a tabla para obtener más tSNEEste es un ejemplo más completo que puede usar directamente simplemente cambiando la referencia a la tabla de datos "dt" y la columna en la tabla de resultados para eliminar (es decir, Ejemplo de identificacion)
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
dt << select where(row()==1);
dtMAD = dt << Subset(
Selected Rows( 0 ),
Rows( [1] ),
Selected columns only( 0 )
);
dtMAD << delete columns({"Lot_id","wafer","Wafer id in lot ID","site"});
For( i = 1, i <= N Cols( dtMAD ), i++,
theMatrix = Column( dt, Column( dtMAD, i ) << get name ) << get as matrix;
Column( dtMAD, i )[1] = Quantile( .5, Abs( theMatrix - Quantile( .5, theMatrix ) ) );
);Re: Media de desviación absoluta -> Exportar a tabla para obtener más tSNEInicialmente, leí mal 'mediana' como 'media' y escribí lo siguiente: toma unos segundos en mi Mac, pero casi todo eso se hace en la tabla de ejemplo:
NamesDefaultToHere(1);
// Make a table with 'nc' columns and 'nr' rows to use . . .
nc = 1000;
nr = 57;
dt = NewTable("MAD Example");
for(c=1, c<=nc, c++,
dt << NewColumn("Col "||Char(c), Numeric, Continuous, Formula(RandomNormal(0, 1)));
);
dt << addRows(nr);
dt << runFormulas;
// Start Here: Calculate MAD for each column . . .
dt = CurrentDataTable();
mat = dt << getAsMatrix;
// (1): Get the mean of each column in a row vector
mean = VMean(mat);
// (2): 'Explode' this to make a matrix congruant with 'mat'
meanMat = Repeat(mean, nr);
// (3): Get the Absolute deviations
AD = Abs(mat - meanMat);
// (4): Get the MAD
MAD = VMean(AD);
// Find the column numbers of the 'nc2' columns that have the biggest MAD values
nc2 = Round(nc/10, 0);
rankMAD = Rank(MAD);
topRandMAD = rankMAD[(nc-nc2)+1::nc];
// Make a second table
dt2 = NewTable("Top "||Char(nc2)||" Largest MAD Values from "||(dt << getName),
NewColumn("Column Number", Numeric, Nominal, Values(topRandMAD)),
NewColumn("MAD", Numeric, Continuous, Values(MAD[topRandMAD]))
);
Además de @txnelson enfoque, observo que la plataforma de Distribución dará la desviación absoluta media. Sin embargo, con 800,000 columnas, podría esperar que su enfoque sea más rápido.
Re: Media de desviación absoluta -> Exportar a tabla para obtener más tSNEMuchas gracias @txnelson y @ian_jmp En principio sus sugerencias funcionaron. Desafortunadamente, utilicé una estación de trabajo lenta para la prueba, por lo que no pude procesar todas las variables, tengo que verificarlas en un sistema más rápido. Todo lo mejor, Pat