📜  查找相关系数的程序

📅  最后修改于: 2021-05-05 03:10:04             🧑  作者: Mango

给定两个数组元素,我们必须找到两个数组之间的相关系数。相关系数是用于确定两个变量之间关系强度的方程式。相关系数有时称为互相关系数。相关系数始终在-1到+1之间,其中-1表示X和Y呈负相关,而+1表示X和Y呈正相关。


其中r是相关系数。

Correlation coefficient 
= (5 * 3000 - 105 * 140) 
     / sqrt((5 * 2295 - 1052)*(5*3964 - 1402))
= 300 / sqrt(450 * 220) = 0.953463

例子 :

Input : X[] = {43, 21, 25, 42, 57, 59}
        Y[] = {99, 65, 79, 75, 87, 81}
Output : 0.529809

Input : X[] = {15, 18, 21, 24, 27};
        Y[] = {25, 25, 27, 31, 32}
Output : 0.953463
C++
// Program to find correlation coefficient
#include
  
using namespace std;
  
// function that returns correlation coefficient.
float correlationCoefficient(int X[], int Y[], int n)
{
  
    int sum_X = 0, sum_Y = 0, sum_XY = 0;
    int squareSum_X = 0, squareSum_Y = 0;
  
    for (int i = 0; i < n; i++)
    {
        // sum of elements of array X.
        sum_X = sum_X + X[i];
  
        // sum of elements of array Y.
        sum_Y = sum_Y + Y[i];
  
        // sum of X[i] * Y[i].
        sum_XY = sum_XY + X[i] * Y[i];
  
        // sum of square of array elements.
        squareSum_X = squareSum_X + X[i] * X[i];
        squareSum_Y = squareSum_Y + Y[i] * Y[i];
    }
  
    // use formula for calculating correlation coefficient.
    float corr = (float)(n * sum_XY - sum_X * sum_Y) 
                  / sqrt((n * squareSum_X - sum_X * sum_X) 
                      * (n * squareSum_Y - sum_Y * sum_Y));
  
    return corr;
}
  
// Driver function
int main()
{
  
    int X[] = {15, 18, 21, 24, 27};
    int Y[] = {25, 25, 27, 31, 32};
  
    //Find the size of array.
    int n = sizeof(X)/sizeof(X[0]);
  
    //Function call to correlationCoefficient.
    cout<


Java
// JAVA Program to find correlation coefficient
import java.math.*;
  
class GFG {
  
    // function that returns correlation coefficient.
    static float correlationCoefficient(int X[],
                                    int Y[], int n)
    {
       
        int sum_X = 0, sum_Y = 0, sum_XY = 0;
        int squareSum_X = 0, squareSum_Y = 0;
       
        for (int i = 0; i < n; i++)
        {
            // sum of elements of array X.
            sum_X = sum_X + X[i];
       
            // sum of elements of array Y.
            sum_Y = sum_Y + Y[i];
       
            // sum of X[i] * Y[i].
            sum_XY = sum_XY + X[i] * Y[i];
       
            // sum of square of array elements.
            squareSum_X = squareSum_X + X[i] * X[i];
            squareSum_Y = squareSum_Y + Y[i] * Y[i];
        }
       
        // use formula for calculating correlation 
        // coefficient.
        float corr = (float)(n * sum_XY - sum_X * sum_Y)/
                     (float)(Math.sqrt((n * squareSum_X -
                     sum_X * sum_X) * (n * squareSum_Y - 
                     sum_Y * sum_Y)));
       
        return corr;
    }
       
    // Driver function
    public static void main(String args[])
    {
       
        int X[] = {15, 18, 21, 24, 27};
        int Y[] = {25, 25, 27, 31, 32};
       
        // Find the size of array.
        int n = X.length;
       
        // Function call to correlationCoefficient.
        System.out.printf("%6f",
                 correlationCoefficient(X, Y, n));
       
          
    }
}
  
/*This code is contributed by Nikita Tiwari.*/


Python
# Python Program to find correlation coefficient.
import math
  
# function that returns correlation coefficient.
def correlationCoefficient(X, Y, n) :
    sum_X = 0
    sum_Y = 0
    sum_XY = 0
    squareSum_X = 0
    squareSum_Y = 0
      
      
    i = 0
    while i < n :
        # sum of elements of array X.
        sum_X = sum_X + X[i]
          
        # sum of elements of array Y.
        sum_Y = sum_Y + Y[i]
          
        # sum of X[i] * Y[i].
        sum_XY = sum_XY + X[i] * Y[i]
          
        # sum of square of array elements.
        squareSum_X = squareSum_X + X[i] * X[i]
        squareSum_Y = squareSum_Y + Y[i] * Y[i]
          
        i = i + 1
       
    # use formula for calculating correlation 
    # coefficient.
    corr = (float)(n * sum_XY - sum_X * sum_Y)/
           (float)(math.sqrt((n * squareSum_X - 
           sum_X * sum_X)* (n * squareSum_Y - 
           sum_Y * sum_Y)))
    return corr
      
# Driver function
X = [15, 18, 21, 24, 27]
Y = [25, 25, 27, 31, 32]
       
# Find the size of array.
n = len(X)
  
# Function call to correlationCoefficient.
print ('{0:.6f}'.format(correlationCoefficient(X, Y, n)))
  
# This code is contributed by Nikita Tiwari.


C#
// C# Program to find correlation coefficient
using System;
  
class GFG {
   
    // function that returns correlation coefficient.
    static float correlationCoefficient(int []X, int []Y,
                                                   int n)
    {
        int sum_X = 0, sum_Y = 0, sum_XY = 0;
        int squareSum_X = 0, squareSum_Y = 0;
        
        for (int i = 0; i < n; i++)
        {
            // sum of elements of array X.
            sum_X = sum_X + X[i];
        
            // sum of elements of array Y.
            sum_Y = sum_Y + Y[i];
        
            // sum of X[i] * Y[i].
            sum_XY = sum_XY + X[i] * Y[i];
        
            // sum of square of array elements.
            squareSum_X = squareSum_X + X[i] * X[i];
            squareSum_Y = squareSum_Y + Y[i] * Y[i];
        }
        
        // use formula for calculating correlation 
        // coefficient.
        float corr = (float)(n * sum_XY - sum_X * sum_Y)/
                     (float)(Math.Sqrt((n * squareSum_X -
                     sum_X * sum_X) * (n * squareSum_Y - 
                     sum_Y * sum_Y)));
        
        return corr;
    }
        
    // Driver function
    public static void Main()
    {
        
        int []X = {15, 18, 21, 24, 27};
        int []Y = {25, 25, 27, 31, 32};
        
        // Find the size of array.
        int n = X.Length;
        
        // Function call to correlationCoefficient.
        Console.Write(Math.Round(correlationCoefficient(X, Y, n) *
                                            1000000.0)/1000000.0);
        
           
    }
}
   
//This code is contributed by Anant Agarwal.


PHP


输出 :

0.953463

参考 –
相关系数–维基百科