public Vector <double> CalculateMean(UnitCollection units) { Vector <double> mean = Vector <double> .Build.Dense(units.NumberOfValues()); foreach (Unit unit in units.List) { Vector <double> v = unit.ToVector(); mean += v; } mean *= 1.0 / units.List.Count(); return(mean); }
public Vector <double> CalculateStandardDeviation(UnitCollection units, Vector <double> mean) { Vector <double> sd = Vector <double> .Build.Dense(units.NumberOfValues()); foreach (Unit unit in units.List) { Vector <double> v = unit.ToVector(); sd += (v - mean).PointwisePower(2); } sd *= 1.0 / units.List.Count(); return(sd.PointwisePower(0.5)); }
Matrix <double> CalculateCovariance(UnitCollection units) { Matrix <double> covariance = Matrix <double> .Build.Dense(units.NumberOfValues(), units.NumberOfValues()); foreach (Unit unit in units.List) { Vector <double> v = unit.ToVector() - Mean; covariance += v.ToColumnMatrix() * v.ToRowMatrix(); } covariance *= 1.0 / units.List.Count(); return(covariance); }