/*
* Copyright (c) 2016 by Gerrit Grunwald
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package eu.hansolo.medusa.tools;
import java.util.Collections;
import java.util.List;
/**
* Created by hansolo on 06.12.16.
*/
public class Statistics {
// ******************** Methods *******************************************
public static double getMean(final List<Double> DATA) { return DATA.stream().mapToDouble(v -> v).sum() / DATA.size(); }
public static double getVariance(final List<Double> DATA) {
double mean = getMean(DATA);
double temp = 0;
for (double a : DATA) { temp += ((a - mean) * (a - mean)); }
return temp / DATA.size();
}
public static double getStdDev(final List<Double> DATA) { return Math.sqrt(getVariance(DATA)); }
public static double getMedian(final List<Double> DATA) {
int size = DATA.size();
Collections.sort(DATA);
return size % 2 == 0 ? (DATA.get((size / 2) - 1) + DATA.get(size / 2)) / 2.0 : DATA.get(size / 2);
}
public static double getMin(final List<Double> DATA) { return DATA.stream().mapToDouble(v -> v).min().orElse(0); }
public static double getMax(final List<Double> DATA) { return DATA.stream().mapToDouble(v -> v).max().orElse(0); }
}