RitinMalhotra

Karl Pearson's Correlation Coefficient

Oct 29th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.03 KB | None | 0 0
  1. /**
  2.  * Program to calculate Karl Pearson's correlation coefficient.
  3.  */
  4. import java.util.*;
  5. public class KPearson_Correlation
  6. {
  7.     static int[] calculateXY(int[] x, int[] y) //Method to get XY.
  8.     {
  9.         int num = x.length;
  10.         int i, prod;
  11.         int[] xy = new int[num];
  12.         for(i=0;i<num;i++)
  13.         {
  14.             prod = x[i]*y[i];
  15.             xy[i] = prod;
  16.             prod = 0;
  17.         }
  18.        
  19.         return xy;
  20.     }
  21.    
  22.     static int[] calculateX2(int[] x) //Method to get X2.
  23.     {
  24.         int num = x.length;
  25.         int i, xsquare;
  26.         int[] x2 = new int[num];
  27.         for(i=0;i<num;i++)
  28.         {
  29.             xsquare = x[i]*x[i];
  30.             x2[i] = xsquare;
  31.             xsquare = 0;
  32.         }
  33.        
  34.         return x2;
  35.     }
  36.    
  37.     static int[] calculateY2(int[] y) //Method to get Y2.
  38.     {
  39.         int num = y.length;
  40.         int i, ysquare;
  41.         int[] y2 = new int[num];
  42.         for(i=0;i<num;i++)
  43.         {
  44.             ysquare = y[i]*y[i];
  45.             y2[i] = ysquare;
  46.             ysquare = 0;
  47.         }
  48.        
  49.         return y2;
  50.     }
  51.    
  52.     static long getSum(int[] num) //Method to get the sum of any list.
  53.     {
  54.         int sum = 0;
  55.         int i;
  56.         for(i=0;i<num.length;i++)
  57.         {
  58.             sum += num[i];
  59.         }
  60.        
  61.         return sum;
  62.     }
  63.    
  64.  
  65.     static void display(int[] x, int[] y ,int[] xy, int[] x2, int[] y2) //Method to neatly display all the lists along with their sums.
  66.     {
  67.         System.out.println();
  68.         System.out.println("X\tY\tXY\tX^2\tY^2"); //Displaying the headings.
  69.        
  70.         int num = x.length;
  71.         int i;
  72.         for(i=0;i<num;i++)
  73.         {
  74.             System.out.println(x[i]+"\t"+y[i]+"\t"+xy[i]+"\t"+x2[i]+"\t"+y2[i]); //Displaying the values.
  75.         }
  76.        
  77.         System.out.println("---\t---\t---\t---\t---");
  78.         System.out.println(getSum(x)+"\t"+getSum(y)+"\t"+getSum(xy)+"\t"+getSum(x2)+"\t"+getSum(y2)); //Displaying the sums.
  79.         System.out.println("---\t---\t---\t---\t---");
  80.        
  81.     }
  82.    
  83.     static double getAnswer(int[] x, int[] y ,int[] xy, int[] x2, int[] y2) //Method to get the correlation coefficient [r].
  84.     {
  85.         long xsum, ysum, xysum, x2sum, y2sum;
  86.         int num = x.length;
  87.         xsum = getSum(x);
  88.         ysum = getSum(y);
  89.         xysum = getSum(xy);
  90.         x2sum = getSum(x2);
  91.         y2sum = getSum(y2);
  92.        
  93.         double r;
  94.         r = ( xysum - ((xsum*ysum)/num) ) / ( Math.sqrt(x2sum - ((xsum * xsum) / num)) * Math.sqrt(y2sum - ((ysum * ysum) / num)) );
  95.        
  96.         return r;
  97.     }
  98.    
  99.     public static void main(String[] args)
  100.     {
  101.         //Getting the user's input.
  102.         Scanner sc = new Scanner(System.in);
  103.         System.out.println("Please enter the number of items to be placed in both columns.");
  104.         int num = sc.nextInt();
  105.         int[] x = new int[num];
  106.         int[] y = new int[num];
  107.         System.out.println("Please enter the values in the first column. [X]");
  108.         int i;
  109.         for(i=0;i<x.length;i++)
  110.         {
  111.             x[i] = sc.nextInt();
  112.         }
  113.         System.out.println("Please enter the values in the second column. [Y]");
  114.         for(i=0;i<x.length;i++)
  115.         {
  116.             y[i] = sc.nextInt();
  117.         }
  118.        
  119.         //Getting the other lists required.
  120.         int[] xy = calculateXY(x,y);
  121.         int[] x2 = calculateX2(x);
  122.         int[] y2 = calculateY2(y);
  123.        
  124.         //Displaying everything.
  125.         display(x,y,xy,x2,y2);
  126.        
  127.         //Calculating the correlation coefficient [r].
  128.         double r = getAnswer(x,y,xy,x2,y2);
  129.         System.out.println("Correlation = "+r);
  130.        
  131.         sc.close();
  132.        
  133.     }
  134. }
Add Comment
Please, Sign In to add comment