Skip to content

Instantly share code, notes, and snippets.

@eLtronicsVilla
Created May 24, 2019 15:10
Show Gist options
  • Save eLtronicsVilla/b171931fa0a92be01de521038c4423cc to your computer and use it in GitHub Desktop.
Save eLtronicsVilla/b171931fa0a92be01de521038c4423cc to your computer and use it in GitHub Desktop.
import math
import numpy as np
data_X = [5,6,8,12,15,18,10]
data_Y = [1,4,6,8,10,12,14]
def mean(x):
return sum(x)/len(x)
def de_mean(data):
# convert x by subtracting its mean ( so the result has mean 0)
x_bar = mean(data)
return [x_i - x_bar for x_i in data]
def sum_of_square(v):
return np.dot(v,v)
def covariance(x,y):
n = len(x)
return np.dot(de_mean(x), de_mean(y)) / (n-1)
def variance(data):
n = len(data)
deviations = de_mean(data)
return sum_of_square(deviations) / (n-1)
def standard_deviation(data):
return math.sqrt(variance(data))
def correlation(x,y):
stdev_x = standard_deviation(x)
stdev_y = standard_deviation(y)
if stdev_x > 0 and stdev_y > 0:
return covariance(x,y) / stdev_x / stdev_y
else:
return 0
print(correlation(data_X,data_Y))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment