python相關系數


皮爾遜相關系數:

 

用於度量兩個變量X和Y之間的相關(線性相關),其值介於-1與1之間。

 

幾組的點集,以及各個點集中之間的相關系數。我們可以發現相關系數反映的是變量之間的線性關系和相關性的方向(第一排),而不是相關性的斜率(中間),也不是各種非線性關系(第三排)。請注意:中間的圖中斜率為0,但相關系數是沒有意義的,因為此時變量是0。

 

 

它的幾何意義,就是夾角的余弦值:

 

下面是python的程序實現:

def multipl(a,b):
    """
    傳入的是兩個序列
    傳出的是這兩個序列的乘積之和。
    """
    sumofab=0.0
    for i in range(len(a)):
        temp=a[i]*b[i]
        sumofab+=temp
    return sumofab

 

def corrcoef(x,y):                                                             
    """
    傳入的是兩個序列,得到的是兩個序列的相關系數
    """
    n=len(x)
    #求和
    sum1=sum(x)
    sum2=sum(y)
    #求乘積之和
    sumofxy=multipl(x,y)
    #求平方和
    sumofx2 = sum([pow(i,2) for i in x])
    sumofy2 = sum([pow(j,2) for j in y])
    num=sumofxy-(float(sum1)*float(sum2)/n)
    #計算皮爾遜相關系數
    den=sqrt((sumofx2-float(sum1**2)/n)*(sumofy2-float(sum2**2)/n))
    return num/den

 上面的程序是根據下面的公式推導得到的:

 

 

 

 

但是這個程序在輸入

    x = [1,2,3,4]
    y = [1,1,1,1] 

時會出現問題:分母會有0的出現(橘色方框部分就是0)

報錯:ZeroDivisionError: float division by zero

這個是公式的漏洞嗎?????

按理說,完整的相關系數應該考慮到這一點才對。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM