Here you can find the source of stddev(Number[] array, boolean isSample)
Parameter | Description |
---|---|
array | the array to work on |
isSample | if true, then the sample standard deviation instead of the population standard deviation is calculated (using n-1 instead of n). |
public static double stddev(Number[] array, boolean isSample)
//package com.java2s; /*/*from w w w. j av a 2 s . c o m*/ * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ public class Main { /** * Returns the std deviation of the given array. * NaN is returned in case of zero-length arrays. * * @param array the array to work on * @param isSample if true, then the sample standard deviation instead * of the population standard deviation is calculated * (using n-1 instead of n). * @return the std deviation */ public static double stddev(Number[] array, boolean isSample) { double result; double mean; int i; if (array.length == 0) return Double.NaN; result = 0; mean = mean(array); for (i = 0; i < array.length; i++) result += Math.pow(array[i].doubleValue() - mean, 2); if (isSample) result /= (array.length - 1); else result /= array.length; result = Math.sqrt(result); return result; } /** * Returns the std deviation of the given array. * NaN is returned in case of zero-length arrays. * * @param array the array to work on * @param isSample if true, then the sample standard deviation instead * of the population standard deviation is calculated * (using n-1 instead of n). * @return the std deviation */ public static double stddev(int[] array, boolean isSample) { return stddev(toNumberArray(array), isSample); } /** * Returns the std deviation of the given array. * NaN is returned in case of zero-length arrays. * * @param array the array to work on * @param isSample if true, then the sample standard deviation instead * of the population standard deviation is calculated * (using n-1 instead of n). * @return the std deviation */ public static double stddev(double[] array, boolean isSample) { return stddev(toNumberArray(array), isSample); } /** * Returns the mean of the given array. * NaN is returned in case of zero-length arrays. * * @param array the array to work on * @return the mean */ public static double mean(Number[] array) { double result; int i; if (array.length == 0) return Double.NaN; result = 0; for (i = 0; i < array.length; i++) result += array[i].doubleValue(); result /= array.length; return result; } /** * Returns the mean of the given array. * NaN is returned in case of zero-length arrays. * * @param array the array to work on * @return the mean */ public static double mean(int[] array) { return mean(toNumberArray(array)); } /** * Returns the mean of the given array. * NaN is returned in case of zero-length arrays. * * @param array the array to work on * @return the mean */ public static double mean(double[] array) { return mean(toNumberArray(array)); } /** * Turns the byte array into a Byte array. * * @param array the array to convert * @return the converted array */ public static Number[] toNumberArray(byte[] array) { Byte[] result; int i; result = new Byte[array.length]; for (i = 0; i < array.length; i++) result[i] = new Byte(array[i]); return result; } /** * Turns the short array into a Short array. * * @param array the array to convert * @return the converted array */ public static Number[] toNumberArray(short[] array) { Short[] result; int i; result = new Short[array.length]; for (i = 0; i < array.length; i++) result[i] = new Short(array[i]); return result; } /** * Turns the int array into a Integer array. * * @param array the array to convert * @return the converted array */ public static Number[] toNumberArray(int[] array) { Integer[] result; int i; result = new Integer[array.length]; for (i = 0; i < array.length; i++) result[i] = new Integer(array[i]); return result; } /** * Turns the long array into a Long array. * * @param array the array to convert * @return the converted array */ public static Number[] toNumberArray(long[] array) { Long[] result; int i; result = new Long[array.length]; for (i = 0; i < array.length; i++) result[i] = new Long(array[i]); return result; } /** * Turns the float array into a Float array. * * @param array the array to convert * @return the converted array */ public static Number[] toNumberArray(float[] array) { Float[] result; int i; result = new Float[array.length]; for (i = 0; i < array.length; i++) result[i] = new Float(array[i]); return result; } /** * Turns the double array into a Double array. * * @param array the array to convert * @return the converted array */ public static Number[] toNumberArray(double[] array) { Double[] result; int i; result = new Double[array.length]; for (i = 0; i < array.length; i++) result[i] = new Double(array[i]); return result; } }