变量类型与推荐的假设检验方法

可以看到,当我们探索两个连续变量之间的关系时,相关分析是一个很好的选择。那么,相关分析的原理是什么?如何在Python中实现相关分析呢?

一、Pearson相关系数

针对两个独立的服从正态分布的连续变量,我们常用Pearson相关系数来衡量它们之间的相关性。Pearson相关系数的值域为[-1, 1],当相关系数小于0时,表明两变量之间存在线性负相关关系;当相关系数大于0时,表明两变量之间存在线性正相关关系;当相关系数等于0时,表明两变量之间无明显的相关关系。

当变量不符合正态分布或者是顺序型变量时,我们常用Spearman相关系数来衡量变量间的关系;当我们需要探索变量间的非线性关系时,可以使用Kendall相关系数。不过这些不在本篇的讨论范围内,如果感兴趣的人多,可以在下方留言。

一般情况下,我们用r来表示相关系数,r的取值与相关程度之间的关系如下:

皮尔逊相关系数的计算很简单。假设我们有两组数据,一组为x,一组为y。那么x与y之间的协方差作为分子,x的标准差与y的标准差之间的乘积作为分母,得到的就是x与y之间的相关系数r,我们用公式表示如下:

计算出相关系数r之后,我们还要检验它是否具有统计学意义,即我们常说的是否显著。这里我们检验的计算公式为:

然后我们从t分布中找到对应的P值,与我们设定的显著性水平做一下对比,比如说我们设定了显著性水平为0.05,当P值小于0.05时,我们就拒绝零假设,认定x与y之间存在显著的线性相关。需要注意的是,P值大小不代表两个变量间相关性的强弱,r的大小才是衡量相关性的统计量。

当然,现在这些繁琐的过程我们可以统统交给计算机来处理。

二、Python相关分析

在pandas中,计算相关系数非常简单:

我们还可以用热力图来更直观地感受一下:

sns.heatmap(iris.corr(), cmap='bwr', center=0)

除了sepal_width变量与其他变量负相关以外,其他三个变量间都高度正相关。

但是我们注意到,这里并没有显著性检验的信息,那么我们如何得到这些信息呢?答案就是使用Scipy,Scipy是Python中一个非常强大的科学计算库,提供了很多关于统计、科学计算的方法。

scipy.stats.pearsonr方法会根据输入的两组数据,计算Pearson相关性,返回相关系数r以及显著性检验的P值,当P值低于我们设定的显著性水平时,即可认为变量间显著相关。

from scipy.stats import pearsonrpearsonr(iris.sepal_length, iris.petal_length)

输出为:

(0.8717537758865832, 1.0386674194497583e-47)

好了,关于Pearson相关的分享就到这里,有任何问题可以在下方留言,我会及时回答。另外,除了计算相关系数,散点图、回归图等都很适合用来探索变量间的关系,感兴趣的可以去看我的历史文章中关于数据可视化的几个系列。

