Script per deviazione standard basato su +/- 1,5 sigmaCIAO,
Mi piace calcolare la deviazione standard in base all'osservazione dei dati con intervalli di valori (+/- 1,5 sigma). C'è qualcuno che puoi ottenere in JMP?
Apprezzo il vostro aiuto. Grazie
Ri: Script per deviazione standard basato su +/- 1,5 sigmaGrazie Jim. È molto utile.
Ri: Script per deviazione standard basato su +/- 1,5 sigmaGrazie Dave.
Ri: Script per deviazione standard basato su +/- 1,5 sigmaIl problema che stai riscontrando è che stavi inserendo nella formula non un nome di colonna, come NPN1, ma piuttosto una stringa letterale di "NPN".La funzione Sostituisci consente di prendere "NPN1" e sostituirlo in :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 );
)
);
Ed ecco un altro modo per specificare che la stringa letterale deve essere trattata come un nome di colonna
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 );
);Ri: Script per deviazione standard basato su +/- 1,5 sigmaL'argomento di Col Std Dev deve essere un riferimento di colonna e non il nome della stringa.È possibile utilizzare la funzione Column per generare un riferimento di colonna dal nome della stringa:
sigma = Col Std Dev( Column( lstNames[i]) );
Ri: Script per deviazione standard basato su +/- 1,5 sigmaCiao Jim,
Ho seguito il tuo script e ho aggiunto un elenco di colonne per calcolare questo sigma speciale. Quando eseguo lo script, ottengo
sigma = .;
speciale std dev = .;
sigma = .;
speciale std dev = .;
sigma = .;
Ecco la sceneggiatura:
I nomi predefiniti sono qui ( 1 );
tt = Aprire ( "$SAMPLE_DATA/capacità semiconduttore.jmp" );
Dati attuali Tabella ();
lstNames = dt << Ottieni nomi di colonna (Stringa,Numerico);
per (io = 1 , io <= N articoli (lstNames), i++,
Se ( contiene (lstNomi[i], "NP" ) == 1 ,
sigma = Col Std Dev ( lstNames[i]);
speciale std dev = Col Std Dev ( Se (( Col Media ( lstNames[i] ) - 1.5 *sigma) <= lstNames[i] | lstNomi[i] >= ( Col Media ( lstNames[i] ) + 1.5 *sigma), . ,lstNames[i] ) );
Spettacolo ( sigma, sviluppo std speciale );
)
);
Apprezzo il vostro aiuto. Grazie
@A ha scritto:
Grazie Jim per il rapido feedback e la soluzione. Questo quello che voglio. Anch'io
@txnelson ha scritto:
è questo quello che vuoi>
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 );
ike per farlo per molte colonne in una tabella di dati e quindi creare una nuova colonna con valori Pass o Fail. Suppongo che i limiti delle specifiche per ciascuna colonna possano essere letti da una tabella di dati e quindi da una nuova colonna con "Pass" o Fail "in base ai limiti di controllo.
Se qualcuno ha svolto questo tipo di lavoro, sarò interessato a imparare da quello. Grazie
Ri: Script per deviazione standard basato su +/- 1,5 sigmaGrazie Jim per il rapido feedback e la soluzione. Questo quello che voglio. Anch'io
@txnelson ha scritto:
è questo quello che vuoi>
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 );
ike per farlo per molte colonne in una tabella di dati e quindi creare una nuova colonna con valori Pass o Fail. Suppongo che i limiti delle specifiche per ciascuna colonna possano essere letti da una tabella di dati e quindi da una nuova colonna con "Pass" o Fail "in base ai limiti di controllo.
Se qualcuno ha svolto questo tipo di lavoro, sarò interessato a imparare da quello. Grazie
Ri: Script per deviazione standard basato su +/- 1,5 sigmaè questo quello che vuoi>
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 );