1. 相関分析とは
相関分析とは、2 つの変数要素の近さを測定するために、相関する 2 つ以上の変数要素の分析を指します。相関分析を実行する前に、相関の要素間に特定の接続または確率が存在する必要があります。オミクスシーケンス(トランスクリプトームなど)では、複数の生物学的リピートを設定する必要があり、複数の生物学的リピートの相関分析により、生物学的リピートデータが次の分析に使用できるかどうかを判断できます。生物学的反復に矛盾がある場合、変数データを削除して、データの分析結果に影響を与える特定の反復データが利用できなくなるのを防ぐことができます。
一般的な相関分析方法には、ピアソン相関係数、スピアマン相関係数、ケンドール相関係数の 3 つがあります。
表1 相関関係
相関が非常に弱いか、まったくない |
弱い相関 |
中程度の関連性 |
強い相関 |
強い相関 |
0.0~0.2 |
0.2~0.4 |
0.4~0.6 |
0.6~0.8 |
0.8~1.0 |
1 ピアソン相関係数 (ピアソン)
線形相関係数、積差相関係数とも呼ばれるピアソン相関係数 (ピアソン) は、1890 年に英国の統計学者カール ピアソンによって提案されました。これは、2 つの変数間の線形相関の程度を反映するために使用される統計であり、正規分布を満たすデータに適しています。相関係数は r で表されます。ここで、n はそれぞれサンプル サイズ、観察された値、および 2 つの変数の平均です。r は、2 つの変数間の線形相関の程度を表します。r の絶対値が大きいほど相関が強い。r の値は -1 から +1 の間です。r>0 の場合、2 つの変数が正の相関関係にあることを示します。つまり、一方の変数の値が大きいほど、もう一方の変数の値も大きくなります。r< の場合0 は、2 つの変数が負の相関関係にあることを示します。つまり、一方の変数の値が大きいほど、もう一方の変数の値は小さくなります。rの絶対値が大きいほど相関が強く、因果関係はありませんのでご注意ください。r=0 の場合、2 つの変数間に線形相関がないことを示します。
計算式は次のとおりです。
ここで、n はサンプル サイズ、xi と yi は 2 つの変数のサンプル値です。
2 スピアマン相関係数 (スピアマン)
スピアマンの相関係数 (スピアマン) は、スピアマンの順位相関係数とも呼ばれ、データの実際の値に基づいて計算するのではなく、2 つの変数の順位を使用した線形相関分析です. ピアソンの相関係数と比較すると、非-パラメトリック統計法であり、より広い適用範囲を持っています。多くの場合、ギリシャ文字の ρ で表されます。
その計算式は次のとおりです。
ここで、di は観測値 (x, y) の各ペアの順位差を表し、n は観測値ペアの数です。
3 ケンドール相関係数 (Kendall)
ケンドール相関係数 (Kendall) は順位相関係数です。これは、ノンパラメトリック統計に属する 2 つの順序変数または 2 つのランク変数間の相関度の尺度です。
二、コード
1 データの準備
データ入力形式(csv形式):
2 R パッケージの読み込みとデータのインポート
#下载包#
install.packages("corrplot")
install.packages("ggcorrplot")
install.packages("psych")
install.packages("vcd")
#加载包#
library(corrplot)
library(ggplot2)
library(ggcorrplot)
library(vcd)
library(psych)
library(ggrepel)
#数据导入#
data<-read.table(file='C:/Rdata/jc/相关性热图数据.csv',row.names= 1,header=TRUE,sep=',')
dim(data)
data<-as.matrix(data) #利用as.matrix()将所需数据集转换为matrix格式,才可在corrplot中跑
data=data.frame(scale(data))#数据标准化
head(data)
#相关性计算
data<-cor(data,method="spearman") #pearson,spearman和kendall
round(data, 2)#保留两位小数
3 相関ヒートマップの描画
3.1 ggcorrplot パッケージはヒートマップを描画します
#相关性热图绘制#
ggcorrplot(data, method="circle") #圆圈大小变化
図 1 相関ベースのヒート マップ
#调整与美化#
ggcorrplot(data, method = "circle", #"square", "circle"相比corrplot少了很多种,只有方形和圆形,默认方形。
type ="upper" , #full完全(默认),lower下三角,upper上三角
ggtheme = ggplot2::theme_minimal,
title = "",
show.legend = TRUE, #是否显示图例。
legend.title = "Corr", #指定图例标题。
show.diag =T , #FALSE显示中间
colors = c("blue", "white", "red"), #需要长度为3的颜色向量,同时指定low,mid和high处的颜色。
outline.color = "gray", #指定方形或圆形的边线颜色。
hc.order = FALSE, #是否按hclust(层次聚类顺序)排列。
hc.method = "complete", #相当于corrplot中的hclust.method, 指定方法一样,详情见?hclust。
lab =T , #是否添加相关系数。FALSE
lab_col = "black", #指定相关系数的颜色,只有当lab=TRUE时有效。
lab_size = 4, #指定相关系数大小,只有当lab=TRUE时有效。
p.mat = NULL, #p.mat= p_mat,insig= "pch", pch.col= "red", pch.cex= 4,
sig.level = 0.05,
insig = c("pch", "blank"),
tl.cex = 12, #指定变量文本的大小,
tl.col = "black", #指定变量文本的颜色,
tl.srt = 45, #指定变量文本的旋转角度。
digits = 2 #指定相关系数的显示小数位数(默认2)。
)
図 2 調整および美化されたヒート マップ
3.2 corrplot パッケージは相関ヒート マップを描画します
3.2.1 Corrplot パッケージの基本ヒートマップと解説
#corrplot包绘图#
corrplot(data)
corrplot(data, method="circle", #square方形,ellipse, 椭圆形,number数值,shade阴影,color颜色,pie饼图
title = "pearson", #指定标题
type="full", #full完全(默认),lower下三角,upper上三角
#col=c("#FF6666", "white", "#0066CC"), #指定图形展示的颜色,默认以均匀的颜色展示。支持grDevices包中的调色板,也支持RColorBrewer包中调色板。
outline = T, #是否添加圆形、方形或椭圆形的外边框,默认为FALSE。
diag = TRUE, #是否展示对角线上的结果,默认为TRUE
mar = c(0,0,0,0), #设置图形的四边间距。数字分别对应(bottom, left, top, right)。
bg="white", #指定背景颜色
add = FALSE, #表示是否添加到已经存在的plot中。默认FALSE生成新plot。
is.corr = TRUE, #是否为相关系数绘图,默认为TRUE,FALSE则可将其它数字矩阵进行可视化。
addgrid.col = "darkgray", #设置网格线颜色,当指定method参数为color或shade时, 默认的网格线颜色为白色,其它method则默认为灰色,也可以自定义颜色。
addCoef.col = NULL, #设置相关系数值的颜色,只有当method不是number时才有效
addCoefasPercent = FALSE, #是否将相关系数转化为百分比形式,以节省空间,默认为FALSE。
order = "original", #指定相关系数排序的方法, 可以是original原始顺序,AOE特征向量角序,FPC第一主成分顺序,hclust层次聚类顺序,alphabet字母顺序。
hclust.method = "complete", # 指定hclust中细分的方法,只有当指定order参数为hclust时有效。有7种可选:complete,ward,single,average,mcquitty,median,centroid。
addrect = NULL, #是否添加矩形框,只有当指定order参数为hclust时有效, 默认不添加, 用整数指定即可添加。
rect.col = "black", #指定矩形框的颜色。
rect.lwd = 2, #指定矩形框的线宽。
tl.pos = NULL, #指定文本标签(变量名称)相对绘图区域的位置,为"lt"(左侧和顶部),"ld"(左侧和对角线),"td"(顶部和对角线),"d"(对角线),"n"(无);当type="full"时默认"lt"。当type="lower"时默认"ld"。当type="upper"时默认"td"。
tl.cex = 1, #设置文本标签的大小
tl.col = "black", #设置文本标签的颜色。
cl.pos = NULL #设置图例位置,为"r"(右边),"b"(底部),"n"(无)之一。当type="full"/"upper"时,默认"r"; 当type="lower"时,默认"b"。
#addshade = c("negative", "positive", "all"), # 表示给增加阴影,只有当method="shade"时有效。#为"negative"(对负相关系数增加阴影135度);"positive"(对正相关系数增加阴影45度);"all"(对所有相关系数增加阴影)。
#shade.lwd = 1, #指定阴影线宽。
#shade.col = "white", #指定阴影线的颜色。
#p.mat= res1$p,sig.level= 0.01,insig= "pch", pch.col= "blue", pch.cex= 3,#只有指定矩阵的P值,sig.level,pch等参数才有效。只有当insig = "pch"时,pch.col和pch.cex参数才有效。
)
図 3 プロット パッケージの図
3.2.2 corrplot パッケージはグラフィックスと値を混在させます
#显示数字与图形混合
corrplot(data, method="circle", #square方形,ellipse, 椭圆形,number数值,shade阴影,color颜色,pie饼图
title = "pearson", #指定标题
type="full", #full完全(默认),lower下三角,upper上三角
#col=c("#FF6666", "white", "#0066CC"), #指定图形展示的颜色,默认以均匀的颜色展示。支持grDevices包中的调色板,也支持RColorBrewer包中调色板。
outline = F, #是否添加圆形、方形或椭圆形的外边框,默认为FALSE。
diag = TRUE, #是否展示对角线上的结果,默认为TRUE
mar = c(0,0,0,0), #设置图形的四边间距。数字分别对应(bottom, left, top, right)。
bg="white", #指定背景颜色
add = FALSE, #表示是否添加到已经存在的plot中。默认FALSE生成新plot。
is.corr = TRUE, #是否为相关系数绘图,默认为TRUE,FALSE则可将其它数字矩阵进行可视化。
addgrid.col = "darkgray", #设置网格线颜色,当指定method参数为color或shade时, 默认的网格线颜色为白色,其它method则默认为灰色,也可以自定义颜色。
addCoef.col = NULL, #设置相关系数值的颜色,只有当method不是number时才有效
addCoefasPercent = FALSE, #是否将相关系数转化为百分比形式,以节省空间,默认为FALSE。
order = "original", #指定相关系数排序的方法, 可以是original原始顺序,AOE特征向量角序,FPC第一主成分顺序,hclust层次聚类顺序,alphabet字母顺序。
hclust.method = "complete", # 指定hclust中细分的方法,只有当指定order参数为hclust时有效。有7种可选:complete,ward,single,average,mcquitty,median,centroid。
addrect = NULL, #是否添加矩形框,只有当指定order参数为hclust时有效, 默认不添加, 用整数指定即可添加。
rect.col = "black", #指定矩形框的颜色。
rect.lwd = 2, #指定矩形框的线宽。
tl.pos = NULL, #指定文本标签(变量名称)相对绘图区域的位置,为"lt"(左侧和顶部),"ld"(左侧和对角线),"td"(顶部和对角线),"d"(对角线),"n"(无);当type="full"时默认"lt"。当type="lower"时默认"ld"。当type="upper"时默认"td"。
tl.cex = 1, #设置文本标签的大小
tl.col = "black", #设置文本标签的颜色。
cl.pos = NULL #设置图例位置,为"r"(右边),"b"(底部),"n"(无)之一。当type="full"/"upper"时,默认"r"; 当type="lower"时,默认"b"。
#addshade = c("negative", "positive", "all"), # 表示给增加阴影,只有当method="shade"时有效。#为"negative"(对负相关系数增加阴影135度);"positive"(对正相关系数增加阴影45度);"all"(对所有相关系数增加阴影)。
#shade.lwd = 1, #指定阴影线宽。
#shade.col = "white", #指定阴影线的颜色。
#p.mat= res1$p,sig.level= 0.01,insig= "pch", pch.col= "blue", pch.cex= 3,#只有指定矩阵的P值,sig.level,pch等参数才有效。只有当insig = "pch"时,pch.col和pch.cex参数才有效。
)
corrplot(data, title = "",
method = "number", #square方形,ellipse, 椭圆形,number数值,shade阴影,color颜色,pie饼图
outline = F, #是否添加圆形、方形或椭圆形的外边框,默认为FALSE。
add = TRUE, #表示是否添加到已经存在的plot中。默认FALSE生成新plot。
type = "lower", #full完全(默认),lower下三角,upper上三角
order="original",
col="black", #指定图形展示的颜色,默认以均匀的颜色展示。支持grDevices包中的调色板,也支持RColorBrewer包中调色板。
diag=FALSE, #是否展示对角线上的结果,默认为TRUE
tl.pos="n", #指定文本标签(变量名称)相对绘图区域的位置,为"lt"(左侧和顶部),"ld"(左侧和对角线),"td"(顶部和对角线),"d"(对角线),"n"(无)
cl.pos=NULL #设置图例位置,为"r"(右边),"b"(底部),"n"(无)之一。
)
図 4 gcorrplot パッケージの数値とグラフィックの混合描画
#椭圆加数值#
corrplot(data, method = "ellipse", order = "original",
addCoef.col = "black",#设置相关系数值的颜色,只有当method不是number时才有效
type="full", #full完全(默认),lower下三角,upper上三角
title = "椭圆与黑色系数值",
add = FALSE, #表示是否添加到已经存在的plot中。默认FALSE生成新plot。
diag = TRUE, #是否展示对角线上的结果,默认为TRUE
tl.cex = 1, #设置文本标签的大小
tl.col = "black", #设置文本标签的颜色。
cl.pos = NULL, #设置图例位置,为"r"(右边),"b"(底部),"n"(无)之一。当type="full"/"upper"时,默认"r"; 当type="lower"时,默认"b"。
mar = c(1,1,1,1)) #设置图形的四边间距。数字分别对应(bottom, left, top, right)。
図 5 楕円とすべての値
#百分比表示#
corrplot(data, method = "ellipse", order = "original",
addCoef.col = "black",#设置相关系数值的颜色,只有当method不是number时才有效
addCoefasPercent = TRUE, #是否将相关系数转化为百分比形式,以节省空间,默认为FALSE。
type="full", #full完全(默认),lower下三角,upper上三角
title = "椭圆与黑色百分比",
add = FALSE, #表示是否添加到已经存在的plot中。默认FALSE生成新plot。
diag = TRUE, #是否展示对角线上的结果,默认为TRUE
tl.cex = 1, #设置文本标签的大小
tl.col = "black", #设置文本标签的颜色。
cl.pos = NULL, #设置图例位置,为"r"(右边),"b"(底部),"n"(无)之一。当type="full"/"upper"时,默认"r"; 当type="lower"时,默认"b"。
mar = c(1,1,1,1)) #设置图形的四边间距。数字分别对应(bottom, left, top, right)。
この記事の出典: Xiaodoudou をプレイしているシニア パン