Share Brilliantly
principal components
let mt = await import('/lib/statistics/moments/v1.0.0/moments.mjs');
let data = [
[1,2,3],
[2,5,3],
[6,3,4],
[3,3,3],
[1,4,2],
[7,8,4],
];
let centered = mt.center(data);
let mt = await import('/lib/statistics/moments/v1.0.0/moments.mjs');
let data = [
[1,2,3],
[2,5,3],
[6,3,4],
[3,3,3],
[1,4,2],
[7,8,4],
];
let centered = mt.center(data);
let covariance = mt.covariance(centered);
let la= await import('/lib/linear-algebra/v1.0.0/linear-algebra.mjs');
let mt = await import('/lib/statistics/moments/v1.0.0/moments.mjs');
let data = [
[1,2,3],
[2,5,3],
[6,3,4],
[3,3,3],
[1,4,2],
[7,8,4],
];
let centered = mt.center(data);
let covariance = mt.covariance(centered);
let eig = la.eigenvectors(covariance);
let eigenvalues = eig.lambda.x;
let vectors = eig.E.x;
//run test
//get the first vector
let v1 = vectors.map(p=>p[0]);
//the covariance times the first vector should equal first vector times the first eigenvalue
let test = numeric.dot(covariance, v1);
let test2 = [];
for(let i=0;i<test.length;i++){
//divide by the first eigenvalue
test2.push(test[i]/eigenvalues[0]);
}
//test2 should equal v1;
Try it!