-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPCA.min.lambda
More file actions
1 lines (1 loc) · 876 Bytes
/
PCA.min.lambda
File metadata and controls
1 lines (1 loc) · 876 Bytes
1
=LAMBDA(array,[warmstart],[tolerance],[centralityCheck],LET(nCols,COLUMNS(array),warmstart_,IF(ISOMITTED(warmstart),MUNIT(nCols),warmstart),tolerance_,IF(ISOMITTED(tolerance),0.0000001,tolerance),cCheck_,IF(ISOMITTED(centralityCheck),0.0000001,centralityCheck),worstAvg,MAX(BYCOL(array,LAMBDA(col,AVERAGE(col)))),IF(AND(TYPE(cCheck_)=1,cCheck_>=0,worstAvg>=cCheck_),(--""),LET(covMatrix,MAKEARRAY(nCols,nCols,LAMBDA(iRow,iCol,COVARIANCE.P(INDEX(array,0,iRow),INDEX(array,0,iCol)))),system,VSTACK(MMULT(warmstart_,MMULT(covMatrix,TRANSPOSE(warmstart_))),TRANSPOSE(warmstart_)),fullResult,PCA_INTERNAL(system,tolerance_),varVector,INDEX(fullResult,SEQUENCE(nCols),SEQUENCE(nCols)),idx,SORTBY(SEQUENCE(nCols),varVector,-1),uncoeffs,INDEX(fullResult,SEQUENCE(nCols,1,nCols+1),SEQUENCE(1,nCols)),MAKEARRAY(nCols,nCols,LAMBDA(iRow,iCol,INDEX(uncoeffs,INDEX(idx,iRow,1),iCol)))))))