数据挖掘|R-相关性分析及检验
相关系数可以用来描述定量变量之间的关系。结果的正负号分别表明正相关或负相关,数值的大小则表示相关关系的强弱程度。
R可以计算多种相关系数,今天主要介绍常见的三种:Pearson相关系数、Spearman相关系数 和 Kendall相关系数。这三种相关系数均可以通过R语言的cor函数计算,method函数指定即可。
一 相关性分析
1.1 Pearson相关系数
度量两个连续变量之间的线性相关程度,需要两个变量的标准差都不为零。此外皮尔逊相关系数适用条件为:
1)变量之间为线性关系,且均为连续数据。
2)变量总体呈正态分布,或接近正态。
x<-mtcars[,c("disp","hp","drat")]
y<-mtcars[,c("disp","hp","drat")]
cor(x,y,method = "pearson")
disp hp drat
disp 1.0000000 0.7909486 -0.7102139
hp 0.7909486 1.0000000 -0.4487591
drat -0.7102139 -0.4487591 1.0000000
1.2 Spearman等级相关系数
衡量非线性关系变量间的相关系数,是一种非参数的统计方法。变量是成对的等级评定,或者是由连续变量观测资料转化得到的等级资料。
x<-mtcars[,c("cyl","gear","carb")]
y<-mtcars[,c("cyl","gear","carb")]
cor(x,y,method = "spearman")
cyl gear carb
cyl 1.0000000 -0.5643105 0.580068
gear -0.5643105 1.0000000 0.114887
carb 0.5800680 0.1148870 1.000000
Spearman等级相关系数是根据每个值所处的排列位置的差值,求相关性系数。可用于计算实验数据分析中的不同组学数据之间的相关性。
1.3 Kendall秩相关系数
也是一种非参数的等级相关度量,类似Spearman相关系数。对象是分类变量。可以无序,性别(男、女)、血型(A、B、O、AB);可以有序,评分(优、中、差)等。
X<- c(3,1,2,2,1,3)
Y<- c(1,2,3,2,1,1)
cor(X,Y,method="kendall")
[1] -0.2611165
假设X Y 分别为两个裁判对选手的评级---3为优,2为中,1为差,结果可以看出两位裁判对选手们的看法呈相反趋势,但相反程度不大。
二 相关性显著性检验
2.1 单次相关关系检验
使用cor.test()函数,cor.test(x,y,alternative=,method=)。
其中的x和y为要检验相关性的变量,alternative指定进行双侧检验或单侧检验(取值"two.side"、"less"或"greater"),method指定计算的相关类型("pearson"、 "kendall"或"spearman")。
cor.test(mtcars[,"disp"],mtcars[,"hp"])
2.2 计算相关矩阵并进行显著性检验
psych包中 corr.test()函数。corr.test(x, y = NULL, use = "pairwise",method="pearson",adjust="holm",alpha=.05,ci=TRUE,minlength=5)
corr.test(mtcars[,1:10], adjust = "none", use = "complete")
可得到矩阵数据集中两两变量之间得相关系数以及显著性检验得P值。
OK, 注意要根据变量的实际情况选择合适的相关系数以及显著性检验的计算方式。
之前介绍了绘图系列|R-corrplot相关图进行相关系数的可视化,后面也会再介绍一些其他的相关系数可视化的函数。
- 你不可错过的二维码生成与解析-java后台与前端js都有
- Windows服务创建及安装
- dede自定义表单增加添加时间怎么弄
- nodejs配置简单HTTP服务器
- marquee一行代码实现滚动跑马灯效果无需js
- 如何用SQL命令行工具删除dedecms指定id文章
- 怎么采集dedecms自定义内容模型
- dedecms怎样调用指定id文章?
- c++ list, vector, map, set 区别与用法比较
- 前台开发从头说起:谈谈CSS选择符
- dedecms无法登录提示本页面禁止返回
- 前台开发从头说起:理解css盒模型
- 两个js冲突怎么解决?试试这四个方法
- dedecms如何去除后台登陆验证码
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- OpenGL ES 3.0 | 着色器编译器
- LeetCode题目23:合并K个排序链表
- LeetCode题目24:两两交换链表中的节点
- 最难链表题——LeetCode题目25:K 个一组翻转链表
- LeetCode题目26:删除排序数组中的重复项
- PCA算法原理及实现
- LeetCode题目27:移出元素
- LeetCode题目28:实现strStr()
- LeetCode题目29:两数相除
- LeetCode题目30:串联所有单词的子串
- LeetCode题目31:下一个排列
- LeetCode题目33:搜索旋转排序数组
- LeetCode题目34:在排序数组中查找元素的第一个和最后一个位置
- LeetCode题目35:搜索插入位置
- LeetCode题目36:有效的数独