public double getAsDouble()

in commons-statistics-descriptive/src/main/java/org/apache/commons/statistics/descriptive/Skewness.java [251:282]


    public double getAsDouble() {
        // This method checks the sum of squared or cubed deviations is finite
        // and the value of the biased variance
        // to provide a consistent result when the computation is not possible.

        if (sc.n < (biased ? LENGTH_TWO : LENGTH_THREE)) {
            return Double.NaN;
        }
        final double x2 = sc.getSumOfSquaredDeviations();
        if (!Double.isFinite(x2)) {
            return Double.NaN;
        }
        final double x3 = sc.getSumOfCubedDeviations();
        if (!Double.isFinite(x3)) {
            return Double.NaN;
        }
        // Avoid a divide by zero; for a negligible variance return NaN.
        // Note: Commons Math returns zero if variance is < 1e-19.
        final double m2 = x2 / sc.n;
        if (Statistics.zeroVariance(sc.getFirstMoment(), m2)) {
            return Double.NaN;
        }
        // denom = pow(m2, 1.5)
        final double denom = Math.sqrt(m2) * m2;
        final double m3 = x3 / sc.n;
        double g1 = m3 / denom;
        if (!biased) {
            final double n = sc.n;
            g1 *= Math.sqrt(n * (n - 1)) / (n - 2);
        }
        return g1;
    }