Here you can find the source of variance(double[] arr)
public static double variance(double[] arr)
//package com.java2s; /*/*from w ww.j a v a 2s. c o m*/ * Copyright 2013,2014 BioASQ project: FP7/2007-2013, ICT-2011.4.4(d), * Intelligent Information Management, * Targeted Competition Framework grant agreement n? 318652. * www: http://www.bioasq.org * * 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. */ public class Main { public static double variance(double[] arr) { int n = arr.length; if (n < 2) return 0; //throw new IllegalArgumentException("Must be at least 2 elements in array."); // 1st get the average of the data. double ave = average(arr); double var = 0; double ep = 0; for (int i = 0; i < n; ++i) { double s = arr[i] - ave; ep += s; var += s * s; } var = (var - ep * ep / n) / (n - 1); return var; } public static double variance(double[] arr, double average) { int n = arr.length; if (n < 2) return 0; //throw new IllegalArgumentException("Must be at least 2 elements in array."); // 1st get the average of the data. double ave = average; double var = 0; double ep = 0; for (int i = 0; i < n; ++i) { double s = arr[i] - ave; ep += s; var += s * s; } var = (var - ep * ep / n) / (n - 1); return var; } public static double average(double values[]) { int s = values.length; if (s == 0) return Double.MIN_VALUE; double avg = 0.0; for (int i = 0; i < s; i++) avg += values[i]; return avg / s; } }