/** * Add an n-tuple to the data * * @param value the n-tuple to add * @throws DimensionMismatchException if the length of the array * does not match the one used at construction */ public void addValue(double[] value) throws DimensionMismatchException { checkDimension(value.length); for (int i = 0; i < k; ++i) { double v = value[i]; sumImpl[i].increment(v); sumSqImpl[i].increment(v); minImpl[i].increment(v); maxImpl[i].increment(v); sumLogImpl[i].increment(v); geoMeanImpl[i].increment(v); meanImpl[i].increment(v); } covarianceImpl.increment(value); n++; }
public Gaussian fit(List<double[]> data) { k = data.get(0).length; int n = data.size(); VectorialCovariance covCounter = new VectorialCovariance(k, true); double[] sumCounter = new double[k]; for(double[] curDatum : data) { for (int i = 0; i < k; i++) { sumCounter[i] += curDatum[i]; } covCounter.increment(curDatum); } for (int i = 0; i < k; i++) { sumCounter[i] /= n; } mean = sumCounter; cov = covCounter.getResult(); initialize(); return this; }
/** * Add an n-tuple to the data * * @param value the n-tuple to add * @throws DimensionMismatchException if the length of the array * does not match the one used at construction */ public void addValue(double[] value) throws DimensionMismatchException { checkDimension(value.length); for (int i = 0; i < k; ++i) { double v = value[i]; sumImpl[i].increment(v); sumSqImpl[i].increment(v); minImpl[i].increment(v); maxImpl[i].increment(v); sumLogImpl[i].increment(v); geoMeanImpl[i].increment(v); meanImpl[i].increment(v); } covarianceImpl.increment(value); n++; }