如何將 T2 異常值公式保存為 Python、C 或在 Excel 中使用?您好 JMP 社區,
有沒有辦法將 T^2 異常值分析公式的完整公式保存為 Python、C 或 Excel 等效公式? 我想保存它以供需要此測試但不運行 JMP 的其他同事使用。 我有 JMP Pro 15。
另一種選擇是,執行 Vec Quadratic(S, X) 計算的 JSL 中包含的完整數學公式是什麼。 這可以在其他程序中實現,至少這是我的想法。
謝謝!,
DS
分析其他腳本回复:如何將 T2 異常值公式保存為 Python、C 或在 Excel 中使用?你好@nascif_jmp ,
感謝您對此的意見和想法。 儘管我毫不懷疑這會奏效,但由於 IT 限制和使用 Excel 實現 xlwings 的困難,我最終以不同的方式進行了處理。
我實際上學到了很多關於 Excel 如何進行矩陣數學的知識(不是那麼直接),但可行。
我最終採用了一些混合方法:
首先,我使用 JMP 中的 PCA 平台計算 T2 值並將該公式保存到數據表中,以獲得逆協方差矩陣 S 以及均值和標準差向量,以便在 excel 中標準化數據.
之後,只需進行 X*S*X 的矩陣數學運算即可獲得數據表新條目的 T2 值,這並不難。 為了讓它工作,我不得不在 Excel 中使用一些臨時數組來做矩陣數學。 不幸的是,這必須在 Excel 中逐步完成,因此效率不高。 儘管如此,在將其與 JMP 進行比較時,它確實會為新條目計算正確的 T2 值。
因此,我了解了 Excel 中的 MMULT 命令。 逐步,你必須做:MMULT(X,S),我稱之為 XS,一個新的 1xm 數組。 然後,要得到 T2,只需要調用函數 MMULT(XS,X`),其中 X` 是 X 的轉置。
我選擇使用混合方法是因為 S 矩陣以及均值和標準差數組不會經常更改,因為它們是使用模型的訓練數據生成的,並且不需要隨著每個新數據行的到來而更新在。 這使得在 Excel 中進行矩陣數學運算變得更加容易。 我認為每當我們重新訓練模型並在 JMP 中生成新的 T2 公式時,我們總是可以使用正確的矩陣更新 Excel 文件。
一個很好的學習體驗,它有效,但它不如 JMP 高效或簡單!
謝謝!,
DS
回复:如何將 T2 異常值公式保存為 Python、C 或在 Excel 中使用?以下是 JMP 如何在 Python 中實現 Vec Quadratic 作為其對評分代碼生成的支持的一部分。 此代碼片段來自隨 JMP Pro 分發的 jmp_score.py 文件。
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)))
您可以使用 VBA 和 xlwings 等庫從 Excel 調用 Python 代碼:
https://www.xlwings.org/
https://towardsdatascience.com/how-to-supercharge-excel-with-python-726b0f8e22c2
回复:如何將 T2 異常值公式保存為 Python、C 或在 Excel 中使用?我很確定可以用 JSL 編寫代碼來進行 T^2 計算,但是,我假設 JMP 生成 T^2 的代碼是用 C++ 或 C 編寫的,而不是用 JSL 編寫的。回复:如何將 T2 異常值公式保存為 Python、C 或在 Excel 中使用?我不確定為什麼該公式是專有的,因為它基於馬氏距離,並且只是矩陣數學。
Vec Quadratic(S,X) 公式獲取矩陣計算 X*S*X' 的對角線元素,其中 S 是對稱逆協方差矩陣,X 是列數與 S 相等的矩形矩陣,X' 是X 的轉置。假設 Vec Quadratic(S,X) 與 Vec Diag(X*S*X') 的計算相同
在我的例子中,我的預測變量列組成了 X 矩陣——假設我有 8 個預測變量,所以 X = [8x1] 矩陣。 S 是可以從 PCA 或多元平台計算的逆協方差矩陣。 S 矩陣將是一個不變的 8x8 矩陣。 但是,對於 8 個 X 預測變量的每個新條目(行),最好在 Excel 中計算 T2 值。
因此,JMP 如何處理它的數學公式並沒有那麼隱蔽。 我遇到的困難是如何將其轉換為 Excel 中的等效公式表示,以便其他未運行 JMP 的同事可以計算我正在做的建模的 T2 統計量。 我從未嘗試使用 Excel 進行矩陣數學運算,所以我不知道如何在 Excel 中實現等效計算。
我認為他們的函數調用形式簡化了數學,但是應該能夠在 JSL 中編程相同的東西,但明確地列出所有步驟。 一旦獲得,在 excel 中製作等價物應該不會太難。 至少,這是我的想法。
謝謝,
DS
回复:如何將 T2 異常值公式保存為 Python、C 或在 Excel 中使用?您是否在問是否可以從 JMP 獲得 JMP 用於生成 T^2 的代碼? 我假設 SAS Inst。會將該代碼視為專有和知識產權。