回归中的相关度和R平方值(麦子学院)

来源:互联网 发布:海信智能网络电视 编辑:程序博客网 时间:2024/05/16 09:38

 回归中的相关度和R平方值


  1. 皮尔逊相关系数 (Pearson Correlation Coefficient): 
    1.1 衡量两个值线性相关强度的量 
    1.2 取值范围 [-1, 1]: 
    正向相关: >0, 负向相关:<0, 无相关性:=0

     1.3

    这里写图片描述 
    这里写图片描述

  2. 计算方法举例:

X Y 
1 10 
3 12 
8 24 
7 21 
9 34

  1. 其他例子:

    这里写图片描述

  2. R平方值:

    4.1定义:决定系数,反应因变量的全部变异能通过回归关系被自变量解释的比例。

    4.2 描述:如R平方为0.8,则表示回归关系可以解释因变量80%的变异。换句话说,如果我们能控制自变量不变,则因变量的变异程度会减少80%

    4.3: 简单线性回归:R^2 = r * r 
    多元线性回归: 
    这里写图片描述

这里写图片描述

这里写图片描述

  1. R平方也有其局限性:R平方随着自变量的增加会变大,R平方和样本量是有关系的。因此,我们要到R平方进行修正。修正的方法:

    这里写图片描述


import numpy as npimport mathimport matplotlib.pylab as pltfrom bokeh.charts.builders.scatter_builder import Scatterdef computeCorrelation(X, Y):    xBar = np.mean(X)    yBar = np.mean(Y)    varX=0    varY=0    SSR = 0    for i  in range(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/SSTdef ployfit(x, y, degree):    result={}    coffs = np.polyfit(x,y, degree)    result['polynomial']=coffs.tolist()#     print coffs    p= np.poly1d(coffs)#     print p    yhat = p(x)#     print yhat," ----"    fig.scatter(x,yhat)    ybar=np.sum(y)/len(y)    ssreg=np.sum((yhat-ybar)**2)    sstot=np.sum((y-ybar)**2)    result['determination']=ssreg/sstot    return resultfig=plt.subplot() testX = [1, 3, 8, 7, 9]testY = [10, 12, 24, 21, 34]r = computeCorrelation(testX, testY)  print 'r:',rprint "r*r:",r*rresult=ployfit(testX, testY, 1)print resultfig.scatter(testX,testY,color="green")plt.show()                

原创粉丝点击