Integración de GrubbsOutlierTest2 en una tabla de datos multivariableAnteriormente, estoy tratando con un conjunto complejo de tablas de datos unidas usando scripts SQL. Con la ayuda de esta comunidad, he logrado crear un script basado en "aplicaciones" que crea gráficos y distribuciones basadas en las condiciones seleccionadas por el usuario.
La última parte de los problemas está tratando con esos molestos valores atípicos. Como de costumbre, mi problema radica en recorrer las condiciones de prueba para identificar los valores atípicos y luego eliminarlos del conjunto de datos. Entiendo que eliminarlos puede ser riesgoso, pero dadas nuestras pruebas complejas, nuestras piezas se encuentran en una distribución estrecha o fallan catastróficamente. Estoy intentando implícito si g> g0 ve a encontrar los valores atípicos y elimínalos.
Adjunto: 3 subconjuntos de la tabla principal y la tabla principal.
encontré esto HILO eso podría hacerlo en una sola columna pero, de nuevo, ¿cómo se recorre todo?
Tengo algunos scripts que recorren algunas de estas condiciones, pero no puedo encontrar la combinación correcta.
De nuevo, gracias por la ayuda.
Re: Integración de GrubbsOutlierTest2 en una tabla de datos multivariableActualización: Logré que GrubbsOutlier hiciera una especie de trabajo. Puedo tomar una condición de prueba y obtener lo que necesito. Agarré un For Loop para capturar dos condiciones de prueba, sin embargo, se bloquea.
Puede ejecutar este script contra los datos de muestra _ 1 obleas (test_3) .jmp y ver la salida que estoy buscando ... Agradecería cualquier ayuda para agregar el 2nd Trmode e incluso hacer esto en un conjunto de datos con datos de muestra de múltiples obleas _ 6 obleas (test_3) .jmp
Una vez resuelto esto, intentaré hacer un If (g> g0) Loc () y luego eliminarlos del conjunto de datos.
Gracias
dt = Current Data Table();
dtsum = dt << Summary(
Group( :channel, :trmode ),
Interquartile Range( :Output ),
Freq( "None" ),
Weight( "None" ),
// invisible
);
Current Data Table( dt );<BR />
// <INSERT for="" loop="" here="">
dist = dt << Distribution(
Y( Column( "Output" )),
By( Column( "channel" ) ),
Normal Quantille Plot( 1 ),
Fit Distribution(
Normal(
Goodness of FIt( 1 )
)
),<BR />// Added a For() Loop located at the botton of the screen, the script hangs up<BR />// Where( dt :trmode == mode )
Where( dt :trmode == "Tx" )<BR /><BR /> );
distr = dist << Report;
bCol = Column( "channel ");
Summarize( group = By( bCol ));
yy = Column( "Output" ) << Get As Matrix;
exRows = dt << Get Excluded Rows();
yy[exRows] = .;
For( i = 1, i <= N Items( group ), i++,
groupName = Trim( Word( 2, distr[i][OutlineBox(1)] << Get Title, "=" ) );
getRows = dt << Get Rows Where( bCol[] == groupName );
yVal = yy[getRows];
yVal[Loc( Is Missing( yVal ) )] = [];
n = N Row( yVal );
a = 0.05;
t0Sqr = t Quantile( 1 - a/(2*n), n-2 )^2;
g = Maximum( Abs( yVal - Mean( yVal ) ) ) / Std Dev( yVal );
g0 = ((n-1)/Sqrt(n)) * Sqrt( t0Sqr / (n - 2 + t0Sqr) );
distr[i][Outline Box(2)] << Append(
Outline Box( "Grubbs' Outlier Test",
Table Box(
String Col Box( "Statistic", {"G", "G("||Char(a)||")"} ),
Number Col Box( "Estimate", Matrix( {g, g0} ) )
),
Text Box(
If( g>g0,
"Outlier detected",
"No outlier detected"
)
)
)
);
);
// For Loop I was trying to use
// For( i = 1, i <= N Rows( dtsum ), i++,
// mode = dtsum:trmode[i];
// < Insert Script From Above >
// );
</INSERT>
Re: Integración de GrubbsOutlierTest2 en una tabla de datos multivariableSí, señor, sin embargo, me gustaría usar eso en una forma automatizada que contiene g> g0. Luego, con ese cálculo para cada prueba, el canal localiza los valores atípicos y luego los excluye del conjunto de datos en lugar de hacerlo manualmente.
Re: Integración de GrubbsOutlierTest2 en una tabla de datos multivariableEl script para la prueba de valores atípicos de Grubb puede usar una variable de agrupación en el rol Por análisis.
Re: Integración de GrubbsOutlierTest2 en una tabla de datos multivariablePido disculpas por no haber comunicado esto claramente. test_1 incluye 3 {7000,7100,7200} de set_id diferentes.
set_id 7000 tiene 1 canal (conmutación) + 2 suministros = 2 salidas de prueba
set_id 7100 tiene 16 canales + 2 suministros = 32 salidas de prueba
set_id 7200 tiene 16 canales + 2 suministros = 32 salidas de prueba
Total = 66
Me adelanté y olvidé que set_id: 7000 es solo 2 condiciones. las 3 pruebas = 105
También he estado pensando un poco y necesito reescribir la publicación original. Creo que será más fácil subcontratar cada una de las pruebas (_1, _2, _3) y luego hacer lo que necesito hacer con las distriubciones. La tabla principal es buena para mis gráficos. Los subconjuntos serán las pruebas y condiciones de prueba que seleccionamos en ...
Re: Integración de GrubbsOutlierTest2 en una tabla de datos multivariableCentrémonos en tu mesa # 1 abajo, y solo en 'test_1' dentro de eso. Creo que está diciendo que desea considerar cada una de las "condiciones de bucle" de 3 * 2 * 16 = 96 para definir un grupo y buscar valores atípicos dentro de cada uno de estos grupos. ¿Es correcto, por favor? Pero la tabla adjunta muestra que # 1 tiene 105 grupos de este tipo, no 96?