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É
*/
}