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