Salut,
J'aime écrire un script pour obtenir l'UCL pour l'analyse multivariée des valeurs aberrantes à l'aide de la distance de Mahalanobis.
Je peux obtenir l'UCL en passant par le menu JMP, mais est-il possible d'obtenir l'UCL et de le définir sur le nom de la variable dans un script.
J'apprécie votre aide. Merci.
Merci beaucoup pour votre aide Cameron. C'est très utile.
Salut @À ,
Il semble un peu difficile d'extraire cette valeur du rapport, mais vous pouvez y parvenir en scriptant l'action "Enregistrer les distances aberrantes", puis en extrayant la propriété de colonne "Mahal. Valeur" qui résulte de cette action.Il n'est pas trop difficile d'obtenir des valeurs de propriété de colonne enregistrées en tant que variables.Voici un exemple utilisant l'exemple d'ensemble de données Épaisseur :
dt = Open("$SAMPLE_DATA/Quality Control/Thickness.jmp");
multi = dt << Multivariate(
Y(
:Thickness 01,
:Thickness 02,
:Thickness 03,
:Thickness 04,
:Thickness 05,
:Thickness 06,
:Thickness 07,
:Thickness 08,
:Thickness 09,
:Thickness 10,
:Thickness 11,
:Thickness 12
),
Estimation Method( "Row-wise" )
);
multi << Mahalanobis Distances( 1 , Save Outlier Distances);
mahal_ucl = Column("Mahal. Distances") << Get Property("Mahal. Value");Cependant, cette limite est en fait très facile à calculer dans une fonction.C'est juste la racine carrée de l'UCL dans un graphique T ^ 2 de Hotelling.
Mahal_UCL = function({p,m},
sqrt(((m-1)^2)/m*beta quantile(0.95,p/2,(m-p-1)/2));
);La formule est également donnée dans le livre Méthodes multivariées à la page 49 dans le menu Aide (Aide > Livres > Méthodes multivariées).
Voici un exemple utilisant les données d'épaisseur.La limite de contrôle de Mahalanobis est de 4,36. En utilisant la fonction fournie précédemment, vous pouvez calculer la distance de Mahalanobis UCL pour m=50 points de données et p=12 variables.Voici la sortie du journal indiquant une limite de contrôle correspondante :
Mahal_UCL(12,50);
/*:
4.36283881449635
La fonction Mahal_UCL j'ai écrit des hard-codes en alpha = 0.05. Vous pourriez faire d'alpha un 3ème paramètre comme ceci :
Mahal_UCL = function({p, m, alpha},
sqrt( ( ( m-1 )^2 )/m*beta quantile( 1-alpha, p/2, ( m-p-1 )/2 ) );
);