Script pour l'écart type basé sur +/- 1,5 sigmaSalut,
J'aime calculer l'écart type en examinant des données avec des plages de valeurs (+/- 1,5 sigma). Y a-t-il quelqu'un qui peut y parvenir dans JMP ?
J'apprécie ton aide. Merci
Re : Script pour l'écart type basé sur +/- 1,5 sigmaMerci Jim. C'est très utile.
Re : Script pour l'écart type basé sur +/- 1,5 sigmaMerci Dave.
Re : Script pour l'écart type basé sur +/- 1,5 sigmaLe problème que vous rencontrez est que vous ne placiez pas dans la formule un nom de colonne, comme NPN1, mais plutôt une chaîne littérale de "NPN".La fonction Substitute permet de prendre le "NPN1" et de le substituer en :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 );
)
);
Et voici une autre façon de spécifier que la chaîne littérale doit être traitée comme un nom de colonne
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 : Script pour l'écart type basé sur +/- 1,5 sigmaL'argument de Col Std Dev doit être une référence de colonne et non le nom de la chaîne.Vous pouvez utiliser la fonction Column pour générer une référence de colonne à partir du nom de la chaîne :
sigma = Col Std Dev( Column( lstNames[i]) );
Re : Script pour l'écart type basé sur +/- 1,5 sigmaSalut Jim,
J'ai suivi votre script et ajouté une liste de colonnes pour calculer ce sigma spécial. Lorsque j'exécute le script, j'obtiens
sigma = .;
écart type spécial = .;
sigma = .;
écart type spécial = .;
sigma = .;
Voici le scénario :
Noms par défaut ici ( 1 );
dt = Ouvrir ( "$SAMPLE_DATA/possibilité de semi-conducteur.jmp" );
Tableau des données actuelles ();
lstNames = dt << Obtenir les noms de colonne (Chaîne,Numérique);
pour (je = 1 , je <= N articles (noms de famille), i++,
si ( contient (noms[i], "NP" ) == 1 ,
sigma = Col Std Dev ( nom_de_liste[i]);
dev std spécial = Col Std Dev ( Si ( ( Col moyenne ( lstNames[i] ) - 1.5 *sigma) <= lstNames[i] | lstNames[i] >= ( Col moyenne ( nom_liste[i] ) + 1.5 *sigma), . ,lstNames[i] ) );
Montrer ( sigma, développement std spécial );
)
);
J'apprécie ton aide. Merci
@À écrit:
Merci Jim pour les commentaires rapides et la solution. C'est ce que je veux. je laussi
@txnelson écrit:
c'est ça que tu veux >
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 faire cela pour de nombreuses colonnes dans une table de données, puis créer une nouvelle colonne avec des valeurs de réussite ou d'échec. Je suppose que les limites de spécification pour chaque colonne peuvent être lues à partir d'une table de données, puis d'une nouvelle colonne avec "Réussite" ou Échec" en fonction des limites de contrôle.
Si quelqu'un a fait ce type de travail, je serai intéressé d'apprendre de cela. Merci
Re : Script pour l'écart type basé sur +/- 1,5 sigmaMerci Jim pour les commentaires rapides et la solution. C'est ce que je veux. je laussi
@txnelson écrit:
c'est ça que tu veux >
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 faire cela pour de nombreuses colonnes dans une table de données, puis créer une nouvelle colonne avec des valeurs de réussite ou d'échec. Je suppose que les limites de spécification pour chaque colonne peuvent être lues à partir d'une table de données, puis d'une nouvelle colonne avec "Réussite" ou Échec" en fonction des limites de contrôle.
Si quelqu'un a fait ce type de travail, je serai intéressé d'apprendre de cela. Merci
Re : Script pour l'écart type basé sur +/- 1,5 sigmac'est ça que tu veux >
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 );