# Golang : Find correlation coefficient example

Tags :

Below is an example of Golang code to find the strength of relation between two given variables or correlation coefficient. For financial analysis, it is useful in finding out if a variable has negative or positive correlation.

From investopedia.com:

A correlation of -1.0 shows a perfect negative correlation, while a correlation of 1.0 shows a perfect positive correlation. A correlation of 0.0 shows zero or no relationship between the movement of the two variables.

Here you go!

`````` package main

import (
"fmt"
"math"
)

func main() {
X := []int{15, 18, 21, 24, 27}
Y := []int{25, 25, 27, 31, 32}

// Size of X array.
n := len(X)

// Get the strength of relation between two variables - X and Y
fmt.Println(correlationCoefficient(X, Y, n))

}

func correlationCoefficient(X []int, Y []int, n int) float64 {

sum_X := 0
sum_Y := 0
sum_XY := 0
squareSum_X := 0
squareSum_Y := 0

for 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.
corr := float64((n*sum_XY - sum_X*sum_Y)) /
(math.Sqrt(float64((n*squareSum_X - sum_X*sum_X) * (n*squareSum_Y - sum_Y*sum_Y))))

return corr

}
``````

Output:

0.9534625892455922

References :

https://www.investopedia.com/terms/c/correlationcoefficient.asp

https://www.geeksforgeeks.org/program-find-correlation-coefficient

https://www.socketloop.com/tutorials/golang-convert-cast-int-to-float-example