vectores que programacion nxn multiplicacion multidimensionales matriz matrices ejemplos declarar como codigo arreglos array java arrays int correlation

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