¿Cómo guardar la fórmula de valores atípicos T2 como Python, C o usar en Excel?Hola comunidad JMP,
¿Hay alguna manera de guardar la fórmula completa para la fórmula de análisis de valores atípicos T^2 como fórmula equivalente de Python, C o Excel? Me gustaría guardarlo para usarlo con otros colegas que necesitan esta prueba, pero no ejecutan JMP. Tengo JMP Pro 15.
Otra opción sería cuál es la fórmula matemática completa contenida en el JSL que realiza el cálculo Vec Quadratic (S, X). Esto podría implementarse en otros programas, al menos este es mi pensamiento.
¡Gracias!,
SD
AnalíticaOtrosecuencias de comandosRe: ¿Cómo guardar la fórmula de valores atípicos T2 como Python, C o usarla en Excel?Hola @nascif_jmp ,
Gracias por tus aportes e ideas al respecto. Aunque no tengo ninguna duda de que funcionaría, debido a las restricciones de TI y las dificultades para implementar xlwings con Excel, terminé haciéndolo de otra manera.
De hecho, aprendí bastante sobre cómo Excel puede hacer matemáticas de matriz (no tan sencillo), pero factible.
Terminé yendo con un enfoque un poco híbrido:
Primero, utilicé la plataforma PCA en JMP para calcular los valores de T2 y guardé esa fórmula en la tabla de datos para obtener la matriz de covarianza inversa, S, así como los vectores de media y desviación estándar para estandarizar los datos en Excel. .
Después de eso, no fue demasiado difícil simplemente hacer la matriz matemática de X*S*X` para obtener el valor T2 para una nueva entrada de la tabla de datos. Para que eso funcione, tuve que usar algunas matrices temporales en Excel para hacer la matriz matemática. Desafortunadamente, esto debe hacerse paso a paso en Excel, por lo que no es muy eficiente. No obstante, calcula los valores T2 correctos para las nuevas entradas al compararlo con JMP.
Entonces, aprendí sobre el comando MMULT en Excel. Paso a paso, tienes que hacer: MMULT(X,S), que llamé XS, una nueva matriz de 1xm. Luego, para obtener T2, solo necesita hacer la llamada de función MMULT (XS, X`), donde X` es la transposición de X.
Elegí hacer el enfoque híbrido porque la matriz S y las matrices de media y desviación estándar no cambiarán con tanta frecuencia, ya que se generaron utilizando los datos de entrenamiento para el modelo, y no es necesario actualizarlos con cada nueva fila de datos que llega. en. Eso hace que hacer las matemáticas de matriz sea mucho más fácil en Excel. Me imagino que siempre podemos actualizar el archivo de Excel con las matrices correctas siempre que volvamos a entrenar el modelo y generemos una nueva fórmula T2 en JMP.
Una buena experiencia de aprendizaje y funciona, ¡pero no es tan eficiente ni tan fácil como JMP!
¡Gracias!,
SD
Re: ¿Cómo guardar la fórmula de valores atípicos T2 como Python, C o usarla en Excel?Así es como JMP implementa Vec Quadratic en Python como parte de su soporte para la generación de código de puntuación. Este fragmento de código es del archivo jmp_score.py distribuido con 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)))
Puede llamar al código de Python desde Excel usando VBA y bibliotecas como xlwings:
https://www.xlwings.org/
https://towardsdatascience.com/how-to-supercharge-excel-with-python-726b0f8e22c2
Re: ¿Cómo guardar la fórmula de valores atípicos T2 como Python, C o usarla en Excel?Estoy bastante seguro de que uno podría escribir el código en JSL para hacer el cálculo de T ^ 2, pero el código de JMP que produce el T ^ 2 está escrito, supongo, en C ++ o C, no en JSL.Re: ¿Cómo guardar la fórmula de valores atípicos T2 como Python, C o usarla en Excel?No estoy seguro de por qué la fórmula sería patentada, ya que se basa en la distancia de Mahalanobis y es solo matemática matricial.
La fórmula Vec Quadratic(S,X) obtiene los elementos diagonales del cálculo matricial X*S*X' donde S es una matriz de covarianza inversa simétrica y X es una matriz rectangular con el mismo número de columnas que S, y X' es la transposición de X. Supuestamente Vec Quadratic(S,X) es el mismo cálculo que Vec Diag(X*S*X')
En mi caso, las columnas predictoras que tengo forman la matriz X, así que digamos que tengo 8 predictores, entonces la matriz X = [8x1]. S es la matriz de covarianza inversa que se puede calcular a partir de las plataformas PCA o Multivariante. La matriz S sería una matriz de 8x8 que no cambia. Sin embargo, con cada nueva entrada (fila) para los 8 predictores X, sería bueno calcular en Excel el valor T2.
Entonces, la fórmula matemática de cómo JMP lo maneja no está tan oculta. Lo que me cuesta es cómo pasar de eso a una representación de fórmula equivalente en Excel para que otros colegas que no ejecutan JMP puedan calcular la estadística T2 para el modelo que estoy haciendo. Nunca intenté usar Excel para matemáticas matriciales, por lo que no sé cómo implementar el cálculo equivalente en Excel.
Creo que sus formas de llamadas funcionales simplifican las matemáticas, pero uno debería poder programar en JSL lo mismo, pero explícitamente diseñar todos los pasos. Una vez que se obtiene eso, hacer el equivalente en Excel no debería ser demasiado difícil. Al menos, esto es lo que estoy pensando.
Gracias,
SD
Re: ¿Cómo guardar la fórmula de valores atípicos T2 como Python, C o usarla en Excel?¿Está preguntando si se puede obtener de JMP, el código que utiliza JMP para generar T^2? Supongo que SAS Inst. consideraría ese código como propietario y propiedad intelectual.