2015-02-10 13 views
8

Tôi đang tìm kiếm rất nhiều nhưng không thể tìm thấy chính xác những gì tôi cần cho đến bây giờ. Tôi có hai mảng số nguyên int [] x và int [] y. Tôi muốn tìm mối tương quan tuyến tính đơn giản giữa hai mảng nguyên và nó sẽ trả về kết quả là gấp đôi. Trong java bạn có biết bất kỳ chức năng thư viện nào cung cấp đoạn mã này hay bất kỳ đoạn mã nào không?Cách tìm mối tương quan giữa hai mảng số nguyên trong java

Trả lời

5

Không có gì trong Java lõi. Có thư viện ở đó bạn có thể sử dụng. Apache Commons có số statistical project, hãy kiểm tra PearsonCorrelation lớp học.

Mẫu mã:

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); 
} 

in ra 1,0

9

Tương quan là khá dễ dàng để tính toán:

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; 
    } 
+0

@Mvorisek: nó có thể là 'i ++ 'hoặc '++ i'; '+ + i' có thể nhanh hơn một chút (không cần phải quay trở lại trạng thái tràn lan) trên các trình biên dịch cũ. Chỉ cần một habbit từ Intel 8086 lần và 'C' trình biên dịch cho họ ... –

+0

Điều này không bao gồm các trường hợp là xs và ys có chiều dài khác nhau. – htellez

+1

@htellez: tương quan (hoặc thậm chí covariation) muốn độ dài bằng nhau, hoặc một nên mở rộng định nghĩa tương quan tiêu chuẩn. –

Các vấn đề liên quan