wilomgfx
10/18/2017 - 4:00 PM

Correlation java

public static double correlation(double[] xs, double[] ys) {
        /* CODE EMPRUNTÉ
         *  Les lignes suivantes sont basées sur une façon de calculer la correlation à l'aide de la covariation
         *  provenant d'une réponse sur stackoveflow : https://stackoverflow.com/a/28428582/2880747
         *  Dans cette méthode la plus part du code est réutilisé.
         */
        double sx = 0.0;
        double sy = 0.0;
        double sxx = 0.0;
        double syy = 0.0;
        double sxy = 0.0;

        int n = xs.length;

        for(int i = 0; i < n; ++i) {
            double x = xs[i];
            double y = ys[i];

            sx += x;
            sy += y;
            sxx += x * x;
            syy += y * y;
            sxy += x * y;
        }

        // covariation
        double cov = sxy / n - sx * sy / n / n;
        // standard error of x
        double sigmax = Math.sqrt(sxx / n -  sx * sx / n / n);
        // standard error of y
        double sigmay = Math.sqrt(syy / n -  sy * sy / n / n);

        // normalized covariation turns into correlation
        return cov / sigmax / sigmay;
        /*
            FIN DU CODE EMPRUNTÉ
         */
    }