相关性衡量指标包括Pearson相关系数、Spearman相关系数、Kendall相关系数、偏相关系数、多分格(polychoric)相关系数和多系列(polyserial )相关系数等,定义以及各自的优缺点自己查。
cor函数计算的是列与列间的相关系数,可以计算三种相关系数,包括Pearson相关系数、Spearman相关系数、Kendall相关系数,默认是Pearson相关系数,也可以使用method参数来指定另外两种相关系数。
结果是一个对角矩阵,自己和自己的相关系数(对角线值)均为1。
从结果可以看出,文盲率和犯罪率有很强的正相关关系,而收入和犯罪率呈负相关。
面对大数据时,可以只计算一组变量与另一组变量之间的关系,而不要将所有变量间都计算一次,cor函数也可以很好的实现。
cor函数只能计算三种算法,像相关系数、多分格(polychoric)相关系数和多系列(polyserial )相关系数等可以通过R软件的扩展包来实现。例如ggm包可以用pcor函数来实现偏相关系数计算,这个函数有两个参数,第一个参数是一个数值向量,前两个数值表示要计算相关系数的下标,其余的数值为条件变量的下标。第二个参数是cov函数计算出来的协方差结果。
cov函数计算的是列与列的协方差,可以衡量两个变量的总体误差。在计算偏相关的时候可以用到协方差的结果。默认是Pearson相关系数,也可以使用method参数来指定另外两种相关系数。
1. R语言自带函数cor(data, method=" ")可以快速计算出相关系数 ,数据类型:data.frame
如data.frame为:zz, 绘图如下:
a. single protein:线性回归画法
1. ggplot(zz,aes(x=a, y=HDL))+
geom_point(alpha=1,colour="#FFA54F")+
geom_smooth(method = lm,colour="#8B658B")+
#scale_color_brewer(palette = "Set1")+
theme_bw()+
labs(x="Ferritin",y="HDL.C",title="Pearson’s correlation test of ferritin and HDL.C")+
annotate("text", x = 1000, y = 2.5, label = "r = -0.51",colour="black",size=4)
2. library(ggstatsplot)
ggscatterstats(data = alldata,
y = TRANSFUSION.UNIT,
x = NPTXR,
centrality.para = "mean", #"mean" or "median"
margins = "both",
xfill = "#D8BFD8",
yfill = "#EEDD82",
#line.size= ,
line.color="#8B6969",
point.color="#2F4F4F",
marginal.size=4,
marginal.type = "density", # "histogram", "boxplot", "density", "violin", "densigram")
title = "Relationship between TRANSFUSION.UNIT and NPTXR")
b. ggcorrplot, 全部蛋白 global correlation map 画法
ggcorrplot(cor(alldata))
2. summary(lm(y~x),method=" ") %>%.[["coefficients"]] 正规线性回归
(其实就是:a<-lm(y~x1+x2+...,data)
plot(summary(lm(y~x),method=" ")) #绘图
3. ggcor部分数据绘图: 数据类型为data.frame,纵坐标为各指标or各蛋白,行为观测值。
data <- fortify_cor(alldata[,10:11],alldata,cluster.type = "col")
ggcor<-ggcor(data,label_size=0.5) +
geom_colour()+
theme(axis.text.x = element_text(colour = "black",size = 4.7),
axis.text.y=element_text(size=5.5),
axis.ticks=element_blank())+
geom_num(aes(num=r),colour="black",size=1.5)
4. corrr包画法
datasets::mtcars %>%
correlate() %>%
focus(-cyl, -vs, mirror = TRUE) %>%
rearrange() %>%
network_plot(min_cor = .2)