如何将 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。会将该代码视为专有和知识产权。