Script para desviación estándar basado en +/- 1.5 sigmaHola,
Me gusta calcular la desviación estándar en función de la observación de datos con rangos de valores (+/- 1,5 sigma). ¿Hay alguien que pueda lograr eso en JMP?
Aprecio tu ayuda. Gracias
Re: Guión para la desviación estándar basada en +/- 1.5 sigmagracias jim Es de mucha ayuda.
Re: Guión para la desviación estándar basada en +/- 1.5 sigmaGracias Dave
Re: Guión para la desviación estándar basada en +/- 1.5 sigmaEl problema con el que se encuentra es que no estaba colocando en la fórmula un nombre de columna, como NPN1, sino una cadena literal de "NPN".La función Sustituir permite tomar el "NPN1" y sustituirlo por :NPN1.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
Current Data Table();
lstNames = dt << Get Column Names( string, Numeric );
For( i = 1, i <= N Items( lstNames ), i++,
If( Contains( lstNames[i], "NP" ) == 1,
sigma = Col Std Dev( Column( dt, lstNames[i] ) );
Eval(
Substitute(
Expr(
special std dev = Col Std Dev(
If( (Col Mean( __col__ ) - 1.5 * sigma) <= __col__ | __col__ >= (Col Mean( __col__ ) + 1.5 * sigma),
.,
__col__
)
)
),
Expr( __col__ ), Parse( ":" || lstNames[i] )
)
);
Show( sigma, special std dev );
)
);
Y aquí hay otra forma de especificar que la cadena literal debe tratarse como un nombre de columna
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
Current Data Table();
lstNames = dt << Get Column Names( string, Numeric );
For( i = 1, i <= N Items( lstNames ), i++,
If( Contains( lstNames[i], "NP" ) == 1,
sigma = Col Std Dev( Column( dt, lstNames[i] ) );
special std dev = Col Std Dev(
If(
(Col Mean( As Column( lstNames[i] ) ) - 1.5 * sigma) <= As Column( lstNames[i] ) | As Column( lstNames[i] ) >= (
Col Mean( As Column( lstNames[i] ) ) + 1.5 * sigma),
.,
As Column( lstNames[i] )
)
);
);
Show( sigma, special std dev );
);Re: Guión para la desviación estándar basada en +/- 1.5 sigmaEl argumento de Col Std Dev debe ser una referencia de columna, no el nombre de la cadena.Puede usar la función Columna para generar una referencia de columna a partir del nombre de la cadena:
sigma = Col Std Dev( Column( lstNames[i]) );
Re: Guión para la desviación estándar basada en +/- 1.5 sigmaHola Jim,
Seguí su secuencia de comandos y agregué una lista de columnas para calcular este sigma especial. Cuando ejecuto el script, obtengo
sigma = .;
desviacion estandar especial = .;
sigma = .;
desviacion estandar especial = .;
sigma = .;
Aquí está el guión:
Nombres predeterminados hasta aquí ( 1 );
dt = Abierto ( "$SAMPLE_DATA/capacidad de semiconductores.jmp" );
Tabla de datos actuales ();
lstNames = dt << Obtener nombres de columna (Cadena,Numérico);
para (yo = 1 , yo <= N elementos (lstNombres), i++,
si ( contiene (lstNombres[i], "NOTARIO PÚBLICO" ) == 1 ,
sigma = Desv estándar de columna ( lstNombres[i]);
Desv estándar especial = Desv estándar de columna ( Si ( ( Col Media ( lstNames[i] ) - 1.5 *sigma) <= lstNames[i] | lstNames[i] >= ( Col Media ( lstNames[i] ) + 1.5 *sigma), . ,lstNombres[i] ) );
Espectáculo (sigma, desarrollo estándar especial);
)
);
Aprecio tu ayuda. Gracias
@EN escribió:
Gracias Jim por la respuesta rápida y la solución. Esto es lo que quiero. yo también
@txnelson escribió:
es esto lo que quieres>
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
sigma = Col Std Dev( :npn1 );
special std dev = Col Std Dev( If( (Col Mean( :npn1 ) - 1.5*sigma) <= :npn1 | :npn1 >= (Col Mean( :npn1 ) + 1.5*sigma), ., :npn1 ) );
Show( sigma, special std dev );
Me gustaría hacer esto para muchas columnas en una tabla de datos y luego crear una nueva columna con valores de Pasa o Falla. Supongo que los límites de especificación para cada columna se pueden leer desde una tabla de datos y luego una nueva columna con "Pasa" o Falla "según los límites de control.
Si alguien ha hecho este tipo de trabajo, estaré interesado en aprender de eso. Gracias
Re: Guión para la desviación estándar basada en +/- 1.5 sigmaGracias Jim por la respuesta rápida y la solución. Esto es lo que quiero. yo también
@txnelson escribió:
es esto lo que quieres>
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
sigma = Col Std Dev( :npn1 );
special std dev = Col Std Dev( If( (Col Mean( :npn1 ) - 1.5*sigma) <= :npn1 | :npn1 >= (Col Mean( :npn1 ) + 1.5*sigma), ., :npn1 ) );
Show( sigma, special std dev );
Me gustaría hacer esto para muchas columnas en una tabla de datos y luego crear una nueva columna con valores de Pasa o Falla. Supongo que los límites de especificación para cada columna se pueden leer desde una tabla de datos y luego una nueva columna con "Pasa" o Falla "según los límites de control.
Si alguien ha hecho este tipo de trabajo, estaré interesado en aprender de eso. Gracias
Re: Guión para la desviación estándar basada en +/- 1.5 sigmaes esto lo que quieres>
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
sigma = Col Std Dev( :npn1 );
special std dev = Col Std Dev( If( (Col Mean( :npn1 ) - 1.5*sigma) <= :npn1 | :npn1 >= (Col Mean( :npn1 ) + 1.5*sigma), ., :npn1 ) );
Show( sigma, special std dev );