T2 이상값 수식을 Python, C로 저장하거나 Excel에서 사용하는 방법은 무엇입니까?안녕하세요 JMP 커뮤니티입니다.
T^2 이상값 분석 공식의 전체 공식을 Python, C 또는 Excel 등가 공식으로 저장하는 방법이 있습니까? 이 테스트가 필요하지만 JMP를 실행하지 않는 다른 동료와 함께 사용하기 위해 저장하고 싶습니다. JMP Pro 15가 있습니다.
또 다른 옵션은 Vec Quadratic(S, X) 계산을 수행하는 JSL에 포함된 전체 수학 공식이 무엇인지입니다. 이것은 다른 프로그램에서 구현될 수 있습니다. 적어도 이것은 제 생각입니다.
감사!,
DS
해석학다른스크립팅Re: T2 이상값 수식을 Python, C로 저장하거나 Excel에서 사용하는 방법은 무엇입니까?안녕 @nascif_jmp ,
이에 대한 귀하의 의견과 아이디어에 감사드립니다. 그것이 효과가 있을 것이라는 데는 의심의 여지가 없지만, IT 제한 사항과 Excel로 xlwings를 구현하는 데 어려움이 있기 때문에 결국 다른 방식으로 진행하게 되었습니다.
실제로 Excel에서 행렬 수학을 수행할 수 있는 방법에 대해 꽤 많이 배웠지만(직접적으로는 아니지만) 수행할 수 있습니다.
나는 약간의 하이브리드 접근 방식을 사용하게 되었습니다.
먼저 JMP의 PCA 플랫폼을 사용하여 T2 값을 계산하고 해당 공식을 데이터 테이블에 저장하여 역공분산 행렬 S와 Excel에서 데이터를 표준화하기 위해 평균 및 표준 편차 벡터를 얻었습니다. .
그 후, 데이터 테이블의 새 항목에 대한 T2 값을 얻기 위해 X*S*X`의 행렬 수학을 수행하는 것은 그리 어렵지 않았습니다. 이 작업을 수행하려면 Excel에서 일부 임시 배열을 사용하여 행렬 수학을 수행해야 했습니다. 불행히도 이것은 Excel에서 단계적으로 수행되어야 하므로 그다지 효율적이지 않습니다. 그럼에도 불구하고 JMP와 비교할 때 새 항목에 대한 올바른 T2 값을 계산합니다.
그래서 Excel의 MMULT 명령에 대해 배웠습니다. 단계적으로 다음을 수행해야 합니다. MMULT(X,S), 나는 XS라고 불렀고 새로운 1xm 배열입니다. 그런 다음 T2를 얻으려면 함수 호출 MMULT(XS,X`)만 수행하면 됩니다. 여기서 X`는 X의 전치입니다.
S 행렬과 평균 및 표준 편차 배열은 모델에 대한 교육 데이터를 사용하여 생성되었기 때문에 자주 변경되지 않고 새로운 데이터 행이 올 때마다 업데이트할 필요가 없기 때문에 하이브리드 접근 방식을 선택했습니다. 안에. 그러면 Excel에서 행렬 수학을 훨씬 쉽게 수행할 수 있습니다. JMP에서 모델을 다시 훈련하고 새로운 T2 공식을 생성할 때마다 항상 올바른 행렬로 Excel 파일을 업데이트할 수 있다고 생각합니다.
좋은 학습 경험과 효과가 있지만 JMP만큼 효율적이거나 쉽지는 않습니다!
감사!,
DS
Re: 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)))
xlwings와 같은 VBA 및 라이브러리를 사용하여 Excel에서 Python 코드를 호출할 수 있습니다.
https://www.xlwings.org/
https://towardsdatascience.com/how-to-supercharge-excel-with-python-726b0f8e22c2
Re: T2 이상값 수식을 Python, C로 저장하거나 Excel에서 사용하는 방법은 무엇입니까?나는 T^2 계산을 수행하기 위해 JSL로 코드를 작성할 수 있다고 확신하지만, T^2를 생성하는 JMP의 코드는 JSL이 아닌 C++ 또는 C로 작성되었다고 가정합니다.Re: T2 이상값 수식을 Python, C로 저장하거나 Excel에서 사용하는 방법은 무엇입니까?Mahalanobis 거리를 기반으로 하고 단지 행렬 수학이기 때문에 공식이 독점적인 이유가 확실하지 않습니다.
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-예측자에 대한 각각의 새로운 항목(행)으로 T2 값을 Excel에서 계산하는 것이 좋을 것입니다.
따라서 JMP가 이를 처리하는 수학 공식은 그다지 숨겨져 있지 않습니다. 제가 어려움을 겪고 있는 것은 JMP를 실행하지 않는 다른 동료들이 제가 하고 있는 모델링에 대한 T2 통계를 계산할 수 있도록 Excel에서 해당 수식 표현으로 이동하는 방법입니다. 나는 행렬 수학에 Excel을 사용하려고 시도한 적이 없으므로 Excel에서 동등한 계산을 구현하는 방법을 모릅니다.
함수 호출 형식이 수학을 단순화한다고 생각하지만 JSL에서 동일한 것을 프로그래밍할 수 있어야 하지만 모든 단계를 명시적으로 배치해야 합니다. 일단 그것이 얻어지면 Excel에서 동등한 것을 만드는 것이 너무 어렵지 않아야합니다. 적어도 이것이 내가 생각하는 것입니다.
감사,
DS
Re: T2 이상값 수식을 Python, C로 저장하거나 Excel에서 사용하는 방법은 무엇입니까?JMP가 T^2를 생성하는 데 사용하는 코드인 JMP에서 가져올 수 있는지 묻고 있습니까? 나는 SAS Inst. 해당 코드를 독점 및 지적 재산으로 간주합니다.