给定两个数组元素,我们必须找到两个数组之间的相关系数。相关系数是用于确定两个变量之间关系强度的方程式。相关系数有时称为互相关系数。相关系数始终在-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
参考 –
相关系数–维基百科