Коэфициент кореляции показывает есть ли линейная зависимость у точек.

Допустим у нас есть стандартные отклонения для x(SDx) и y(SDy). Для начала нам нужно перевести xi и yi в стандартные единицы по формуле:

назовём получившиеся массивы как x* и y* соответственно. Теперь получаем коэфициент кореляции по формуле:

Результат будет от -1 до 1. Чем ближе результат к нулю, тем хаотичнее расположены точки. Если результат близок к 1, то точки расположены на линии идущей вверх, если близок к -1, то линия идёт вниз.

import math

M=lambda x: float(sum(x))/len(x)
def S(X):
    a = [((x) - M(X))**2 for x in X]
    return math.sqrt(M(a))


X=[1,2,3,4,5,6]
Y=[1,2,3,4,5,7]#!!!
def StdUnits(X):
    a = [(x) - M(X) for x in X]
    Xstar = [x/S(X) for x in a]
    return Xstar

def corr(X,Y):
    a=StdUnits(X)
    b=StdUnits(Y)
    c=[a[i]*b[i] for i in range(len(a))]
    return sum(c)/len(c)

print corr(X,Y) #0.98 because of 7 in Y