Source code for pyLOM.PCA.utils
#!/usr/bin/env python
#
# pyLOM - Python Low Order Modeling.
#
# PCA general utilities.
#
# Last rev: 11/04/2025
import numpy as np ## Only for documentation
from scipy.stats import f
from ..utils.gpu import cp
from ..utils.cr import cr_nvtx as cr
[docs]
@cr('PCA.T2')
def T2score(P:np.ndarray, ncomp:int=1, confidence:float=0.8):
r'''
Summarize the scores over the ncomp and return the limit for the confidence itnerval according to its probabilistic distribution.
Args:
P (np.ndarray): scores from PCA.
ncomp (int, optional): number of components to summarize the scores from (default: ``1``).
confidence (float, optional): threshold confidence interval for clustering according to the T2 statistic. It is computed as in a F probability distribution (default: ``0.8``).
Returns:
[(np.ndarray), float]: T2 scores and clustering threshold.
'''
p = cp if type(P) is cp.ndarray else np
m,n = 1, P.shape[0]
cov = 1/(n-1)*p.linalg.norm(P[:,0])**2
T2 = p.zeros((P.shape[1],))
for ii in range(P.shape[1]):
T2[ii] = p.sum(P[ii,:ncomp]**2/cov)
f_critical = f.ppf(confidence, dfn=m, dfd=n-m)
T2_limit = (n-1)*m/(n-m)*f_critical
return T2, T2_limit