皮尔逊相关系数 和 R^2

来源:互联网 发布:海贼王 居鲁士 知乎 编辑:程序博客网 时间:2024/05/21 06:17
# -*- coding: utf-8 -*-"""Created on Thu Nov 16 13:52:16 2017@author: WANGHONGWEI950"""import numpy as npimport math#计算皮尔逊相关系数def computerCorrelation(X,Y):    xBar = np.mean(X)    yBar = np.mean(Y)    SSR = 0    VarX = 0    VarY = 0    for i in range(0, len(X)):        diffXXBar =X[i] - xBar        diffYYBar =Y[i] - yBar        SSR += (diffXXBar * diffYYBar)        VarX += diffXXBar ** 2        VarY += diffYYBar ** 2    SST = math.sqrt(VarX * VarY)    return SSR/SST#计算决定系数R^2def polyfit(x, y, degree):    results = {}    coeffs = np.polyfit(x, y, degree)    #多项式    results['polynomial'] = coeffs.tolist()    print (results)    p = np.poly1d(coeffs)    yhat = p(x)    ybar = np.sum(y)/len(y)    ssreg = np.sum((yhat -ybar)**2)    print ("ssreg:",ssreg)    sstot = np.sum((y-ybar)**2)    print ("sstot:",sstot)    #决定系数    results['determination'] = ssreg/sstot    print (results)    return resultstestX = [1,3,8,7,9]testY = [10,12,24,21,34]print ("r:", computerCorrelation(testX, testY))print ("r^2:", str(computerCorrelation(testX, testY)**2))print (polyfit(testX,testY,1)["determination"])
原创粉丝点击