day-14 迴歸中的相關係數和決定係數概念及Python實現

  衡量一個迴歸模型經常使用的兩個參數:皮爾遜相關係數和R平方python

1、皮爾遜相關係數

  在統計學中,皮爾遜相關係數( Pearson correlation coefficient),又稱皮爾遜積矩相關係數(Pearson product-moment correlation coefficient,簡稱 PPMCC或PCCs),是用於度量兩個變量X和Y之間的相關(線性相關),其值介於-1與1之間。spa

   

  實際可用以下公式進行計算:ssr

  

  若大於0,表示正向相關,小於0,表示負向相關,等於0,表示不相關3d

2、決定係數:R平方值

         定義:反應因變量的所有變異能經過迴歸關係被自變量解釋的比例。code

        

         特別的對於簡單線性迴歸模型時blog

  其中(Sum square regression)表示全部預測值與平方值的變異量,(Sum square total)表示全部真實值與平方值的變異量,(Sum square regression)表示真實值與預測值的變異量ci

            

         例如當爲0.8時,表示80%能夠用模型來解釋it

         實際應用中,爲了抵消樣本數量對評估參數的影響,咱們須要對R平方表示式進行修正爲:io

        

         表示樣本的R平方值,表示樣本大小,表示預測值數量class

3、python代碼實現

  對於簡單線性迴歸,分別計算相關係數和決定係數,並驗證公式:

import numpy as np
import math

x = np.array([1,3,8,7,9])
y = np.array([10,12,24,21,34])

# 計算相關度
def computeCorrelation(x,y):
    xBar = np.mean(x)
    yBar = np.mean(y)
    SSR = 0.0
    varX = 0.0
    varY = 0.0
    for i in range(0,len(x)):
        diffXXbar = x[i] - xBar
        difYYbar = y[i] - yBar
        SSR += (diffXXbar * difYYbar)
        varX += diffXXbar**2
        varY += difYYbar**2
    SST = math.sqrt(varX * varY)
    return SSR/SST

# 計算R平方
def polyfit(x,y,degree):
    results = {}
    coeffs = np.polyfit(x,y,degree)
    results['polynomial'] = coeffs.tolist()
    p = np.poly1d(coeffs)
    yhat = p(x)
    ybar = np.sum(y)/len(y)
    ssreg = np.sum((yhat - ybar)**2)
    sstot = np.sum((y - ybar)**2)
    results['determination'] = ssreg/sstot
    return results

result = computeCorrelation(x,y)
r = result
r_2 = result**2
print("r:",r)
print("r^2:",r*r)
print(polyfit(x,y,1)['determination'])

  經過結果驗證,簡單線性迴歸模型中,成立

  

相關文章
相關標籤/搜索