que - Cómo encontrar la correlación entre dos matrices de enteros en java
que es un array en programacion (2)
Estoy buscando mucho pero no pude encontrar exactamente lo que necesito hasta ahora. Tengo dos arreglos enteros int [] x e int [] y. Quiero encontrar una correlación lineal simple entre estas dos matrices de enteros y debería devolver el resultado como doble. En Java, ¿conoces alguna función de biblioteca que proporcione este o cualquier fragmento de código?
La correlación es bastante fácil de calcular:
http://en.wikipedia.org/wiki/Correlation_and_dependence
public static double Correlation(int[] xs, int[] ys) {
//TODO: check here that arrays are not null, of the same length etc
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);
// correlation is just a normalized covariation
return cov / sigmax / sigmay;
}
No hay nada en el núcleo de Java. Hay bibliotecas que puedes usar. Apache Commons tiene un proyecto estadístico , consulte la clase PearsonCorrelation .
Código de muestra:
public static void main(String[] args) {
double[] x = {1, 2, 4, 8};
double[] y = {2, 4, 8, 16};
double corr = new PearsonsCorrelation().correlation(y, x);
System.out.println(corr);
}
imprime 1.0