Wie speichere ich die T2-Ausreißerformel als Python, C oder verwende sie in Excel?Hallo JMP-Community,
Gibt es eine Möglichkeit, die vollständige Formel für die T^2-Ausreißeranalyseformel als Python-, C- oder Excel-äquivalente Formel zu speichern? Ich möchte es für die Verwendung mit anderen Kollegen speichern, die diesen Test benötigen, aber JMP nicht ausführen. Ich habe JMP Pro 15.
Eine andere Option wäre, was die vollständige mathematische Formel ist, die in der JSL enthalten ist, die die Berechnung von Vec Quadratic (S, X) durchführt. Das könnte dann auch in anderen Programmen implementiert werden, so meine zumindest meine Überlegung.
Vielen Dank!,
DS
AnalytikSonstigesSkripterstellungBetreff: Wie speichere ich die T2-Ausreißerformel als Python, C oder verwende sie in Excel?Hi @nascif_jmp ,
Danke für eure Beiträge und Ideen dazu. Obwohl ich keinen Zweifel daran habe, dass das funktionieren würde, bin ich aufgrund von IT-Einschränkungen und Schwierigkeiten bei der Implementierung von xlwings mit Excel letztendlich einen anderen Weg gegangen.
Ich habe tatsächlich einiges darüber gelernt, wie Excel Matrixberechnungen durchführen kann (nicht so einfach), aber machbar.
Am Ende ging ich mit einem etwas hybriden Ansatz vor:
Zuerst habe ich die PCA-Plattform in JMP verwendet, um die T2-Werte zu berechnen, und diese Formel in der Datentabelle gespeichert, um die inverse Kovarianzmatrix S sowie die Mittelwert- und Standardabweichungsvektoren zu erhalten, um die Daten in Excel zu standardisieren .
Danach war es nicht mehr allzu schwierig, einfach die Matrixberechnung von X*S*X` durchzuführen, um den T2-Wert für einen neuen Eintrag in der Datentabelle zu erhalten. Damit das funktioniert, musste ich einige temporäre Arrays in Excel verwenden, um die Matrixberechnung durchzuführen. Leider muss dies schrittweise in Excel erfolgen, daher ist es nicht sehr effizient. Nichtsdestotrotz berechnet es die korrekten T2-Werte für neue Einträge, wenn es mit JMP verglichen wird.
So lernte ich den MMULT-Befehl in Excel kennen. Schrittweise müssen Sie Folgendes tun: MMULT(X,S), das ich XS genannt habe, ein neues 1xm-Array. Um dann T2 zu erhalten, müssen Sie nur den Funktionsaufruf MMULT(XS,X`) ausführen, wobei X` die Transponierte von X ist.
Ich habe mich für den hybriden Ansatz entschieden, da sich die S-Matrix und die Mittelwert- und Standardabweichungsarrays nicht so oft ändern, da sie mit den Trainingsdaten für das Modell generiert wurden, und nicht mit jeder neuen Datenzeile aktualisiert werden müssen in. Das macht die Matrixberechnung in Excel viel einfacher. Ich denke, dass wir die Excel-Datei immer mit den richtigen Matrizen aktualisieren können, wenn wir das Modell neu trainieren und eine neue T2-Formel in JMP generieren.
Eine gute Lernerfahrung, und es funktioniert, aber es ist nicht so effizient oder einfach wie JMP!
Vielen Dank!,
DS
Betreff: Wie speichere ich die T2-Ausreißerformel als Python, C oder verwende sie in Excel?So implementiert JMP Vec Quadratic in Python als Teil seiner Unterstützung für die Generierung von Scoring-Code. Dieses Codefragment stammt aus der Datei jmp_score.py, die mit JMP Pro vertrieben wird.
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)))
Sie können Python-Code aus Excel mit VBA und Bibliotheken wie xlwings aufrufen:
https://www.xlwings.org/
https://towardsdatascience.com/how-to-supercharge-excel-with-python-726b0f8e22c2
Betreff: Wie speichere ich die T2-Ausreißerformel als Python, C oder verwende sie in Excel?Ich bin mir ziemlich sicher, dass man den Code in JSL schreiben könnte, um die T^2-Berechnung durchzuführen, aber der Code von JMP, der den T^2 erzeugt, ist, nehme ich an, in C++ oder C geschrieben, nicht in JSL.Betreff: Wie speichere ich die T2-Ausreißerformel als Python, C oder verwende sie in Excel?Ich bin mir nicht sicher, warum die Formel proprietär sein sollte, da sie auf der Mahalanobis-Distanz basiert und nur Matrixmathematik ist.
Die Formel Vec Quadratic(S,X) erhält die Diagonalelemente der Matrixberechnung X*S*X', wobei S eine symmetrische inverse Kovarianzmatrix und X eine rechteckige Matrix mit der gleichen Anzahl von Spalten wie S ist und X' die ist Transponierung von X. Angeblich ist Vec Quadratic(S,X) die gleiche Berechnung wie Vec Diag(X*S*X')
In meinem Fall bilden die Prädiktorspalten, die ich habe, die X-Matrix – sagen wir also, ich habe 8 Prädiktoren, also X = [8x1]-Matrix. S ist die inverse Kovarianzmatrix, die von den PCA- oder Multivariate-Plattformen berechnet werden kann. Die S-Matrix wäre eine 8x8-Matrix, die sich nicht ändert. Allerdings wäre es schön, bei jedem neuen Eintrag (Zeile) für die 8 X-Prädiktoren in Excel den T2-Wert zu berechnen.
Die mathematische Formel, wie JMP damit umgeht, ist also nicht so versteckt. Was mir schwer fällt, ist, wie ich von dieser zu einer äquivalenten Formeldarstellung in Excel übergehen kann, damit andere Kollegen, die JMP nicht ausführen, die T2-Statistik für die von mir durchgeführte Modellierung berechnen können. Ich habe nie versucht, Excel für Matrizenberechnungen zu verwenden, daher weiß ich nicht, wie ich die entsprechende Berechnung in Excel implementieren soll.
Ich denke, ihre funktionalen Aufrufformen vereinfachen die Mathematik, aber man sollte in der Lage sein, dasselbe in JSL zu programmieren, aber alle Schritte explizit anzugeben. Sobald dies erreicht ist, sollte es nicht zu schwierig sein, das Äquivalent in Excel zu erstellen. Zumindest denke ich das.
Vielen Dank,
DS
Re: Wie speichere ich die T2-Ausreißerformel als Python, C oder verwende sie in Excel?Fragen Sie, ob man von JMP den Code erhalten kann, den JMP zum Generieren von T ^ 2 verwendet? Ich gehe davon aus, dass SAS Inst. würde diesen Code als geschütztes und geistiges Eigentum betrachten.