衡量一个回归模型常用的两个参数:皮尔逊相关系数和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代码实现

  对于简单线性回归,分别计算相关系数和决定系数,并验证公式:

  1. import numpy as np
  2. import math
  3.  
  4. x = np.array([1,3,8,7,9])
  5. y = np.array([10,12,24,21,34])
  6.  
  7. # 计算相关度
  8. def computeCorrelation(x,y):
  9. xBar = np.mean(x)
  10. yBar = np.mean(y)
  11. SSR = 0.0
  12. varX = 0.0
  13. varY = 0.0
  14. for i in range(0,len(x)):
  15. diffXXbar = x[i] - xBar
  16. difYYbar = y[i] - yBar
  17. SSR += (diffXXbar * difYYbar)
  18. varX += diffXXbar**2
  19. varY += difYYbar**2
  20. SST = math.sqrt(varX * varY)
  21. return SSR/SST
  22.  
  23. # 计算R平方
  24. def polyfit(x,y,degree):
  25. results = {}
  26. coeffs = np.polyfit(x,y,degree)
  27. results['polynomial'] = coeffs.tolist()
  28. p = np.poly1d(coeffs)
  29. yhat = p(x)
  30. ybar = np.sum(y)/len(y)
  31. ssreg = np.sum((yhat - ybar)**2)
  32. sstot = np.sum((y - ybar)**2)
  33. results['determination'] = ssreg/sstot
  34. return results
  35.  
  36. result = computeCorrelation(x,y)
  37. r = result
  38. r_2 = result**2
  39. print("r:",r)
  40. print("r^2:",r*r)
  41. print(polyfit(x,y,1)['determination'])

  通过结果验证,简单线性回归模型中,成立

  

day-14 回归中的相关系数和决定系数概念及Python实现的更多相关文章

  1. Ubuntu 14.04中Elasticsearch集群配置

    Ubuntu 14.04中Elasticsearch集群配置 前言:本文可用于elasticsearch集群搭建参考.细分为elasticsearch.yml配置和系统配置 达到的目的:各台机器配置成 ...

  2. Ubuntu 14.04中安装最新版Eclipse

    Ubuntu 14.04中安装最新版Eclipse 来源:Linux社区    作者:Linux 1.安装OpenJDK Java 7 如果你的系统中没有安装Java,我们需要按照如下步骤事先安装好 ...

  3. Ubuntu 14.04中gedit打开文件出现中文乱码问题

    http://blog.csdn.net/cywosp/article/details/32325449/ 在中文支持配置还不完整的Ubuntu 14.04中,使用gedit打开带有中文字符的文件有时 ...

  4. 如何在Ubuntu 14.04中安装最新版Eclipse

    想必很多开发人员都知道,Ubuntu 软件源中提供的并不是最新版本的 Eclipse,本教程就教大家如何在 Ubuntu 14.04 中快速安装 Eclipse 官方发布的最新版本. 到目前为止,Ec ...

  5. zhuan:点滴记录——Ubuntu 14.04中gedit打开文件出现中文乱码问题

    在中文支持配置还不完整的Ubuntu 14.04中,使用gedit打开带有中文字符的文件有时会出现乱码的情况,这是由于gedit对字符编码匹配不正确导致的,解决方法如下: 在终端中输入如下命令,然后重 ...

  6. 如何在Ubuntu 14.04中使用Samba共享文件

    Linux 下的文件共享利器 Samba 想必大家已经非常熟悉了,今天我们介绍下如何在Ubuntu 14.04中使用 Samba 共享网络文件.打印机和其它公共资源. 1.安装 Samba 和图形配置 ...

  7. 怎样在Ubuntu 14.04中安装Java(转)

    想知道如何在Ubuntu 14.04中安装Java?安装Java肯定是安装Ubuntu 14.04后首先要做的几件事情之一(见http://www.linuxidc.com/Linux/2014-04 ...

  8. 点滴记录——在Ubuntu 14.04中使SublimeText 3支持中文输入法

    在Ubuntu 14.04中安装了SublimeText 3之后发现既然不支持输入中文,于是在网上搜罗一下,发现非常多人遇到了相同的问题,可是解决的方法大该就仅仅有一个.以下依据自身的安装及解决的方法 ...

  9. [转载]Ubuntu 14.04中root 密码忘记解决方法

      Ubuntu 14.04中root 密码忘记解决方法 方法一: 如果用户具有sudo权限,那么直接可以运行如下命令: #sudo su root #passwd #更改密码 或者直接运行sudo ...

随机推荐

  1. php与java

    作者:eechen链接:https://www.zhihu.com/question/20377398/answer/141328982来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...

  2. pt-online-schema-change在线修改表结构

    工具简介 pt-osc模仿MySQL内部的改表方式进行改表,但整个改表过程是通过对原始表的拷贝来完成的,即在改表过程中原始表不会被锁定,并不影响对该表的读写操作.首先,osc创建与原始表相同的不包含数 ...

  3. C# 发送Http协议 模拟 Post Get请求

    1.参数 paramsValue的格式 要和 Reques.ContentType一致, 如果 contentype  "application/x-www-form-urlencoded& ...

  4. window server IIS组建方法

    文章来自:二度云IIS(Internet Information Server,互联网信息服务)是一种Web(网页)服务组件,其中包括Web服务器.FTP服务器.NNTP服务器和SMTP服务器,分别用 ...

  5. [转]Javascript removeChild()删除节点及删除子节点的方法(同样适用于jq)

    Javascript removeChild()删除节点及删除子节点的方法 这篇文章主要介绍了Javascript removeChild()删除节点及删除子节点的方法的相关资料,需要的朋友可以参考下 ...

  6. Java使用zxing生成解读QRcode二维码

    1.maven的pom配置jar包,如果不实用maven请手动下载jar包 <dependency> <groupId>com.google.zxing</groupId ...

  7. 【Keil】Keil5添加源程序和头文件

    xxx.c就是源程序 xxx.h就是头文件 [源程序添加方法] 双击文件夹,例如图片上的Source,跳出弹窗,选择需要添加的源程序即可 [添加头文件的方法] 1.首先点击图片红框处,或是在文件夹te ...

  8. django的验证码

    pip install Pillow==3.4.1在views.py中创建一个视图函数 from PIL import Image, ImageDraw, ImageFont from django. ...

  9. Django学习之mysql增删改查

    上节介绍了如何使用命令行操作mysql增删改查,现在介绍如何使用python管理mysql 使用pip 下载完mysql后,mysql会以pymysql模块的形式存储在pycharm的包文件里.我们通 ...

  10. golang使用rabbitMQ入门代码

    package main import ( "github.com/streadway/amqp" "log" "time" ) func ...