R相关分析(二)
相关性分析
本节提到的相关性分析和后面会提到的t-test, ANOVA 以及回归分析等被称为参数检验,这些检验在进行时我们常默认数据符合一定前提条件,如符合正态分布和方差相等等。当样本数量大于30时,根据中心极限定理,我们通常认为数据符合正态分布;在进行t-test 和ANOVA 分析时,还需要满足样本方差相等。
在进行各种检验之前需要初步检验数据是否符合某种检验的前提条件,如果不符合则应该考虑使用非参数检验或其他方法。
正态分布评估
在评估数据集是否符合正态分布时通常会采用Shapiro-Wilk’s test和图示(Q-Q plot)结合的方法。使用Q-Q plot(quantile-quantile plot)的结果较直观,使用Shapiro-Wilk’s test显著性检验的方法更准确(相对而言)。
Shapiro-Wilk’s test 结果受样本量的影响非常大,当样本量很大时即便数据符合正态分布也容易出现p值很小进而拒绝原假设的情况(该检验原假设是样本来自于正态分布)。样本量很小时即便真实数据不s是来自正态分布,也可能接受原假设。
这里试举一例
# 分别随机生成两组二项分布和指数分布随机数
set.seed(90)
x <- rbinom(15,8,0.7)
y <- rexp(15,0.5)
shapiro.test(x)
# Shapiro-Wilk normality test
# data:x
# W = 0.95996, p-value = 0.6917
shapiro.test(y)
# Shapiro-Wilk normality test
# data:y
# W = 0.96168, p-value = 0.7216
可以发现,即便我们生成的两个样本都不是正态分布,但是检验的结果仍然没有拒绝原假设(没有拒绝不等于接受原假设)。好在R中该函数限制检测的样本个数是3到5000。因此,同时结合图像来分析还是很必要的。
一般使用Q-Q plot来检验是否符合正态分布,R中默认的函数是
qqnorm()
;ggplot2中可以使用函数qplot()
;qqpubr包是基于ggplot2二次开发的简易升级版,操作更加友好,可以使用函数ggqqplot()
。下面利用生成的数据绘图。
# 生成符合正态分布的一组数据并绘图
z <- rnorm(50)
qqnorm(z)library(ggplot2)
qplot(sample=z)library(ggpubr)
ggqqplot(z)
文章图片
image
文章图片
image
文章图片
image 相关性分析
Pearson相关系数、Spearman相关系数、Kendall相关系数都可以用来表示变量之间的相关性,一般情况使用pearson相关系数更多,如果明确样本不符合正态分布可以使用kendall或者spearman相关系数。这三种相关系数都可以通过
cor()
函数来进行计算,下面通过R已有数据集cars,查看汽车车速和刹车距离之间的相关性。pearson相关系数计算公式
文章图片
Screenshot 2020-03-06 at 5.39.00 PM.png 其中m表示均值。
cor(cars, method = "pearson")
相关性可视化展示
可以使用散点图进行两个变量之间的相关性展示。
plot(cars)ggplot(cars, aes(x=speed, y=dist))+ geom_point()
# 可以画出拟合曲线:ggplot(data=https://www.it610.com/article/dat, aes(x=gene, y=gene2))+geom_point(color="red")+stat_smooth(method="lm",se=FALSE)
# stat_smooth是画拟合曲线的函数
# se=FALSE意思为不画出置信区间
文章图片
image
文章图片
image
文章图片
image.png
se=FALSE
文章图片
image.png
无se=FALSE
library(ggpubr)
ggplot(data=https://www.it610.com/article/dat, aes(x=gene, y=gene2))+geom_point(color="red")+stat_smooth(method="lm",se=FALSE)++stat_cor(data=https://www.it610.com/article/dat, method ="pearson")
#stat_cor(data=https://www.it610.com/article/dat, method ="pearson")意为用pearson相关进行相关性分析,可以自行更改方法ggscatter(cars,x="speed", y="dist",\
add = "reg.line", conf.int = T,cor.coef = T)
文章图片
image.png
文章图片
image Pearson 相关性检验
前面我们只是计算了两个变量之间的相关性,还应该对相关进行显著性检验。原假设为变量之间没有相关性,使用函数为
cor.test()
cor.test(cars$speed,cars$dist,\
alternative = "two.side", method = "pearson")
统计结果中,t表示t检验统计量,df表示自由度,pvalue是t检验的显著性水平,conf.int表示95%的置信区间,sample estimates 是相关系数。相关系数越接近-1表示负相关,接近1表示正相关。
遇到的bug Rstudio中ggpubr安装失败
Install and load ggpubr 【R相关分析(二)】Install from CRAN as follow:
install.packages("ggpubr")
Install the latest version from GitHub as follow:
# Install
if(!require(devtools)) install.packages("devtools")
devtools::install_github("kassambara/ggpubr")
推荐阅读
- EffectiveObjective-C2.0|EffectiveObjective-C2.0 笔记 - 第二部分
- 遇到一哭二闹三打滚的孩子,怎么办┃山伯教育
- 赢在人生六项精进二阶Day3复盘
- 2019年12月24日
- 陇上秋二|陇上秋二 罗敷媚
- 如何寻找情感问答App的分析切入点
- 一百二十三夜,请嫁给我
- 迷失的世界(二十七)
- D13|D13 张贇 Banner分析
- 我要我们在一起(二)