下面我们来用上次的数据,绘制一张好看的散点图:

数据格式准备如下,并将数据储存成csv格式:

相关性分析 R语言 可视化 pearson相关性分析r语言_相关分析

 下面开始绘制散点图:

读取文件:

setwd("D:\\")
dir()
data <- read.csv("PCC(1).csv",header = T,sep = ",")
head(data)

然后建一个线性模型:

model <- lm(data$GeneB~data$GeneA,data = data)
summary(model)

> summary(model)

Call:
lm(formula = data$GeneB ~ data$GeneA, data = data)

Residuals:
      Min        1Q    Median        3Q       Max 
-0.042368 -0.010605 -0.004979  0.003309  0.280395 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 0.023862   0.001442  16.548  < 2e-16 ***
data$GeneA  0.049984   0.006120   8.167 4.06e-15 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.02273 on 405 degrees of freedom
Multiple R-squared:  0.1414,	Adjusted R-squared:  0.1393 
F-statistic:  66.7 on 1 and 405 DF,  p-value: 4.057e-15

下面就是画图:

library(ggplot2)
a <- ggplot(data = data,aes(x = data$GeneA,y = data$GeneB))+
  geom_point(shape = 19,colour = "dodgerblue3")+
  labs(y = "GeneA",x = "GeneB")
a

将线性模型传入图中:

b <- a+stat_smooth(method = lm,se = F,colour = "red")
b
g <- b+theme(plot.title = element_text(hjust = 0.5,size = 15),
             axis.title.y.left = element_text(size = 13,colour = "black"),
             axis.title.x.bottom = element_text(size = 13,colour = "black"))
g
h <- g+theme(axis.text.x.bottom = element_text(size = 12,colour = "black"))
h
i <- h +theme(axis.text.y.left = element_text(size = 12,colour = "black",
                                              vjust = 0.5,hjust = 0.5,
                                              angle = 90))

i

 最终得到下面图片:

相关性分析 R语言 可视化 pearson相关性分析r语言_相关性分析 R语言 可视化_02

 当然也可以去掉网格线和背景:

j <- i+theme_classic()
j

 

那么如何选择pearson和spearman呢?

简单说,服从正态分布的连续性数据用pearson相关系数最恰当,当然也可以用spearman。

但是如果数据不符合正态分布,就用spearman相关系数,不能用pearson相关系数。

两个定序测量数据之间也用spearman相关系数,不能用pearson相关系数。

像我们上次的数据,我们首先来检查一下他们的正态性:

相关性分析 R语言 可视化 pearson相关性分析r语言_数据_03

setwd("D:\\")
dir()
data <- read.csv("PCC.csv",header = T,sep = ",")
head(data)

shapiro.test(data$GeneA)
shapiro.test(data$GeneB)

相关性分析 R语言 可视化 pearson相关性分析r语言_相关分析_04

 可以看到,这两个数据都不符合正态分布,所以使用pearson相关分析是不太合适的,因此我们用spearman相关分析。

建议:既然spearman相关性分析任何条件下都适用,那么我们主要还是用spearman相关性分析比较好。

我们再看一看这两种方法计算的结果:

a <- cor.test(data$GeneA,data$GeneB,method = "spearman")
a

相关性分析 R语言 可视化 pearson相关性分析r语言_相关性分析 R语言 可视化_05

a <- cor.test(data$GeneA,data$GeneB,method = "pearson")
a

相关性分析 R语言 可视化 pearson相关性分析r语言_r语言_06

 可以看到,相差很大,所以不符合正态分布的还是不要用pearson相关分析。