Golang : Find correlation coefficient example
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
See also : Golang : Calculate Relative Strength Index(RSI) example
By Adam Ng(黃武俊)
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+4.7k MariaDB/MySQL : How to get version information
+11.6k SSL : The certificate is not trusted because no issuer chain was provided
+9.7k PHP : Get coordinates latitude/longitude from string
+10.6k Golang : How to unmarshal JSON inner/nested value and assign to specific struct?
+28.6k Get file path of temporary file in Go
+7k Golang : constant 20013 overflows byte error message
+12.7k Golang : Drop cookie to visitor's browser and http.SetCookie() example
+6.6k Golang : Spell checking with ispell example
+8.9k Golang : GMail API create and send draft with simple upload attachment example
+11.5k Use systeminfo to find out installed Windows Hotfix(s) or updates
+26.7k Golang : How to check if a connection to database is still alive ?
+14.4k Golang : How to filter a map's elements for faster lookup