Java stddev stddev(Number[] array, boolean isSample)

Here you can find the source of stddev(Number[] array, boolean isSample)

Description

Returns the std deviation of the given array.

License

Open Source License

Parameter

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).

Return

the std deviation

Declaration

public static double stddev(Number[] array, boolean isSample) 

Method Source Code

//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;
    }
}

Related

  1. stddev(final int[] scores)
  2. stddev(float[] data)
  3. stddev(int[] values, int start, int length)
  4. stdDev(Integer[] values)
  5. stddev(long[] samples)
  6. stdDev(T[] array)
  7. stdDeviation(int[] data)
  8. stdev(Collection values)
  9. stdev(Collection values)