相关性分析p值_一行代码掌握皮尔逊相关分析,洞察变量关系相关推荐

  1. 灰色的rgb值_一行代码实现图片的灰色效果

    今天是清明节,警笛长鸣,万众默哀.送别英雄,生活继续. 大部分的app配图,今天都是灰色.这种图片的转换在python里非常容易实现.一行代码搞定. 下面是DE8UG上次说个故事:再见VB.你好,精彩 ...

  2. http代码_一行代码就可以实现HTTP文件服务器,他为什么写了150行?

    互联网已经发展了20多年,web技术早已经不是什么新消息,现在更多的程序员讨论的都是web框架,技术框架,高可用框架等.在框架的背后,其实还是要了解最底层的核心内容,比如TCP/IP协议怎么回事,HT ...

  3. datatables 一行数据生成两行_一行代码搞定分组回归

    写 在前面 在目前为止所有小伙伴们向大猫请教过的R问题中,大猫总结了最常遇见同时也是比较难的三个问题,分别是(1)事件研究法:(2)分组回归:(3)滚动回归.事件研究法在第一期中已经讲述,本期我们就来 ...

  4. java怎么看内存值_【java】内存分析

    在J2SE中,通过进行内存分析,可以让我们更好的理解我们的程序在内存中是怎么被分配内存的.也能让我们更好的理解我们的代码是怎么运行的. 对于我自己来说分析内存也是一件很有趣的事情.所以下面通过一个例子 ...

  5. 为了提高python代码运行速度和进行_一行代码让你的python运行速度提高100倍

    Python用的好,猪也能飞起来.今天,带大家学习如何让Python飞起来的方法,干货满满哦! python一直被病垢运行速度太慢,但是实际上python的执行效率并不慢,慢的是python用的解释器 ...

  6. 当当网电子书能打印吗_一行代码就能写一个日志打印组件,你信吗?为你揭晓RTOS中日志打印组件的核心

    1. 做实验引发的思考 在学习LiteOS日志打印组件使用的时候,我记录了一篇博客:atiny_log | LiteOS 物联网操作系统中的日志打印组件使用分享,关于实验的具体内容,请阅读这篇博客(点 ...

  7. mapbox 修改初始位置_一行代码教你如何随心所欲初始化Bert参数(附Pytorch代码详细解读)...

    微信公众号:NLP从入门到放弃 微信文章在这里(排版更漂亮,但是内置链接不太行,看大家喜欢哪个点哪个看吧): 一行代码带你随心所欲重新初始化bert的参数(附Pytorch代码详细解读)​mp.wei ...

  8. 局域网怎么查看单位摄像头_一行代码,实现多平台文件查看传输!

    几个不错的通过网站传输文件的工具,其实了解python的朋友可能都知道,借助它,只需要输入一行代码,就可以将电脑变成一台服务器,局域网内的任何能上网的工具都能够查看和下载电脑中的文件. 方法很简单,可 ...

  9. python童年_一行代码玩童年小游戏

    首先,我们要打开cmd,以此下载freegames这个包.有一些新手小白可能会问:cmd是什么-- 打开cmd 首先按住笔记本电脑(或者台式机)的win键(就是四个小方块组成一个梯形的键),接着按下r ...

最新文章

  1. Java微信公众平台开发(十)--微信自定义菜单的创建实现
  2. PointASNL: 点云的Adaptive Sampling(CVPR2020)
  3. React Native Android启动白屏的一种解决方案上
  4. 查找数组B中不在数组A中的元素
  5. 让事件飞——Linux eventfd 原理
  6. mysql 根据当前时间戳_mysql timestamp类型 根据当前时间戳更新
  7. java多个数据库_java – 我们可以有多个dataSources到单个数据库
  8. ecshop mysql 报错_ecshop数据库操作函数
  9. SOA与云计算有多大关联?
  10. php如何实现记录步数,微信步数获取-PHP后端部分
  11. C语言图书信息管理系统
  12. pycharm无法import本地安装好的第三方库问题
  13. 心跳包(HeartBeat)
  14. 打包小程序公众图标素材6113个菜单栏素材
  15. VCC、 VDD、VEE、VSS 电压理解
  16. ev3 编程中各程序块之间的关联
  17. Java: 获取MAC网络地址
  18. java 如何上传文件_java如何上传文件 | 快速入门
  19. PB12.6INI配置文件乱码问题(ansi|utf8)
  20. Python实现王者荣耀小助手(二)

热门文章

  1. 十进制字符串转十六进制字符串
  2. antd 表单提交,文件和表单内容一起提交,表单校验
  3. VUE 动态绑定class
  4. the folder is already a source folder.
  5. 数据变金矿:一文读懂序列模型(附用例)
  6. 关于String数组的用法
  7. PL/SQL 中Returning Into的用法
  8. Struts1.x系列教程(4):标签库概述与安装
  9. 《QTP自动化测试进阶》(1)
  10. 孙鑫mfc学习笔记第十四课