Comment enregistrer la formule de valeur aberrante T2 en Python, C ou l'utiliser dans Excel ?Salut la communauté JMP,
Existe-t-il un moyen d'enregistrer la formule complète pour la formule d'analyse des valeurs aberrantes T^2 en tant que formule équivalente Python, C ou Excel ? Je voudrais l'enregistrer pour l'utiliser avec d'autres collègues qui ont besoin de ce test, mais n'exécutez pas JMP. J'ai JMP Pro 15.
Une autre option serait de savoir quelle est la formule mathématique complète contenue dans le JSL qui effectue le calcul Vec Quadratic(S, X). Cela pourrait ensuite être mis en œuvre dans d'autres programmes, du moins c'est ma pensée.
Merci!,
DS
AnalytiqueAutreScriptRe : Comment enregistrer la formule des valeurs aberrantes T2 en tant que Python, C ou l'utiliser dans Excel ?Salut @nascif_jmp ,
Merci pour votre contribution et vos idées à ce sujet. Bien que je ne doute pas que cela fonctionnerait, en raison des restrictions informatiques et des difficultés d'implémentation des xlwings avec Excel, j'ai fini par m'y prendre différemment.
En fait, j'ai beaucoup appris sur la façon dont Excel peut faire des calculs matriciels (pas si simples), mais faisable.
J'ai fini par adopter une approche un peu hybride:
Tout d'abord, j'ai utilisé la plate-forme PCA dans JMP pour calculer les valeurs T2 et enregistré cette formule dans le tableau de données afin d'obtenir la matrice de covariance inverse, S, ainsi que les vecteurs de moyenne et d'écart type afin de normaliser les données dans Excel. .
Après cela, il n'a pas été trop difficile de simplement faire le calcul matriciel de X*S*X` afin d'obtenir la valeur T2 pour une nouvelle entrée de la table de données. Pour que cela fonctionne, j'ai dû utiliser des tableaux temporaires dans Excel pour effectuer les calculs matriciels. Malheureusement, cela doit être fait étape par étape dans Excel, ce n'est donc pas très efficace. Néanmoins, il calcule les valeurs T2 correctes pour les nouvelles entrées lors de la comparaison avec JMP.
J'ai donc découvert la commande MMULT dans Excel. Pas à pas, vous devez faire : MMULT(X,S), que j'ai appelé XS, un nouveau tableau 1xm. Ensuite, pour obtenir T2, il suffit de faire l'appel de fonction MMULT(XS,X`), où X` est la transposition de X.
J'ai choisi de faire l'approche hybride parce que la matrice S et les tableaux de moyenne et d'écart type ne changeront pas souvent puisqu'ils ont été générés à l'aide des données d'apprentissage du modèle, et n'ont pas besoin d'être mis à jour avec chaque nouvelle ligne de données à venir dans. Cela rend les calculs matriciels beaucoup plus faciles dans Excel. Je pense que nous pouvons toujours mettre à jour le fichier Excel avec les matrices correctes chaque fois que nous réentraînons le modèle et générons une nouvelle formule T2 dans JMP.
Une bonne expérience d'apprentissage, et ça marche, mais ce n'est pas aussi efficace ou facile que JMP !
Merci!,
DS
Re : Comment enregistrer la formule des valeurs aberrantes T2 en tant que Python, C ou l'utiliser dans Excel ?Voici comment JMP implémente Vec Quadratic dans Python dans le cadre de sa prise en charge de la génération de code de scoring. Ce fragment de code provient du fichier jmp_score.py distribué avec JMP Pro.
import numpy as np
def vec_diag(M):
return np.diag(M).reshape(M.shape[0], 1)
def vec_quadratic(S, X):
if S.shape[1] == X.shape[0]:
return vec_diag(np.dot(X.T, np.dot(S, X)))
return vec_diag(np.dot(X, np.dot(S, X.T)))
Vous pouvez appeler du code Python depuis Excel à l'aide de VBA et de bibliothèques telles que xlwings :
https://www.xlwings.org/
https://towardsdatascience.com/how-to-supercharge-excel-with-python-726b0f8e22c2
Re : Comment enregistrer la formule des valeurs aberrantes T2 en tant que Python, C ou l'utiliser dans Excel ?Je suis à peu près sûr que l'on pourrait écrire le code en JSL pour effectuer le calcul T^2, mais le code de JMP qui produit le T^2 est écrit, je suppose, en C++ ou C, pas en JSL.Re : Comment enregistrer la formule des valeurs aberrantes T2 en tant que Python, C ou l'utiliser dans Excel ?Je ne sais pas pourquoi la formule serait exclusive car elle est basée sur la distance de Mahalanobis et n'est qu'un calcul matriciel.
La formule Vec Quadratic(S,X) obtient les éléments diagonaux du calcul matriciel X*S*X' où S est une matrice de covariance inverse symétrique et X est une matrice rectangulaire avec un nombre de colonnes égal à S, et X' est la transposition de X. Soi-disant Vec Quadratic(S,X) est le même calcul que Vec Diag(X*S*X')
Dans mon cas, les colonnes de prédicteurs que j'ai constituent la matrice X - alors disons que j'ai 8 prédicteurs, donc X = [8x1] matrice. S est la matrice de covariance inverse qui peut être calculée à partir des plates-formes PCA ou multivariées. La matrice S serait une matrice 8x8 qui ne change pas. Cependant, à chaque nouvelle entrée (ligne) pour les 8 prédicteurs X, il serait bien de calculer dans Excel la valeur T2.
Ainsi, la formule mathématique de la façon dont JMP le gère n'est pas si cachée. Ce qui me pose problème, c'est comment passer de cela à une représentation de formule équivalente dans Excel afin que d'autres collègues qui n'exécutent pas JMP puissent calculer la statistique T2 pour la modélisation que je fais. Je n'ai jamais essayé d'utiliser Excel pour les mathématiques matricielles, donc je ne sais pas comment implémenter le calcul équivalent dans Excel.
Je pense que leurs formes d'appel fonctionnelles simplifient les calculs, mais on devrait pouvoir programmer en JSL la même chose, mais exposer explicitement toutes les étapes. Une fois cela obtenu, faire l'équivalent dans excel ne devrait pas être trop dur. Du moins, c'est ce que je pense.
Merci,
DS
Re : Comment enregistrer la formule des valeurs aberrantes T2 en tant que Python, C ou l'utiliser dans Excel ?Demandez-vous si l'on peut obtenir de JMP, le code que JMP utilise pour générer T^2 ? Je suppose que SAS Inst. considérerait ce code comme une propriété exclusive et intellectuelle.