衡量一個迴歸模型經常使用的兩個參數:皮爾遜相關係數和R平方python
在統計學中,皮爾遜相關係數( Pearson correlation coefficient),又稱皮爾遜積矩相關係數(Pearson product-moment correlation coefficient,簡稱 PPMCC或PCCs),是用於度量兩個變量X和Y之間的相關(線性相關),其值介於-1與1之間。spa
實際可用以下公式進行計算:ssr
若大於0,表示正向相關,小於0,表示負向相關,等於0,表示不相關3d
定義:反應因變量的所有變異能經過迴歸關係被自變量解釋的比例。code
特別的對於簡單線性迴歸模型時:blog
其中(Sum square regression)表示全部預測值與平方值的變異量,(Sum square total)表示全部真實值與平方值的變異量,(Sum square regression)表示真實值與預測值的變異量ci
例如當爲0.8時,表示80%能夠用模型來解釋it
實際應用中,爲了抵消樣本數量對評估參數的影響,咱們須要對R平方表示式進行修正爲:io
表示樣本的R平方值,表示樣本大小,表示預測值數量class
對於簡單線性迴歸,分別計算相關係數和決定係數,並驗證公式:
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'])
經過結果驗證,簡單線性迴歸模型中,成立